From b43846617d51cc21205769685d0bf61aef9b6bad Mon Sep 17 00:00:00 2001 From: Juan Ignacio Ubeira Date: Fri, 23 Jun 2023 10:02:33 -0300 Subject: [PATCH 1/2] Child chain gauge checkpointer task and fork test base. --- README.md | 1 + .../index.ts | 22 ++++++++ .../input.ts | 27 ++++++++++ .../readme.md | 9 ++++ .../test/test.fork.ts | 54 +++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/index.ts create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/input.ts create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/readme.md create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/test/test.fork.ts diff --git a/README.md b/README.md index b371e5439..ef5334f3d 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ Returns an object with all contracts from a deployment and their addresses. | Timelock Authorizer, governance contract | [`20230522-timelock-authorizer`](./tasks/20230522-timelock-authorizer) | | Pool Data Queries for bulk operations | [`20230613-balancer-pool-data-queries`](./tasks/20230613-balancer-pool-data-queries) | | Composable Stable Pools V5 | [`20230711-composable-stable-pool-v5`](./tasks/20230711-composable-stable-pool-v5) | +| L2 Child Chain Gauge Checkpointer (Relayer) | [`20230712-child-chain-gauge-checkpointer`](./tasks/20230712-child-chain-gauge-checkpointer) | ## Scripts diff --git a/tasks/20230712-child-chain-gauge-checkpointer/index.ts b/tasks/20230712-child-chain-gauge-checkpointer/index.ts new file mode 100644 index 000000000..1cb9139e9 --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/index.ts @@ -0,0 +1,22 @@ +import { Task, TaskRunOptions } from '@src'; +import { BatchRelayerDeployment } from './input'; + +export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise => { + const input = task.input() as BatchRelayerDeployment; + + const relayerLibraryArgs = [ + input.Vault, + input.wstETH, + input.BalancerMinter, + input.CanCallUserCheckpoint, + input.Version, + ]; + const relayerLibrary = await task.deployAndVerify('BatchRelayerLibrary', relayerLibraryArgs, from, force); + + // The relayer library automatically also deploys the relayer itself: we must verify it + const relayer: string = await relayerLibrary.getEntrypoint(); + + const relayerArgs = [input.Vault, relayerLibrary.address]; // See BalancerRelayer's constructor + await task.verify('BalancerRelayer', relayer, relayerArgs); + await task.save({ BalancerRelayer: relayer }); +}; diff --git a/tasks/20230712-child-chain-gauge-checkpointer/input.ts b/tasks/20230712-child-chain-gauge-checkpointer/input.ts new file mode 100644 index 000000000..951ca690e --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/input.ts @@ -0,0 +1,27 @@ +import { ZERO_ADDRESS } from '@helpers/constants'; +import { Task, TaskMode } from '@src'; + +export type BatchRelayerDeployment = { + Vault: string; + wstETH: string; + BalancerMinter: string; + CanCallUserCheckpoint: boolean; + Version: string; +}; + +const Vault = new Task('20210418-vault', TaskMode.READ_ONLY); +const Version = JSON.stringify({ + name: 'ChildChainGauge checkpointer (BalancerRelayer)', + version: 5.1, + deployment: '20230712-child-chain-gauge-checkpointer', +}); + +// We will not use the minter nor wstETH for this deployment. +// In any case they are not deployed in L2s. +export default { + Vault, + wstETH: ZERO_ADDRESS, + BalancerMinter: ZERO_ADDRESS, + CanCallUserCheckpoint: true, + Version, +}; diff --git a/tasks/20230712-child-chain-gauge-checkpointer/readme.md b/tasks/20230712-child-chain-gauge-checkpointer/readme.md new file mode 100644 index 000000000..5daf3b7c1 --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/readme.md @@ -0,0 +1,9 @@ +# 2023-07-12 - Child Chain Gauge Checkpointer (Batch Relayer V5.1) + +L2 deployment of the `BalancerRelayer` and `BatchRelayerLibrary` based on [Relayer V5](../20230314-batch-relayer-v5/), with added gauge checkpoint functionality. + +This deployment will not be used as a trusted relayer by the Vault; it will only be used as a `ChildChainGauge` checkpointer, allowing to perform multiple (permissionless) gauge checkpoints in the same transaction. Therefore, it does **not** replace Relayer V5. + +## Useful Files + +- [`BatchRelayerLibrary` artifact](./artifact/BatchRelayerLibrary.json) diff --git a/tasks/20230712-child-chain-gauge-checkpointer/test/test.fork.ts b/tasks/20230712-child-chain-gauge-checkpointer/test/test.fork.ts new file mode 100644 index 000000000..871cf6001 --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/test/test.fork.ts @@ -0,0 +1,54 @@ +import hre, { ethers } from 'hardhat'; +import { expect } from 'chai'; +import { Contract } from 'ethers'; +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; +import { describeForkTest, impersonate, getForkedNetwork, Task, TaskMode } from '@src'; +import * as expectEvent from '@helpers/expectEvent'; + +describeForkTest('ChildChainGaugeCheckpointer (BalancerRelayer)', 'polygon', 44244700, function () { + let task: Task; + + let relayer: Contract, library: Contract; + let user: SignerWithAddress; + + const gauges = [ + '0x4f23CCC4349E9500d27C7096bD61d203F1D1C1Aa', + '0x1F0ee42D005b89814a01f050416b28c3142ac900', + '0x51416C00388bB4644E28546c77AEe768036F17A8', + ]; + + const userAddress = '0x71003c3fe8497d434ff2aea3adda42f2728d8176'; + const version = JSON.stringify({ + name: 'ChildChainGauge checkpointer (BalancerRelayer)', + version: 5.1, + deployment: '20230712-child-chain-gauge-checkpointer', + }); + + before('run task', async () => { + task = new Task('20230712-child-chain-gauge-checkpointer', TaskMode.TEST, getForkedNetwork(hre)); + await task.run({ force: true }); + + library = await task.deployedInstance('BatchRelayerLibrary'); + relayer = await task.instanceAt('BalancerRelayer', await library.getEntrypoint()); + }); + + before('load signers', async () => { + // We impersonate an account that holds staked BPT for the ETH_STETH Pool. + user = await impersonate(userAddress); + }); + + it('returns correct version', async () => { + expect(await relayer.version()).to.be.eq(version); + }); + + it('checkpoints gauges for user', async () => { + const checkpointInterface = new ethers.utils.Interface([ + 'event UpdateLiquidityLimit(address indexed _user, uint256 _original_balance, uint256 _original_supply, uint256 _working_balance, uint256 _working_supply)', + ]); + + const receipt = await (await library.gaugeCheckpoint(user.address, gauges)).wait(); + expectEvent.inIndirectReceipt(receipt, checkpointInterface, 'UpdateLiquidityLimit', {}, gauges[0], 1); + expectEvent.inIndirectReceipt(receipt, checkpointInterface, 'UpdateLiquidityLimit', {}, gauges[1], 1); + expectEvent.inIndirectReceipt(receipt, checkpointInterface, 'UpdateLiquidityLimit', {}, gauges[2], 1); + }); +}); From 500d3f9c80fb097f7374b1e169713477de781e0a Mon Sep 17 00:00:00 2001 From: Juan Ignacio Ubeira Date: Fri, 23 Jun 2023 10:02:45 -0300 Subject: [PATCH 2/2] Add artifacts. --- .../artifact/BatchRelayerLibrary.json | 1552 +++++++++++++++++ .../build-info/BatchRelayerLibrary.json | 1 + 2 files changed, 1553 insertions(+) create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/artifact/BatchRelayerLibrary.json create mode 100644 tasks/20230712-child-chain-gauge-checkpointer/build-info/BatchRelayerLibrary.json diff --git a/tasks/20230712-child-chain-gauge-checkpointer/artifact/BatchRelayerLibrary.json b/tasks/20230712-child-chain-gauge-checkpointer/artifact/BatchRelayerLibrary.json new file mode 100644 index 000000000..2065ad28b --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/artifact/BatchRelayerLibrary.json @@ -0,0 +1,1552 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BatchRelayerLibrary", + "sourceName": "contracts/BatchRelayerLibrary.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "contract IBalancerMinter", + "name": "minter", + "type": "address" + }, + { + "internalType": "bool", + "name": "canCallUserCheckpoint", + "type": "bool" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveVault", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "assetInIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetOutIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.BatchSwapStep[]", + "name": "swaps", + "type": "tuple[]" + }, + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "int256[]", + "name": "limits", + "type": "int256[]" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "internalType": "struct VaultActions.OutputReference[]", + "name": "outputReferences", + "type": "tuple[]" + } + ], + "name": "batchSwap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "canCallUserCheckpoint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum VaultActions.PoolKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "internalType": "struct VaultActions.OutputReference[]", + "name": "outputReferences", + "type": "tuple[]" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "contract IStakingLiquidityGauge[]", + "name": "gauges", + "type": "address[]" + } + ], + "name": "gaugeCheckpoint", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge[]", + "name": "gauges", + "type": "address[]" + } + ], + "name": "gaugeClaimRewards", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge", + "name": "gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "gaugeDeposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "gauges", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "gaugeMint", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "approval", + "type": "bool" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "gaugeSetMinterApproval", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge", + "name": "gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "gaugeWithdraw", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getEntrypoint", + "outputs": [ + { + "internalType": "contract IBalancerRelayer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum VaultActions.PoolKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "enum IVault.UserBalanceOpKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + } + ], + "internalType": "struct IVault.UserBalanceOp[]", + "name": "ops", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "internalType": "struct VaultActions.OutputReference[]", + "name": "outputReferences", + "type": "tuple[]" + } + ], + "name": "manageUserBalance", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ref", + "type": "uint256" + } + ], + "name": "peekChainedReferenceValue", + "outputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "authorisation", + "type": "bytes" + } + ], + "name": "setRelayerApproval", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "stakeETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "stakeETHAndWrap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.SingleSwap", + "name": "singleSwap", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStaticATokenLM", + "name": "staticToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "toUnderlying", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapAaveStaticToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ICToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapCompoundV2", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC4626", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapERC4626", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IEulerToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapEuler", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGearboxDieselToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dieselAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapGearbox", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IReaperTokenVault", + "name": "vaultToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapReaperVaultToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IShareToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapShareToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ITetuSmartVault", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapTetu", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IUnbuttonToken", + "name": "wrapperToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapUnbuttonToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapWstETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IYearnTokenVault", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapYearn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20Permit", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "vaultPermit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20PermitDAI", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "vaultPermitDAI", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStaticATokenLM", + "name": "staticToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "fromUnderlying", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapAaveDynamicToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ICToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapCompoundV2", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC4626", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapERC4626", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IEulerToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "eulerProtocol", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapEuler", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IGearboxDieselToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mainAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapGearbox", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IReaperTokenVault", + "name": "vaultToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapReaperVaultToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IShareToken", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapShareToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapStETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ITetuSmartVault", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapTetu", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IUnbuttonToken", + "name": "wrapperToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "uAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapUnbuttonToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IYearnTokenVault", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapYearn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6101806040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b5060405162006d0838038062006d0883398101604081905262000059916200021a565b8383838784816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009857600080fd5b505afa158015620000ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d3919062000318565b6001600160601b0319606091821b81166080529083901b1660a05260405182903090839062000102906200020c565b62000110939291906200033e565b604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05294901b9093166101005250151560f81b61012052506001600160a01b0381166200016d576000620001e4565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001a957600080fd5b505af1158015620001be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e4919062000318565b6001600160601b0319606091821b81166101405291901b166101605250620003d99350505050565b6109f6806200631283390190565b600080600080600060a0868803121562000232578081fd5b85516200023f81620003c0565b60208701519095506200025281620003c0565b60408701519094506200026581620003c0565b606087015190935080151581146200027b578182fd5b60808701519092506001600160401b038082111562000298578283fd5b818801915088601f830112620002ac578283fd5b815181811115620002bb578384fd5b604051601f8201601f191681016020018381118282101715620002dc578586fd5b6040528181528382016020018b1015620002f4578485fd5b620003078260208301602087016200038d565b809450505050509295509295909350565b6000602082840312156200032a578081fd5b81516200033781620003c0565b9392505050565b600060018060a01b038086168352808516602084015250606060408301528251806060840152620003778160808501602087016200038d565b601f01601f191691909101608001949350505050565b60005b83811015620003aa57818101518382015260200162000390565b83811115620003ba576000848401525b50505050565b6001600160a01b0381168114620003d657600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160f81c6101405160601c6101605160601c615e8a62000488600039806106f4528061079d52806107c85280610c455280610c715280610d1452806133055280613331525080610c245280610f2f5280610fd352806133d45250806107f1528061172e5250806112ed5280612577525080613d93525080612215525080612315528061266e525050615e8a6000f3fe6080604052600436106102dc5760003560e01c80637ab6e03c11610184578063959fc17a116100d6578063d80952d51161008a578063efe6910811610064578063efe6910814610604578063f3cab68514610617578063f4dd54b014610637576102dc565b8063d80952d5146105cb578063db4c0e91146105de578063e8210e3c146105f1576102dc565b8063b064b376116100bb578063b064b37614610592578063b6d24737146105a5578063d293f290146105b8576102dc565b8063959fc17a1461056c578063abf6d3991461057f576102dc565b80638b35ac8d116101385780638d928af8116101125780638d928af8146105315780638fe4624f14610546578063941e849b14610559576102dc565b80638b35ac8d146104f85780638c57198b1461050b5780638d64cfbc1461051e576102dc565b80637fd0e5d5116101695780637fd0e5d5146104b057806380db15bd146104d2578063837f9bcb146104e5576102dc565b80637ab6e03c1461048a5780637bc008f51461049d576102dc565b80633f85d3901161023d5780634f06a70b116101f1578063611b90dd116101cb578063611b90dd1461045157806365ca4804146104645780636d307ea814610477576102dc565b80634f06a70b146104185780635001fe751461042b57806352b887461461043e576102dc565b806344b6ac741161022257806344b6ac74146103df57806348699d58146103f25780634e9d9bab14610405576102dc565b80633f85d390146103b9578063433b0865146103cc576102dc565b80631c982441116102945780632cbec84e116102795780632cbec84e146103805780632e6272ea14610393578063311c5c57146103a6576102dc565b80631c9824411461035a5780632c25efe11461036d576102dc565b806310f3aaff116102c557806310f3aaff14610309578063138fdc2c146103345780631836944614610347576102dc565b80630e248fea146102e15780631089e5e3146102f6575b600080fd5b6102f46102ef366004614a74565b61064a565b005b6102f46103043660046149f6565b6106e5565b34801561031557600080fd5b5061031e6107ef565b60405161032b919061596b565b60405180910390f35b6102f4610342366004614e59565b610813565b6102f46103553660046151ec565b610a16565b6102f46103683660046148d1565b610c1f565b6102f461037b366004614e59565b610d42565b6102f461038e3660046149f6565b610f20565b6102f46103a13660046152e8565b610ffa565b6102f46103b4366004614e59565b61111a565b6102f46103c7366004614a2a565b6112ba565b6102f46103da36600461508a565b611384565b6102f46103ed366004614e59565b6115ad565b6102f4610400366004614916565b61172c565b6102f4610413366004614e59565b611772565b6102f4610426366004614e59565b6119cd565b6102f4610439366004614e59565b611ade565b6102f461044c366004614fcd565b611c69565b6102f461045f366004614e59565b611e0d565b6102f461047236600461503a565b611eb0565b6102f4610485366004614e59565b611fce565b6102f461049836600461508a565b612009565b6102f46104ab36600461503a565b61210f565b3480156104bc57600080fd5b506104c5612213565b60405161032b919061564e565b6102f46104e0366004614969565b612237565b6102f46104f3366004614b44565b61233b565b6102f4610506366004614e59565b61250b565b6102f4610519366004614cbd565b612547565b6102f461052c366004614f34565b6125f2565b34801561053d57600080fd5b506104c561266c565b6102f4610554366004614dc9565b612690565b6102f4610567366004614e59565b6128ba565b6102f461057a366004614eb3565b612a05565b6102f461058d366004614e59565b612a82565b6102f46105a0366004614e59565b612b35565b6102f46105b3366004614fa2565b612c78565b6102f46105c6366004614e59565b612cb2565b6102f46105d9366004614d20565b612d72565b6102f46105ec3660046148d1565b613300565b6102f46105ff366004614e59565b6133fb565b6102f4610612366004614e59565b613436565b61062a6106253660046153d6565b613475565b60405161032b9190615cfa565b6102f4610645366004614e59565b613487565b8060005b818110156106df5783838281811061066257fe5b90506020020160208101906106779190614899565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106a2919061564e565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b5050505080600101905061064e565b50505050565b6106ee826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b815260040161073e9190615cfa565b60206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e91906153ee565b90506107c36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016846135d9565b6106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088691906148b5565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c357600080fd5b505afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb91906148b5565b905061090981838689613681565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109569087908990600090600401615d39565b600060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b50505050610a0d83836001600160a01b0316634d778ad1876040518263ffffffff1660e01b81526004016109b89190615cfa565b60206040518083038186803b1580156109d057600080fd5b505afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906153ee565b6136ac565b50505050505050565b33610a246020890189614899565b6001600160a01b03161480610a4d575030610a426020890189614899565b6001600160a01b0316145b610a725760405162461bcd60e51b8152600401610a6990615b5c565b60405180910390fd5b60005b8a51811015610ad75760008b8281518110610a8c57fe5b6020026020010151606001519050610aa3816136c4565b15610ace57610ab18161370b565b8c8381518110610abd57fe5b602002602001015160600181815250505b50600101610a75565b506060610ae261266c565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b1c989796959493929190615a1c565b6000604051808303818588803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b729190810190614ab4565b905060005b82811015610c1057610b9d848483818110610b8e57fe5b905060400201602001356136c4565b610bb95760405162461bcd60e51b8152600401610a6990615c38565b610c08848483818110610bc857fe5b90506040020160200135610c0384878786818110610be257fe5b9050604002016000013581518110610bf657fe5b6020026020010151613736565b613742565b600101610b77565b50505050505050505050505050565b610c6b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613681565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610cbb9190615cfa565b602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db591906148b5565b9050610dc381878588613681565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e0b908690600401615cfa565b602060405180830381600087803b158015610e2557600080fd5b505af1158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d91906153ee565b15610e7a5760405162461bcd60e51b8152600401610a6990615bca565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610ec290309060040161564e565b60206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1291906153ee565b9050610a0d87868386613653565b610f29826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610f7a919061564e565b6020604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fcc91906153ee565b90506106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b336110086020870187614899565b6001600160a01b031614806110315750306110266020870187614899565b6001600160a01b0316145b61104d5760405162461bcd60e51b8152600401610a6990615b5c565b61105a86608001516136c4565b156110725761106c866080015161370b565b60808701525b600061107c61266c565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016110ae9493929190615c6f565b6020604051808303818588803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061110091906153ee565b905061110b826136c4565b15610a0d57610a0d8282613742565b611125858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561116257600080fd5b505afa158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a91906148b5565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906111e2908690600401615cfa565b600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061125c90309060040161564e565b60206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906153ee565b9050610a0d82868386613653565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061132690879087903390600401615875565b602060405180830381600087803b15801561134057600080fd5b505af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906153ee565b90506106df82826136ac565b61138d836136c4565b1561139e5761139b8361370b565b92505b60008261141d57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906148b5565b611490565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149091906148b5565b90506001600160a01b03861630146114d5576001600160a01b03861633146114ca5760405162461bcd60e51b8152600401610a6990615b5c565b6114d58682866137a1565b6114e96001600160a01b038216888661383d565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611537908990899086908a90600401615849565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158991906153ee565b9050611594836136c4565b156115a3576115a38382613742565b5050505050505050565b6115b8858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f557600080fd5b505afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d91906148b5565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a7590611675908690600401615cfa565b602060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c791906153ee565b156116e45760405162461bcd60e51b8152600401610a6990615b25565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061125c90309060040161564e565b7f0000000000000000000000000000000000000000000000000000000000000000156117625761175d838383613989565b61176d565b61176d838383613a3c565b505050565b61177d858386613755565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f291906148b5565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186791906148b5565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d359906118d49084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600090600401615826565b6040805180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190615406565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061196f90309060040161564e565b60206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf91906153ee565b90506115a382878387613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4091906148b5565b9050611a4e81878588613681565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611a80929190615d03565b602060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad291906153ee565b9050610a0d83826136ac565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1957600080fd5b505afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5191906148b5565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8e57600080fd5b505afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906148b5565b9050611bd482828689613681565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c0b94939291906156fa565b6040805180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615406565b9150506115a384826136ac565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca457600080fd5b505afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc91906148b5565b9050611cea81878588613681565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d35906000908790600401615640565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611daf90309060040161564e565b60206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff91906153ee565b90506115a388868386613653565b611e18858386613755565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611e4a92919061580d565b602060405180830381600087803b158015611e6457600080fd5b505af1158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906153ee565b9050611ea882826136ac565b505050505050565b611ebb848285613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f03908490600401615cfa565b600060405180830381600087803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b505050506001600160a01b03821630146106df576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906148b5565b9050610d3b6001600160a01b0382168484613b56565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b612012836136c4565b15612023576120208361370b565b92505b6001600160a01b0385163014612066576001600160a01b038516331461205b5760405162461bcd60e51b8152600401610a6990615b5c565b6120668587856137a1565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906120b290889088908890600401615826565b6040805180830381600087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121039190615406565b91505061110b826136c4565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561214a57600080fd5b505afa15801561215e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218291906148b5565b905061219081868487613681565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906121da9085908790600401615d03565b600060405180830381600087803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061224c575082155b6122685760405162461bcd60e51b8152600401610a6990615b93565b606063fa6e671d60e01b33868660405160240161228793929190615662565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516122f692869186910161561b565b60408051601f198184030181529190529050611ea86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613b75565b60005b845181101561241b57336001600160a01b031685828151811061235d57fe5b6020026020010151606001516001600160a01b031614806123a65750306001600160a01b031685828151811061238f57fe5b6020026020010151606001516001600160a01b0316145b6123c25760405162461bcd60e51b8152600401610a6990615b5c565b60008582815181106123d057fe5b60200260200101516040015190506123e7816136c4565b15612412576123f58161370b565b86838151811061240157fe5b602002602001015160400181815250505b5060010161233e565b5061242461266c565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b815260040161245091906158d5565b6000604051808303818588803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050505060005b81811015610d3b5761249c838383818110610b8e57fe5b6124b85760405162461bcd60e51b8152600401610a6990615c38565b6125038383838181106124c757fe5b90506040020160200135868585858181106124de57fe5b90506040020160000135815181106124f257fe5b602002602001015160400151613742565b600101612485565b612516858386613755565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611e4a929190615d03565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906125b89030908a908a908a908a908a908a906004016157ad565b600060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf8761260a61266c565b88888888886040518863ffffffff1660e01b8152600401612631979695949392919061576c565b600060405180830381600087803b15801561264b57600080fd5b505af115801561265f573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806126af57506001600160a01b03851630145b6126cb5760405162461bcd60e51b8152600401610a6990615b5c565b60006126d688613bef565b905060006126e3836136c4565b6126ee576000612783565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061273390899060040161564e565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278391906153ee565b9050612793888660400151613bf5565b60408601526127a061266c565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b81526004016127d29493929190615976565b6000604051808303818588803b1580156127eb57600080fd5b505af11580156127ff573d6000803e3d6000fd5b505050505061280d836136c4565b15612208576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a082319061285a908a9060040161564e565b60206040518083038186803b15801561287257600080fd5b505afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa91906153ee565b90506125e684610c038385613c7c565b6128c5858386613755565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e7090612930906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615640565b600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b505afa1580156129b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d591906148b5565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161125c919061564e565b876001600160a01b0316638fcbaf0c88612a1d61266c565b8989898989896040518963ffffffff1660e01b8152600401612a46989796959493929190615723565b600060405180830381600087803b158015612a6057600080fd5b505af1158015612a74573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612abd57600080fd5b505afa158015612ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af591906148b5565b9050612b0381878588613681565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611a8092919061580d565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b505afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba891906148b5565b9050612bb681878588613681565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612bfe908690600401615cfa565b600060405180830381600087803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610ec290309060040161564e565b612c81816136c4565b15612c9257612c8f8161370b565b90505b612cae612c9d61266c565b6001600160a01b038416908361383d565b5050565b612cbd858386613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612d05908590600401615cfa565b600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b6001600160a01b038516331480612d9157506001600160a01b03851630145b612dad5760405162461bcd60e51b8152600401610a6990615b5c565b60608167ffffffffffffffff81118015612dc657600080fd5b50604051908082528060200260200182016040528015612df0578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612e0c57600080fd5b50604051908082528060200260200182016040528015612e36578160200160208202803683370190505b50905060005b83811015612fa657612e53858583818110610b8e57fe5b612e6f5760405162461bcd60e51b8152600401610a6990615c38565b8551600090868684818110612e8057fe5b9050604002016000013581518110612e9457fe5b60200260200101519050866060015115612ee257612eb181613c92565b848381518110612ebd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f9d565b612eeb81613c95565b612f7857612ef881613c92565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612f23919061564e565b60206040518083038186803b158015612f3b57600080fd5b505afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7391906153ee565b612f84565b876001600160a01b0316315b838381518110612f9057fe5b6020026020010181815250505b50600101612e3c565b5084606001511561303d57612fb961266c565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401612fe6929190615686565b60006040518083038186803b158015612ffe57600080fd5b505afa158015613012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261303a9190810190614c6e565b90505b61304b888660400151613ca2565b604086015261305861266c565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016130899493929190615976565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156130d657600080fd5b50604051908082528060200260200182016040528015613100578160200160208202803683370190505b50905085606001511561319d5761311561266c565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b8152600401613142929190615686565b60006040518083038186803b15801561315a57600080fd5b505afa15801561316e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131969190810190614c6e565b905061329b565b60005b848110156132995786516000908787848181106131b957fe5b90506040020160000135815181106131cd57fe5b602002602001015190506131e081613c95565b61326d576131ed81613c92565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401613218919061564e565b60206040518083038186803b15801561323057600080fd5b505afa158015613244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326891906153ee565b613279565b886001600160a01b0316315b83838151811061328557fe5b6020908102919091010152506001016131a0565b505b60005b8481101561265f576132f88686838181106132b557fe5b90506040020160200135610c038584815181106132ce57fe5b60200260200101518585815181106132e257fe5b6020026020010151613c7c90919063ffffffff16565b60010161329e565b61332b7f00000000000000000000000000000000000000000000000000000000000000008386613755565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161337b9190615cfa565b602060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b613441858386613755565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611e4a93929190615d1a565b600061348082613d18565b9392505050565b613492858386613755565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cf57600080fd5b505afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350791906148b5565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135519086908890600401615d03565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b50505050611ea882826001600160a01b0316635427c938866040518263ffffffff1660e01b81526004016109b89190615cfa565b60006135be826136c4565b6135c857816135d1565b6135d18261370b565b90505b919050565b6135e8814710156101a3613d2f565b6000826001600160a01b03168260405161360190613c92565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b5050905061176d816101a4613d2f565b6001600160a01b0383163014613677576136776001600160a01b0385168484613b56565b6106df81836136ac565b600061368e858484613755565b90506136a46001600160a01b038616858361383d565b949350505050565b6136b5826136c4565b15612cae57612cae8282613742565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061371984613d18565b9150915061372684613d3d565b1561348057600082559392505050565b60ff81901d9081180390565b600061374d83613d84565b919091555050565b6000613760836135b3565b90506001600160a01b0382163014613480576001600160a01b038216331461379a5760405162461bcd60e51b8152600401610a6990615b5c565b6134808285835b806137ab5761176d565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106137db57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061382657fe5b602002602001018181525050610d3b858383613de2565b80158015906138e157506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061388e90309086906004016156e0565b60206040518083038186803b1580156138a657600080fd5b505afa1580156138ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138de91906153ee565b15155b1561396a5761396a8363095ea7b360e01b8460006040516024016139069291906157f1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f30565b61176d8363095ea7b360e01b848460405160240161390692919061580d565b8060005b81811015610d3b578383828181106139a157fe5b90506020020160208101906139b69190614899565b6001600160a01b0316634b820093866040518263ffffffff1660e01b81526004016139e1919061564e565b602060405180830381600087803b1580156139fb57600080fd5b505af1158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a339190614ca1565b5060010161398d565b8060608167ffffffffffffffff81118015613a5657600080fd5b50604051908082528060200260200182016040528015613a9057816020015b613a7d614481565b815260200190600190039081613a755790505b50905060005b82811015613b22576040805160a081019091528060038152602001868684818110613abd57fe5b9050602002016020810190613ad29190614899565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613b0f57fe5b6020908102919091010152600101613a96565b50613b2b61266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016121da91906158d5565b61176d8363a9059cbb60e01b848460405160240161390692919061580d565b606060006060846001600160a01b031684604051613b9391906155ff565b6000604051808303816000865af19150503d8060008114613bd0576040519150601f19603f3d011682016040523d82523d6000602084013e613bd5565b606091505b5091509150613be48282613fd0565b925050505b92915050565b60601c90565b60606000836003811115613c0557fe5b1415613c1b57613c1482613ffa565b9050613be9565b6001836003811115613c2957fe5b1480613c4057506002836003811115613c3e57fe5b145b80613c5657506003836003811115613c5457fe5b145b15613c6457613c1482613ffa565b60405162461bcd60e51b8152600401610a6990615c01565b6000613c8c838311156001613d2f565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613cb257fe5b1415613cc157613c1482614037565b6001836003811115613ccf57fe5b1415613cde57613c1482614080565b6002836003811115613cec57fe5b1415613cfb57613c14826140c6565b6003836003811115613d0957fe5b1415613c6457613c14826140f2565b600080613d2483613d84565b915081549050915091565b81612cae57612cae81614125565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613d9183614152565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613dc3929190615640565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613dfc57600080fd5b50604051908082528060200260200182016040528015613e3657816020015b613e23614481565b815260200190600190039081613e1b5790505b50905060005b8351811015613ece576040805160a081019091528060038152602001858381518110613e6457fe5b60200260200101516001600160a01b03168152602001848381518110613e8657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613ebb57fe5b6020908102919091010152600101613e3c565b50613ed761266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613f0291906158d5565b600060405180830381600087803b158015613f1c57600080fd5b505af11580156115a3573d6000803e3d6000fd5b60006060836001600160a01b031683604051613f4c91906155ff565b6000604051808303816000865af19150503d8060008114613f89576040519150601f19603f3d011682016040523d82523d6000602084013e613f8e565b606091505b50915091506000821415613fa6573d6000803e3d6000fd5b6106df815160001480613fc8575081806020019051810190613fc89190614ca1565b6101a2613d2f565b60608215613fdf575080613be9565b815115613fef5781518083602001fd5b613be96101ae614125565b6060600061400783614175565b9050600181600381111561401757fe5b141561402e576140268361418b565b9150506135d4565b829150506135d4565b60606000614044836141dd565b9050600081600281111561405457fe5b141561406357614026836141f3565b600181600281111561407157fe5b141561402e5761402683614256565b6060600061408d836141dd565b600281111561409857fe5b905060ff81166140ac5761402683826142a9565b60015b60ff168160ff16141561402e57614026838261430b565b606060006140d3836141dd565b60028111156140de57fe5b905060ff811661402e5761402683826142a9565b606060006140ff836141dd565b600281111561410a57fe5b905060ff811661411e5761402683826142a9565b60026140af565b61414f817f42414c0000000000000000000000000000000000000000000000000000000000614366565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6000818060200190518101906135d19190615178565b6060806000614199846143c7565b915091506141a6826143ea565b6141b057836136a4565b600182826040516020016141c6939291906159ea565b604051602081830303815290604052949350505050565b6000818060200190518101906135d191906150f9565b606060008061420184614454565b9150915061420e826136c4565b1561424c5761421c8261370b565b915060008282604051602001614234939291906159c9565b604051602081830303815290604052925050506135d4565b83925050506135d4565b606060006142638361446b565b905061426e816136c4565b1561402e5761427c8161370b565b90506001816040516020016142929291906159b2565b6040516020818303038152906040529150506135d4565b60606000806142b785614454565b915091506142c4826136c4565b15614301576142d28261370b565b91508382826040516020016142e993929190615d6b565b60405160208183030381529060405292505050613be9565b8492505050613be9565b606060006143188461446b565b9050614323816136c4565b1561435d576143318161370b565b90508281604051602001614346929190615d58565b604051602081830303815290604052915050613be9565b83915050613be9565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906143df9190615194565b909590945092505050565b600080805b835181101561444d57600084828151811061440657fe5b60200260200101519050614419816136c4565b15614444576144278161370b565b85838151811061443357fe5b602002602001018181525050600192505b506001016143ef565b5092915050565b600080828060200190518101906143df9190615142565b6000818060200190518101906134809190615115565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613be981615e17565b60008083601f8401126144cd578182fd5b50813567ffffffffffffffff8111156144e4578182fd5b60208301915083602080830285010111156144fe57600080fd5b9250929050565b600082601f830112614515578081fd5b813561452861452382615dad565b615d86565b81815291506020808301908481018184028601820187101561454957600080fd5b60005b8481101561457157813561455f81615e17565b8452928201929082019060010161454c565b505050505092915050565b600082601f83011261458c578081fd5b813561459a61452382615dad565b818152915060208083019084810160005b84811015614571578135870160a080601f19838c030112156145cc57600080fd5b6145d581615d86565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561461757600080fd5b6146258c8885870101614747565b908201528652505092820192908201906001016145ab565b60008083601f84011261464e578182fd5b50813567ffffffffffffffff811115614665578182fd5b6020830191508360206040830285010111156144fe57600080fd5b600082601f830112614690578081fd5b813561469e61452382615dad565b8181529150602080830190848101818402860182018710156146bf57600080fd5b60005b84811015614571578135845292820192908201906001016146c2565b600082601f8301126146ee578081fd5b81516146fc61452382615dad565b81815291506020808301908481018184028601820187101561471d57600080fd5b60005b8481101561457157815184529282019290820190600101614720565b8035613be981615e2c565b600082601f830112614757578081fd5b813567ffffffffffffffff81111561476d578182fd5b6147806020601f19601f84011601615d86565b915080825283602082850101111561479757600080fd5b8060208401602084013760009082016020015292915050565b8035613be981615e47565b803560028110613be957600080fd5b6000608082840312156147db578081fd5b6147e56080615d86565b9050813567ffffffffffffffff808211156147ff57600080fd5b61480b85838601614505565b8352602084013591508082111561482157600080fd5b61482d85838601614680565b6020840152604084013591508082111561484657600080fd5b5061485384828501614747565b604083015250614866836060840161473c565b606082015292915050565b600060808284031215614882578081fd5b50919050565b803560ff81168114613be957600080fd5b6000602082840312156148aa578081fd5b813561348081615e17565b6000602082840312156148c6578081fd5b815161348081615e17565b600080600080608085870312156148e6578283fd5b84356148f181615e17565b9350602085013561490181615e17565b93969395505050506040820135916060013590565b60008060006040848603121561492a578081fd5b833561493581615e17565b9250602084013567ffffffffffffffff811115614950578182fd5b61495c868287016144bc565b9497909650939450505050565b6000806000806060858703121561497e578182fd5b843561498981615e17565b9350602085013561499981615e2c565b9250604085013567ffffffffffffffff808211156149b5578384fd5b818701915087601f8301126149c8578384fd5b8135818111156149d6578485fd5b8860208285010111156149e7578485fd5b95989497505060200194505050565b600080600060608486031215614a0a578081fd5b8335614a1581615e17565b95602085013595506040909401359392505050565b600080600060408486031215614a3e578081fd5b833567ffffffffffffffff811115614a54578182fd5b614a60868287016144bc565b909790965060209590950135949350505050565b60008060208385031215614a86578182fd5b823567ffffffffffffffff811115614a9c578283fd5b614aa8858286016144bc565b90969095509350505050565b60006020808385031215614ac6578182fd5b825167ffffffffffffffff811115614adc578283fd5b8301601f81018513614aec578283fd5b8051614afa61452382615dad565b8181528381019083850185840285018601891015614b16578687fd5b8694505b83851015614b38578051835260019490940193918501918501614b1a565b50979650505050505050565b60008060008060608587031215614b59578182fd5b843567ffffffffffffffff80821115614b70578384fd5b818701915087601f830112614b83578384fd5b8135614b9161452382615dad565b808282526020808301925080860160a08d838288028a01011115614bb357898afd5b8997505b85881015614c365780828f031215614bcd57898afd5b614bd681615d86565b614be08f846147b0565b8152614bee8f8585016144b1565b8185015260408381013590820152614c098f606085016144b1565b6060820152614c1b8f608085016144b1565b60808201528552600197909701969382019390810190614bb7565b509199508a013597505050604088013592505080821115614c55578384fd5b50614c628782880161463d565b95989497509550505050565b600060208284031215614c7f578081fd5b815167ffffffffffffffff811115614c95578182fd5b6136a4848285016146de565b600060208284031215614cb2578081fd5b815161348081615e2c565b60008060008060008060c08789031215614cd5578384fd5b8635614ce081615e2c565b95506020870135614cf081615e17565b945060408701359350614d068860608901614888565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614d3a578485fd5b873596506020880135614d4c81615e47565b95506040880135614d5c81615e17565b94506060880135614d6c81615e17565b9350608088013567ffffffffffffffff80821115614d88578283fd5b614d948b838c016147ca565b945060a08a0135915080821115614da9578283fd5b50614db68a828b0161463d565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614de3578081fd5b873596506020880135614df581615e47565b95506040880135614e0581615e17565b94506060880135614e1581615e17565b9350608088013567ffffffffffffffff811115614e30578182fd5b614e3c8a828b016147ca565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614e70578283fd5b8535614e7b81615e17565b94506020860135614e8b81615e17565b93506040860135614e9b81615e17565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614ecf578182fd5b8835614eda81615e17565b97506020890135614eea81615e17565b965060408901359550606089013594506080890135614f0881615e2c565b9350614f178a60a08b01614888565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614f4e578081fd5b8735614f5981615e17565b96506020880135614f6981615e17565b95506040880135945060608801359350614f868960808a01614888565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614fb4578182fd5b8235614fbf81615e17565b946020939093013593505050565b60008060008060008060c08789031215614fe5578384fd5b8635614ff081615e17565b9550602087013561500081615e17565b9450604087013561501081615e17565b9350606087013561502081615e17565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561504f578182fd5b843561505a81615e17565b9350602085013561506a81615e17565b9250604085013561507a81615e17565b9396929550929360600135925050565b60008060008060008060c087890312156150a2578384fd5b86356150ad81615e17565b955060208701356150bd81615e17565b945060408701356150cd81615e17565b93506060870135925060808701356150e481615e2c565b8092505060a087013590509295509295509295565b60006020828403121561510a578081fd5b815161348081615e3a565b60008060408385031215615127578182fd5b825161513281615e3a565b6020939093015192949293505050565b600080600060608486031215615156578081fd5b835161516181615e3a565b602085015160409095015190969495509392505050565b600060208284031215615189578081fd5b815161348081615e47565b6000806000606084860312156151a8578081fd5b83516151b381615e47565b602085015190935067ffffffffffffffff8111156151cf578182fd5b6151db868287016146de565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e03121561520d578485fd5b6152178d8d6147bb565b9a5067ffffffffffffffff8060208e01351115615232578586fd5b6152428e60208f01358f0161457c565b9a508060408e01351115615254578586fd5b6152648e60408f01358f016144bc565b909a5098506152768e60608f01614871565b97508060e08e01351115615288578586fd5b6152988e60e08f01358f016144bc565b90975095506101008d013594506101208d013593506101408d01358110156152be578283fd5b506152d08d6101408e01358e0161463d565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215615301578384fd5b863567ffffffffffffffff80821115615318578586fd5b9088019060c0828b03121561532b578586fd5b61533560c0615d86565b823581526153468b602085016147bb565b6020820152604083013561535981615e17565b604082015261536b8b606085016144b1565b60608201526080830135608082015260a08301358281111561538b578788fd5b6153978c828601614747565b60a0830152508098505050506153b08860208901614871565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156153e7578081fd5b5035919050565b6000602082840312156153ff578081fd5b5051919050565b60008060408385031215615418578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561547357813561545881615e17565b6001600160a01b031687529582019590820190600101615445565b509495945050505050565b60008284526020808501945082825b858110156154735781358752958201959082019060010161548d565b6000815180845260208085019450808401835b83811015615473578151875295820195908201906001016154bc565b15159052565b600081518084526154f6816020860160208601615dcd565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561554f5783516001600160a01b03168352928401929184019160010161552a565b50508285015191508581038387015261556881836154a9565b925050506040830151848203604086015261558382826154de565b915050606083015161559860608601826154d8565b509392505050565b80356155ab81615e17565b6001600160a01b0390811683526020820135906155c782615e2c565b90151560208401526040820135906155de82615e17565b16604083015260608101356155f281615e2c565b8015156060840152505050565b60008251615611818460208701615dcd565b9190910192915050565b6000845161562d818460208901615dcd565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156156d25785518516835294830194918301916001016156b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156158b8576020833561589d81615e17565b6001600160a01b031683529283019290910190600101615888565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561595e578151805161590781615e03565b8552808701516001600160a01b031687860152858101518686015260608082015161593482880182615429565b50506080908101519061594986820183615429565b505060a09390930192908501906001016158f2565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b038086166020840152808516604084015250608060608301526159a8608083018461550a565b9695505050505050565b604081016159bf84615df9565b9281526020015290565b606081016159d685615df9565b938152602081019290925260409091015290565b60006159f585615e03565b84825260606020830152615a0c60608301856154a9565b9050826040830152949350505050565b6000610120808301615a2d8c615e0d565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615ad4578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615ac0818801836154de565b978601979650505090830190600101615a54565b505050508381036040850152615aeb818a8c615436565b915050615afb60608401886155a0565b82810360e0840152615b0e81868861547e565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615c8a81615e0d565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615cd86101a08401826154de565b915050615ce860208301866155a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615da557600080fd5b604052919050565b600067ffffffffffffffff821115615dc3578081fd5b5060209081020190565b60005b83811015615de8578181015183820152602001615dd0565b838111156106df5750506000910152565b6003811061414f57fe5b6004811061414f57fe5b6002811061414f57fe5b6001600160a01b038116811461414f57600080fd5b801515811461414f57600080fd5b6003811061414f57600080fd5b6004811061414f57600080fdfea26469706673582212201ec40c4a4738e1dd9206f7dbef6a97a907fb8d94ee88550dbda97e3e5459c62364736f6c6343000701003360c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033", + "deployedBytecode": "0x6080604052600436106102dc5760003560e01c80637ab6e03c11610184578063959fc17a116100d6578063d80952d51161008a578063efe6910811610064578063efe6910814610604578063f3cab68514610617578063f4dd54b014610637576102dc565b8063d80952d5146105cb578063db4c0e91146105de578063e8210e3c146105f1576102dc565b8063b064b376116100bb578063b064b37614610592578063b6d24737146105a5578063d293f290146105b8576102dc565b8063959fc17a1461056c578063abf6d3991461057f576102dc565b80638b35ac8d116101385780638d928af8116101125780638d928af8146105315780638fe4624f14610546578063941e849b14610559576102dc565b80638b35ac8d146104f85780638c57198b1461050b5780638d64cfbc1461051e576102dc565b80637fd0e5d5116101695780637fd0e5d5146104b057806380db15bd146104d2578063837f9bcb146104e5576102dc565b80637ab6e03c1461048a5780637bc008f51461049d576102dc565b80633f85d3901161023d5780634f06a70b116101f1578063611b90dd116101cb578063611b90dd1461045157806365ca4804146104645780636d307ea814610477576102dc565b80634f06a70b146104185780635001fe751461042b57806352b887461461043e576102dc565b806344b6ac741161022257806344b6ac74146103df57806348699d58146103f25780634e9d9bab14610405576102dc565b80633f85d390146103b9578063433b0865146103cc576102dc565b80631c982441116102945780632cbec84e116102795780632cbec84e146103805780632e6272ea14610393578063311c5c57146103a6576102dc565b80631c9824411461035a5780632c25efe11461036d576102dc565b806310f3aaff116102c557806310f3aaff14610309578063138fdc2c146103345780631836944614610347576102dc565b80630e248fea146102e15780631089e5e3146102f6575b600080fd5b6102f46102ef366004614a74565b61064a565b005b6102f46103043660046149f6565b6106e5565b34801561031557600080fd5b5061031e6107ef565b60405161032b919061596b565b60405180910390f35b6102f4610342366004614e59565b610813565b6102f46103553660046151ec565b610a16565b6102f46103683660046148d1565b610c1f565b6102f461037b366004614e59565b610d42565b6102f461038e3660046149f6565b610f20565b6102f46103a13660046152e8565b610ffa565b6102f46103b4366004614e59565b61111a565b6102f46103c7366004614a2a565b6112ba565b6102f46103da36600461508a565b611384565b6102f46103ed366004614e59565b6115ad565b6102f4610400366004614916565b61172c565b6102f4610413366004614e59565b611772565b6102f4610426366004614e59565b6119cd565b6102f4610439366004614e59565b611ade565b6102f461044c366004614fcd565b611c69565b6102f461045f366004614e59565b611e0d565b6102f461047236600461503a565b611eb0565b6102f4610485366004614e59565b611fce565b6102f461049836600461508a565b612009565b6102f46104ab36600461503a565b61210f565b3480156104bc57600080fd5b506104c5612213565b60405161032b919061564e565b6102f46104e0366004614969565b612237565b6102f46104f3366004614b44565b61233b565b6102f4610506366004614e59565b61250b565b6102f4610519366004614cbd565b612547565b6102f461052c366004614f34565b6125f2565b34801561053d57600080fd5b506104c561266c565b6102f4610554366004614dc9565b612690565b6102f4610567366004614e59565b6128ba565b6102f461057a366004614eb3565b612a05565b6102f461058d366004614e59565b612a82565b6102f46105a0366004614e59565b612b35565b6102f46105b3366004614fa2565b612c78565b6102f46105c6366004614e59565b612cb2565b6102f46105d9366004614d20565b612d72565b6102f46105ec3660046148d1565b613300565b6102f46105ff366004614e59565b6133fb565b6102f4610612366004614e59565b613436565b61062a6106253660046153d6565b613475565b60405161032b9190615cfa565b6102f4610645366004614e59565b613487565b8060005b818110156106df5783838281811061066257fe5b90506020020160208101906106779190614899565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106a2919061564e565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b5050505080600101905061064e565b50505050565b6106ee826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b815260040161073e9190615cfa565b60206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e91906153ee565b90506107c36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016846135d9565b6106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088691906148b5565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c357600080fd5b505afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb91906148b5565b905061090981838689613681565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109569087908990600090600401615d39565b600060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b50505050610a0d83836001600160a01b0316634d778ad1876040518263ffffffff1660e01b81526004016109b89190615cfa565b60206040518083038186803b1580156109d057600080fd5b505afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906153ee565b6136ac565b50505050505050565b33610a246020890189614899565b6001600160a01b03161480610a4d575030610a426020890189614899565b6001600160a01b0316145b610a725760405162461bcd60e51b8152600401610a6990615b5c565b60405180910390fd5b60005b8a51811015610ad75760008b8281518110610a8c57fe5b6020026020010151606001519050610aa3816136c4565b15610ace57610ab18161370b565b8c8381518110610abd57fe5b602002602001015160600181815250505b50600101610a75565b506060610ae261266c565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b1c989796959493929190615a1c565b6000604051808303818588803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b729190810190614ab4565b905060005b82811015610c1057610b9d848483818110610b8e57fe5b905060400201602001356136c4565b610bb95760405162461bcd60e51b8152600401610a6990615c38565b610c08848483818110610bc857fe5b90506040020160200135610c0384878786818110610be257fe5b9050604002016000013581518110610bf657fe5b6020026020010151613736565b613742565b600101610b77565b50505050505050505050505050565b610c6b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613681565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610cbb9190615cfa565b602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db591906148b5565b9050610dc381878588613681565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e0b908690600401615cfa565b602060405180830381600087803b158015610e2557600080fd5b505af1158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d91906153ee565b15610e7a5760405162461bcd60e51b8152600401610a6990615bca565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610ec290309060040161564e565b60206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1291906153ee565b9050610a0d87868386613653565b610f29826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610f7a919061564e565b6020604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fcc91906153ee565b90506106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b336110086020870187614899565b6001600160a01b031614806110315750306110266020870187614899565b6001600160a01b0316145b61104d5760405162461bcd60e51b8152600401610a6990615b5c565b61105a86608001516136c4565b156110725761106c866080015161370b565b60808701525b600061107c61266c565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016110ae9493929190615c6f565b6020604051808303818588803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061110091906153ee565b905061110b826136c4565b15610a0d57610a0d8282613742565b611125858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561116257600080fd5b505afa158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a91906148b5565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906111e2908690600401615cfa565b600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061125c90309060040161564e565b60206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906153ee565b9050610a0d82868386613653565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061132690879087903390600401615875565b602060405180830381600087803b15801561134057600080fd5b505af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906153ee565b90506106df82826136ac565b61138d836136c4565b1561139e5761139b8361370b565b92505b60008261141d57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906148b5565b611490565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149091906148b5565b90506001600160a01b03861630146114d5576001600160a01b03861633146114ca5760405162461bcd60e51b8152600401610a6990615b5c565b6114d58682866137a1565b6114e96001600160a01b038216888661383d565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611537908990899086908a90600401615849565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158991906153ee565b9050611594836136c4565b156115a3576115a38382613742565b5050505050505050565b6115b8858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f557600080fd5b505afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d91906148b5565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a7590611675908690600401615cfa565b602060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c791906153ee565b156116e45760405162461bcd60e51b8152600401610a6990615b25565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061125c90309060040161564e565b7f0000000000000000000000000000000000000000000000000000000000000000156117625761175d838383613989565b61176d565b61176d838383613a3c565b505050565b61177d858386613755565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f291906148b5565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186791906148b5565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d359906118d49084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600090600401615826565b6040805180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190615406565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061196f90309060040161564e565b60206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf91906153ee565b90506115a382878387613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4091906148b5565b9050611a4e81878588613681565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611a80929190615d03565b602060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad291906153ee565b9050610a0d83826136ac565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1957600080fd5b505afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5191906148b5565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8e57600080fd5b505afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906148b5565b9050611bd482828689613681565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c0b94939291906156fa565b6040805180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615406565b9150506115a384826136ac565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca457600080fd5b505afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc91906148b5565b9050611cea81878588613681565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d35906000908790600401615640565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611daf90309060040161564e565b60206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff91906153ee565b90506115a388868386613653565b611e18858386613755565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611e4a92919061580d565b602060405180830381600087803b158015611e6457600080fd5b505af1158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906153ee565b9050611ea882826136ac565b505050505050565b611ebb848285613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f03908490600401615cfa565b600060405180830381600087803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b505050506001600160a01b03821630146106df576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906148b5565b9050610d3b6001600160a01b0382168484613b56565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b612012836136c4565b15612023576120208361370b565b92505b6001600160a01b0385163014612066576001600160a01b038516331461205b5760405162461bcd60e51b8152600401610a6990615b5c565b6120668587856137a1565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906120b290889088908890600401615826565b6040805180830381600087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121039190615406565b91505061110b826136c4565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561214a57600080fd5b505afa15801561215e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218291906148b5565b905061219081868487613681565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906121da9085908790600401615d03565b600060405180830381600087803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061224c575082155b6122685760405162461bcd60e51b8152600401610a6990615b93565b606063fa6e671d60e01b33868660405160240161228793929190615662565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516122f692869186910161561b565b60408051601f198184030181529190529050611ea86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613b75565b60005b845181101561241b57336001600160a01b031685828151811061235d57fe5b6020026020010151606001516001600160a01b031614806123a65750306001600160a01b031685828151811061238f57fe5b6020026020010151606001516001600160a01b0316145b6123c25760405162461bcd60e51b8152600401610a6990615b5c565b60008582815181106123d057fe5b60200260200101516040015190506123e7816136c4565b15612412576123f58161370b565b86838151811061240157fe5b602002602001015160400181815250505b5060010161233e565b5061242461266c565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b815260040161245091906158d5565b6000604051808303818588803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050505060005b81811015610d3b5761249c838383818110610b8e57fe5b6124b85760405162461bcd60e51b8152600401610a6990615c38565b6125038383838181106124c757fe5b90506040020160200135868585858181106124de57fe5b90506040020160000135815181106124f257fe5b602002602001015160400151613742565b600101612485565b612516858386613755565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611e4a929190615d03565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906125b89030908a908a908a908a908a908a906004016157ad565b600060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf8761260a61266c565b88888888886040518863ffffffff1660e01b8152600401612631979695949392919061576c565b600060405180830381600087803b15801561264b57600080fd5b505af115801561265f573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806126af57506001600160a01b03851630145b6126cb5760405162461bcd60e51b8152600401610a6990615b5c565b60006126d688613bef565b905060006126e3836136c4565b6126ee576000612783565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061273390899060040161564e565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278391906153ee565b9050612793888660400151613bf5565b60408601526127a061266c565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b81526004016127d29493929190615976565b6000604051808303818588803b1580156127eb57600080fd5b505af11580156127ff573d6000803e3d6000fd5b505050505061280d836136c4565b15612208576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a082319061285a908a9060040161564e565b60206040518083038186803b15801561287257600080fd5b505afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa91906153ee565b90506125e684610c038385613c7c565b6128c5858386613755565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e7090612930906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615640565b600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b505afa1580156129b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d591906148b5565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161125c919061564e565b876001600160a01b0316638fcbaf0c88612a1d61266c565b8989898989896040518963ffffffff1660e01b8152600401612a46989796959493929190615723565b600060405180830381600087803b158015612a6057600080fd5b505af1158015612a74573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612abd57600080fd5b505afa158015612ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af591906148b5565b9050612b0381878588613681565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611a8092919061580d565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b505afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba891906148b5565b9050612bb681878588613681565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612bfe908690600401615cfa565b600060405180830381600087803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610ec290309060040161564e565b612c81816136c4565b15612c9257612c8f8161370b565b90505b612cae612c9d61266c565b6001600160a01b038416908361383d565b5050565b612cbd858386613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612d05908590600401615cfa565b600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b6001600160a01b038516331480612d9157506001600160a01b03851630145b612dad5760405162461bcd60e51b8152600401610a6990615b5c565b60608167ffffffffffffffff81118015612dc657600080fd5b50604051908082528060200260200182016040528015612df0578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612e0c57600080fd5b50604051908082528060200260200182016040528015612e36578160200160208202803683370190505b50905060005b83811015612fa657612e53858583818110610b8e57fe5b612e6f5760405162461bcd60e51b8152600401610a6990615c38565b8551600090868684818110612e8057fe5b9050604002016000013581518110612e9457fe5b60200260200101519050866060015115612ee257612eb181613c92565b848381518110612ebd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f9d565b612eeb81613c95565b612f7857612ef881613c92565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612f23919061564e565b60206040518083038186803b158015612f3b57600080fd5b505afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7391906153ee565b612f84565b876001600160a01b0316315b838381518110612f9057fe5b6020026020010181815250505b50600101612e3c565b5084606001511561303d57612fb961266c565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401612fe6929190615686565b60006040518083038186803b158015612ffe57600080fd5b505afa158015613012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261303a9190810190614c6e565b90505b61304b888660400151613ca2565b604086015261305861266c565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016130899493929190615976565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156130d657600080fd5b50604051908082528060200260200182016040528015613100578160200160208202803683370190505b50905085606001511561319d5761311561266c565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b8152600401613142929190615686565b60006040518083038186803b15801561315a57600080fd5b505afa15801561316e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131969190810190614c6e565b905061329b565b60005b848110156132995786516000908787848181106131b957fe5b90506040020160000135815181106131cd57fe5b602002602001015190506131e081613c95565b61326d576131ed81613c92565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401613218919061564e565b60206040518083038186803b15801561323057600080fd5b505afa158015613244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326891906153ee565b613279565b886001600160a01b0316315b83838151811061328557fe5b6020908102919091010152506001016131a0565b505b60005b8481101561265f576132f88686838181106132b557fe5b90506040020160200135610c038584815181106132ce57fe5b60200260200101518585815181106132e257fe5b6020026020010151613c7c90919063ffffffff16565b60010161329e565b61332b7f00000000000000000000000000000000000000000000000000000000000000008386613755565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161337b9190615cfa565b602060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b613441858386613755565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611e4a93929190615d1a565b600061348082613d18565b9392505050565b613492858386613755565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cf57600080fd5b505afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350791906148b5565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135519086908890600401615d03565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b50505050611ea882826001600160a01b0316635427c938866040518263ffffffff1660e01b81526004016109b89190615cfa565b60006135be826136c4565b6135c857816135d1565b6135d18261370b565b90505b919050565b6135e8814710156101a3613d2f565b6000826001600160a01b03168260405161360190613c92565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b5050905061176d816101a4613d2f565b6001600160a01b0383163014613677576136776001600160a01b0385168484613b56565b6106df81836136ac565b600061368e858484613755565b90506136a46001600160a01b038616858361383d565b949350505050565b6136b5826136c4565b15612cae57612cae8282613742565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061371984613d18565b9150915061372684613d3d565b1561348057600082559392505050565b60ff81901d9081180390565b600061374d83613d84565b919091555050565b6000613760836135b3565b90506001600160a01b0382163014613480576001600160a01b038216331461379a5760405162461bcd60e51b8152600401610a6990615b5c565b6134808285835b806137ab5761176d565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106137db57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061382657fe5b602002602001018181525050610d3b858383613de2565b80158015906138e157506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061388e90309086906004016156e0565b60206040518083038186803b1580156138a657600080fd5b505afa1580156138ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138de91906153ee565b15155b1561396a5761396a8363095ea7b360e01b8460006040516024016139069291906157f1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f30565b61176d8363095ea7b360e01b848460405160240161390692919061580d565b8060005b81811015610d3b578383828181106139a157fe5b90506020020160208101906139b69190614899565b6001600160a01b0316634b820093866040518263ffffffff1660e01b81526004016139e1919061564e565b602060405180830381600087803b1580156139fb57600080fd5b505af1158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a339190614ca1565b5060010161398d565b8060608167ffffffffffffffff81118015613a5657600080fd5b50604051908082528060200260200182016040528015613a9057816020015b613a7d614481565b815260200190600190039081613a755790505b50905060005b82811015613b22576040805160a081019091528060038152602001868684818110613abd57fe5b9050602002016020810190613ad29190614899565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613b0f57fe5b6020908102919091010152600101613a96565b50613b2b61266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016121da91906158d5565b61176d8363a9059cbb60e01b848460405160240161390692919061580d565b606060006060846001600160a01b031684604051613b9391906155ff565b6000604051808303816000865af19150503d8060008114613bd0576040519150601f19603f3d011682016040523d82523d6000602084013e613bd5565b606091505b5091509150613be48282613fd0565b925050505b92915050565b60601c90565b60606000836003811115613c0557fe5b1415613c1b57613c1482613ffa565b9050613be9565b6001836003811115613c2957fe5b1480613c4057506002836003811115613c3e57fe5b145b80613c5657506003836003811115613c5457fe5b145b15613c6457613c1482613ffa565b60405162461bcd60e51b8152600401610a6990615c01565b6000613c8c838311156001613d2f565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613cb257fe5b1415613cc157613c1482614037565b6001836003811115613ccf57fe5b1415613cde57613c1482614080565b6002836003811115613cec57fe5b1415613cfb57613c14826140c6565b6003836003811115613d0957fe5b1415613c6457613c14826140f2565b600080613d2483613d84565b915081549050915091565b81612cae57612cae81614125565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613d9183614152565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613dc3929190615640565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613dfc57600080fd5b50604051908082528060200260200182016040528015613e3657816020015b613e23614481565b815260200190600190039081613e1b5790505b50905060005b8351811015613ece576040805160a081019091528060038152602001858381518110613e6457fe5b60200260200101516001600160a01b03168152602001848381518110613e8657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613ebb57fe5b6020908102919091010152600101613e3c565b50613ed761266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613f0291906158d5565b600060405180830381600087803b158015613f1c57600080fd5b505af11580156115a3573d6000803e3d6000fd5b60006060836001600160a01b031683604051613f4c91906155ff565b6000604051808303816000865af19150503d8060008114613f89576040519150601f19603f3d011682016040523d82523d6000602084013e613f8e565b606091505b50915091506000821415613fa6573d6000803e3d6000fd5b6106df815160001480613fc8575081806020019051810190613fc89190614ca1565b6101a2613d2f565b60608215613fdf575080613be9565b815115613fef5781518083602001fd5b613be96101ae614125565b6060600061400783614175565b9050600181600381111561401757fe5b141561402e576140268361418b565b9150506135d4565b829150506135d4565b60606000614044836141dd565b9050600081600281111561405457fe5b141561406357614026836141f3565b600181600281111561407157fe5b141561402e5761402683614256565b6060600061408d836141dd565b600281111561409857fe5b905060ff81166140ac5761402683826142a9565b60015b60ff168160ff16141561402e57614026838261430b565b606060006140d3836141dd565b60028111156140de57fe5b905060ff811661402e5761402683826142a9565b606060006140ff836141dd565b600281111561410a57fe5b905060ff811661411e5761402683826142a9565b60026140af565b61414f817f42414c0000000000000000000000000000000000000000000000000000000000614366565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6000818060200190518101906135d19190615178565b6060806000614199846143c7565b915091506141a6826143ea565b6141b057836136a4565b600182826040516020016141c6939291906159ea565b604051602081830303815290604052949350505050565b6000818060200190518101906135d191906150f9565b606060008061420184614454565b9150915061420e826136c4565b1561424c5761421c8261370b565b915060008282604051602001614234939291906159c9565b604051602081830303815290604052925050506135d4565b83925050506135d4565b606060006142638361446b565b905061426e816136c4565b1561402e5761427c8161370b565b90506001816040516020016142929291906159b2565b6040516020818303038152906040529150506135d4565b60606000806142b785614454565b915091506142c4826136c4565b15614301576142d28261370b565b91508382826040516020016142e993929190615d6b565b60405160208183030381529060405292505050613be9565b8492505050613be9565b606060006143188461446b565b9050614323816136c4565b1561435d576143318161370b565b90508281604051602001614346929190615d58565b604051602081830303815290604052915050613be9565b83915050613be9565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906143df9190615194565b909590945092505050565b600080805b835181101561444d57600084828151811061440657fe5b60200260200101519050614419816136c4565b15614444576144278161370b565b85838151811061443357fe5b602002602001018181525050600192505b506001016143ef565b5092915050565b600080828060200190518101906143df9190615142565b6000818060200190518101906134809190615115565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613be981615e17565b60008083601f8401126144cd578182fd5b50813567ffffffffffffffff8111156144e4578182fd5b60208301915083602080830285010111156144fe57600080fd5b9250929050565b600082601f830112614515578081fd5b813561452861452382615dad565b615d86565b81815291506020808301908481018184028601820187101561454957600080fd5b60005b8481101561457157813561455f81615e17565b8452928201929082019060010161454c565b505050505092915050565b600082601f83011261458c578081fd5b813561459a61452382615dad565b818152915060208083019084810160005b84811015614571578135870160a080601f19838c030112156145cc57600080fd5b6145d581615d86565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561461757600080fd5b6146258c8885870101614747565b908201528652505092820192908201906001016145ab565b60008083601f84011261464e578182fd5b50813567ffffffffffffffff811115614665578182fd5b6020830191508360206040830285010111156144fe57600080fd5b600082601f830112614690578081fd5b813561469e61452382615dad565b8181529150602080830190848101818402860182018710156146bf57600080fd5b60005b84811015614571578135845292820192908201906001016146c2565b600082601f8301126146ee578081fd5b81516146fc61452382615dad565b81815291506020808301908481018184028601820187101561471d57600080fd5b60005b8481101561457157815184529282019290820190600101614720565b8035613be981615e2c565b600082601f830112614757578081fd5b813567ffffffffffffffff81111561476d578182fd5b6147806020601f19601f84011601615d86565b915080825283602082850101111561479757600080fd5b8060208401602084013760009082016020015292915050565b8035613be981615e47565b803560028110613be957600080fd5b6000608082840312156147db578081fd5b6147e56080615d86565b9050813567ffffffffffffffff808211156147ff57600080fd5b61480b85838601614505565b8352602084013591508082111561482157600080fd5b61482d85838601614680565b6020840152604084013591508082111561484657600080fd5b5061485384828501614747565b604083015250614866836060840161473c565b606082015292915050565b600060808284031215614882578081fd5b50919050565b803560ff81168114613be957600080fd5b6000602082840312156148aa578081fd5b813561348081615e17565b6000602082840312156148c6578081fd5b815161348081615e17565b600080600080608085870312156148e6578283fd5b84356148f181615e17565b9350602085013561490181615e17565b93969395505050506040820135916060013590565b60008060006040848603121561492a578081fd5b833561493581615e17565b9250602084013567ffffffffffffffff811115614950578182fd5b61495c868287016144bc565b9497909650939450505050565b6000806000806060858703121561497e578182fd5b843561498981615e17565b9350602085013561499981615e2c565b9250604085013567ffffffffffffffff808211156149b5578384fd5b818701915087601f8301126149c8578384fd5b8135818111156149d6578485fd5b8860208285010111156149e7578485fd5b95989497505060200194505050565b600080600060608486031215614a0a578081fd5b8335614a1581615e17565b95602085013595506040909401359392505050565b600080600060408486031215614a3e578081fd5b833567ffffffffffffffff811115614a54578182fd5b614a60868287016144bc565b909790965060209590950135949350505050565b60008060208385031215614a86578182fd5b823567ffffffffffffffff811115614a9c578283fd5b614aa8858286016144bc565b90969095509350505050565b60006020808385031215614ac6578182fd5b825167ffffffffffffffff811115614adc578283fd5b8301601f81018513614aec578283fd5b8051614afa61452382615dad565b8181528381019083850185840285018601891015614b16578687fd5b8694505b83851015614b38578051835260019490940193918501918501614b1a565b50979650505050505050565b60008060008060608587031215614b59578182fd5b843567ffffffffffffffff80821115614b70578384fd5b818701915087601f830112614b83578384fd5b8135614b9161452382615dad565b808282526020808301925080860160a08d838288028a01011115614bb357898afd5b8997505b85881015614c365780828f031215614bcd57898afd5b614bd681615d86565b614be08f846147b0565b8152614bee8f8585016144b1565b8185015260408381013590820152614c098f606085016144b1565b6060820152614c1b8f608085016144b1565b60808201528552600197909701969382019390810190614bb7565b509199508a013597505050604088013592505080821115614c55578384fd5b50614c628782880161463d565b95989497509550505050565b600060208284031215614c7f578081fd5b815167ffffffffffffffff811115614c95578182fd5b6136a4848285016146de565b600060208284031215614cb2578081fd5b815161348081615e2c565b60008060008060008060c08789031215614cd5578384fd5b8635614ce081615e2c565b95506020870135614cf081615e17565b945060408701359350614d068860608901614888565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614d3a578485fd5b873596506020880135614d4c81615e47565b95506040880135614d5c81615e17565b94506060880135614d6c81615e17565b9350608088013567ffffffffffffffff80821115614d88578283fd5b614d948b838c016147ca565b945060a08a0135915080821115614da9578283fd5b50614db68a828b0161463d565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614de3578081fd5b873596506020880135614df581615e47565b95506040880135614e0581615e17565b94506060880135614e1581615e17565b9350608088013567ffffffffffffffff811115614e30578182fd5b614e3c8a828b016147ca565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614e70578283fd5b8535614e7b81615e17565b94506020860135614e8b81615e17565b93506040860135614e9b81615e17565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614ecf578182fd5b8835614eda81615e17565b97506020890135614eea81615e17565b965060408901359550606089013594506080890135614f0881615e2c565b9350614f178a60a08b01614888565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614f4e578081fd5b8735614f5981615e17565b96506020880135614f6981615e17565b95506040880135945060608801359350614f868960808a01614888565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614fb4578182fd5b8235614fbf81615e17565b946020939093013593505050565b60008060008060008060c08789031215614fe5578384fd5b8635614ff081615e17565b9550602087013561500081615e17565b9450604087013561501081615e17565b9350606087013561502081615e17565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561504f578182fd5b843561505a81615e17565b9350602085013561506a81615e17565b9250604085013561507a81615e17565b9396929550929360600135925050565b60008060008060008060c087890312156150a2578384fd5b86356150ad81615e17565b955060208701356150bd81615e17565b945060408701356150cd81615e17565b93506060870135925060808701356150e481615e2c565b8092505060a087013590509295509295509295565b60006020828403121561510a578081fd5b815161348081615e3a565b60008060408385031215615127578182fd5b825161513281615e3a565b6020939093015192949293505050565b600080600060608486031215615156578081fd5b835161516181615e3a565b602085015160409095015190969495509392505050565b600060208284031215615189578081fd5b815161348081615e47565b6000806000606084860312156151a8578081fd5b83516151b381615e47565b602085015190935067ffffffffffffffff8111156151cf578182fd5b6151db868287016146de565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e03121561520d578485fd5b6152178d8d6147bb565b9a5067ffffffffffffffff8060208e01351115615232578586fd5b6152428e60208f01358f0161457c565b9a508060408e01351115615254578586fd5b6152648e60408f01358f016144bc565b909a5098506152768e60608f01614871565b97508060e08e01351115615288578586fd5b6152988e60e08f01358f016144bc565b90975095506101008d013594506101208d013593506101408d01358110156152be578283fd5b506152d08d6101408e01358e0161463d565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215615301578384fd5b863567ffffffffffffffff80821115615318578586fd5b9088019060c0828b03121561532b578586fd5b61533560c0615d86565b823581526153468b602085016147bb565b6020820152604083013561535981615e17565b604082015261536b8b606085016144b1565b60608201526080830135608082015260a08301358281111561538b578788fd5b6153978c828601614747565b60a0830152508098505050506153b08860208901614871565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156153e7578081fd5b5035919050565b6000602082840312156153ff578081fd5b5051919050565b60008060408385031215615418578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561547357813561545881615e17565b6001600160a01b031687529582019590820190600101615445565b509495945050505050565b60008284526020808501945082825b858110156154735781358752958201959082019060010161548d565b6000815180845260208085019450808401835b83811015615473578151875295820195908201906001016154bc565b15159052565b600081518084526154f6816020860160208601615dcd565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561554f5783516001600160a01b03168352928401929184019160010161552a565b50508285015191508581038387015261556881836154a9565b925050506040830151848203604086015261558382826154de565b915050606083015161559860608601826154d8565b509392505050565b80356155ab81615e17565b6001600160a01b0390811683526020820135906155c782615e2c565b90151560208401526040820135906155de82615e17565b16604083015260608101356155f281615e2c565b8015156060840152505050565b60008251615611818460208701615dcd565b9190910192915050565b6000845161562d818460208901615dcd565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156156d25785518516835294830194918301916001016156b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156158b8576020833561589d81615e17565b6001600160a01b031683529283019290910190600101615888565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561595e578151805161590781615e03565b8552808701516001600160a01b031687860152858101518686015260608082015161593482880182615429565b50506080908101519061594986820183615429565b505060a09390930192908501906001016158f2565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b038086166020840152808516604084015250608060608301526159a8608083018461550a565b9695505050505050565b604081016159bf84615df9565b9281526020015290565b606081016159d685615df9565b938152602081019290925260409091015290565b60006159f585615e03565b84825260606020830152615a0c60608301856154a9565b9050826040830152949350505050565b6000610120808301615a2d8c615e0d565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615ad4578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615ac0818801836154de565b978601979650505090830190600101615a54565b505050508381036040850152615aeb818a8c615436565b915050615afb60608401886155a0565b82810360e0840152615b0e81868861547e565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615c8a81615e0d565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615cd86101a08401826154de565b915050615ce860208301866155a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615da557600080fd5b604052919050565b600067ffffffffffffffff821115615dc3578081fd5b5060209081020190565b60005b83811015615de8578181015183820152602001615dd0565b838111156106df5750506000910152565b6003811061414f57fe5b6004811061414f57fe5b6002811061414f57fe5b6001600160a01b038116811461414f57600080fd5b801515811461414f57600080fd5b6003811061414f57600080fd5b6004811061414f57600080fdfea26469706673582212201ec40c4a4738e1dd9206f7dbef6a97a907fb8d94ee88550dbda97e3e5459c62364736f6c63430007010033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/tasks/20230712-child-chain-gauge-checkpointer/build-info/BatchRelayerLibrary.json b/tasks/20230712-child-chain-gauge-checkpointer/build-info/BatchRelayerLibrary.json new file mode 100644 index 000000000..aab6096d5 --- /dev/null +++ b/tasks/20230712-child-chain-gauge-checkpointer/build-info/BatchRelayerLibrary.json @@ -0,0 +1 @@ +{"id":"a16f63d25871a148c47f97c44db3e597","_format":"hh-sol-build-info-1","solcVersion":"0.7.1","solcLongVersion":"0.7.1+commit.f4a555be","input":{"language":"Solidity","sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\n */\ninterface IBalancerMinter {\n event Minted(address indexed recipient, address gauge, uint256 minted);\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IERC20);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` and send to them\n * @param gauge `LiquidityGauge` address to get mintable amount from\n */\n function mint(address gauge) external returns (uint256);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mintMany(address[] calldata gauges) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mintFor(address gauge, address user) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user` across multiple gauges\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauges List of `LiquidityGauge` addresses\n * @param user Address to mint to\n */\n function mintManyFor(address[] calldata gauges, address user) external returns (uint256);\n\n /**\n * @notice The total number of tokens minted for `user` from `gauge`\n */\n function minted(address user, address gauge) external view returns (uint256);\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function getMinterApproval(address minter, address user) external view returns (bool);\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on your behalf\n */\n function setMinterApproval(address minter, bool approval) external;\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n * them.\n */\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function allowed_to_mint_for(address minter, address user) external view returns (bool);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mint_many(address[8] calldata gauges) external;\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mint_for(address gauge, address user) external;\n\n /**\n * @notice Toggle whether `minter` is approved to mint tokens for `user`\n */\n function toggle_approve_mint(address minter) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBalancerToken is IERC20 {\n function mint(address to, uint256 amount) external;\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function MINTER_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function SNAPSHOT_ROLE() external view returns (bytes32);\n\n function snapshot() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n event RelativeWeightCapChanged(uint256 new_relative_weight_cap);\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Record a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns true if gauge is killed; false otherwise.\n */\n function is_killed() external view returns (bool);\n\n /**\n * @notice Kills the gauge so it cannot mint BAL.\n */\n function killGauge() external;\n\n /**\n * @notice Unkills the gauge so it can mint BAL again.\n */\n function unkillGauge() external;\n\n /**\n * @notice Sets a new relative weight cap for the gauge.\n * The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n * @param relativeWeightCap New relative weight cap.\n */\n function setRelativeWeightCap(uint256 relativeWeightCap) external;\n\n /**\n * @notice Gets the relative weight cap for the gauge.\n */\n function getRelativeWeightCap() external view returns (uint256);\n\n /**\n * @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n * @param time Timestamp in the past or present.\n */\n function getCappedRelativeWeight(uint256 time) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IRewardTokenDistributor {\n struct Reward {\n IERC20 token;\n address distributor;\n uint256 period_finish;\n uint256 rate;\n uint256 last_update;\n uint256 integral;\n }\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function reward_data(IERC20 token) external view returns (Reward memory);\n\n function claim_rewards(address user) external;\n\n function add_reward(IERC20 rewardToken, address distributor) external;\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external;\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external;\n\n function claimable_reward(address rewardToken, address user) external view returns (uint256);\n\n function claimable_reward_write(address rewardToken, address user) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ILiquidityGauge.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IStakingLiquidityGauge is IRewardTokenDistributor, ILiquidityGauge, IERC20 {\n function initialize(address lpToken, uint256 relativeWeightCap) external;\n\n function lp_token() external view returns (IERC20);\n\n function deposit(uint256 value, address recipient) external;\n\n function withdraw(uint256 value) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nlibrary StablePoolUserData {\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT, EXACT_BPT_IN_FOR_ALL_TOKENS_OUT }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n function allTokensInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut) {\n (, bptAmountOut) = abi.decode(self, (JoinKind, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function exactBptInForTokensOut(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (ExitKind, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nlibrary BasePoolUserData {\n // Special ExitKind for all pools, used in Recovery Mode. Use the max 8-bit value to prevent conflicts\n // with future additions to the ExitKind enums (or any front-end code that maps to existing values)\n uint8 public constant RECOVERY_MODE_EXIT_KIND = 255;\n\n // Return true if this is the special exit kind.\n function isRecoveryModeExitKind(bytes memory self) internal pure returns (bool) {\n // Check for the \"no data\" case, or abi.decode would revert\n return self.length > 0 && abi.decode(self, (uint8)) == RECOVERY_MODE_EXIT_KIND;\n }\n\n // Parse the bptAmountIn out of the userData\n function recoveryModeExit(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (uint8, uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\ninterface IBasePoolFactory is IAuthentication {\n /**\n * @dev Returns true if `pool` was created by this factory.\n */\n function isPoolFromFactory(address pool) external view returns (bool);\n\n /**\n * @dev Check whether the derived factory has been disabled.\n */\n function isDisabled() external view returns (bool);\n\n /**\n * @dev Disable the factory, preventing the creation of more pools. Already existing pools are unaffected.\n * Once a factory is disabled, it cannot be re-enabled.\n */\n function disable() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IRateProvider {\n /**\n * @dev Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying\n * token. The meaning of this rate depends on the context.\n */\n function getRate() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IRateProvider.sol\";\n\n/**\n * @dev Interface for Pools that assign rate providers to their tokens.\n */\ninterface IRateProviderPool {\n /**\n * @dev Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider\n * for that token.\n */\n function getRateProviders() external view returns (IRateProvider[] memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the RecoveryMode module.\n */\ninterface IRecoveryMode {\n /**\n * @dev Emitted when the Recovery Mode status changes.\n */\n event RecoveryModeStateChanged(bool enabled);\n\n /**\n * @notice Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional\n * exits with low computational complexity and no dependencies.\n */\n function enableRecoveryMode() external;\n\n /**\n * @notice Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits.\n */\n function disableRecoveryMode() external;\n\n /**\n * @notice Returns true if the Pool is in Recovery Mode.\n */\n function inRecoveryMode() external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nlibrary WeightedPoolUserData {\n // In order to preserve backwards compatibility, make sure new join and exit kinds are added at the end of the enum.\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n function allTokensInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut) {\n (, bptAmountOut) = abi.decode(self, (JoinKind, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function exactBptInForTokensOut(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (ExitKind, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.1 <0.9.0;\n\n// solhint-disable\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _require(bool condition, uint256 errorCode) pure {\n if (!condition) _revert(errorCode);\n}\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n */\nfunction _require(\n bool condition,\n uint256 errorCode,\n bytes3 prefix\n) pure {\n if (!condition) _revert(errorCode, prefix);\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _revert(uint256 errorCode) pure {\n _revert(errorCode, 0x42414c); // This is the raw byte representation of \"BAL\"\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n */\nfunction _revert(uint256 errorCode, bytes3 prefix) pure {\n uint256 prefixUint = uint256(uint24(prefix));\n // We're going to dynamically create a revert string based on the error code, with the following format:\n // 'BAL#{errorCode}'\n // where the code is left-padded with zeroes to three digits (so they range from 000 to 999).\n //\n // We don't have revert strings embedded in the contract to save bytecode size: it takes much less space to store a\n // number (8 to 16 bits) than the individual string characters.\n //\n // The dynamic string creation algorithm that follows could be implemented in Solidity, but assembly allows for a\n // much denser implementation, again saving bytecode size. Given this function unconditionally reverts, this is a\n // safe place to rely on it without worrying about how its usage might affect e.g. memory contents.\n assembly {\n // First, we need to compute the ASCII representation of the error code. We assume that it is in the 0-999\n // range, so we only need to convert three digits. To convert the digits to ASCII, we add 0x30, the value for\n // the '0' character.\n\n let units := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let tenths := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let hundreds := add(mod(errorCode, 10), 0x30)\n\n // With the individual characters, we can now construct the full string.\n // We first append the '#' character (0x23) to the prefix. In the case of 'BAL', it results in 0x42414c23 ('BAL#')\n // Then, we shift this by 24 (to provide space for the 3 bytes of the error code), and add the\n // characters to it, each shifted by a multiple of 8.\n // The revert reason is then shifted left by 200 bits (256 minus the length of the string, 7 characters * 8 bits\n // per character = 56) to locate it in the most significant part of the 256 slot (the beginning of a byte\n // array).\n let formattedPrefix := shl(24, add(0x23, shl(8, prefixUint)))\n\n let revertReason := shl(200, add(formattedPrefix, add(add(units, shl(8, tenths)), shl(16, hundreds))))\n\n // We can now encode the reason in memory, which can be safely overwritten as we're about to revert. The encoded\n // message will have the following layout:\n // [ revert reason identifier ] [ string location offset ] [ string length ] [ string contents ]\n\n // The Solidity revert reason identifier is 0x08c739a0, the function selector of the Error(string) function. We\n // also write zeroes to the next 28 bytes of memory, but those are about to be overwritten.\n mstore(0x0, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n // Next is the offset to the location of the string, which will be placed immediately after (20 bytes away).\n mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)\n // The string length is fixed: 7 characters.\n mstore(0x24, 7)\n // Finally, the string itself is stored.\n mstore(0x44, revertReason)\n\n // Even if the string is only 7 bytes long, we need to return a full 32 byte slot containing it. The length of\n // the encoded message is therefore 4 + 32 + 32 + 32 = 100.\n revert(0, 100)\n }\n}\n\nlibrary Errors {\n // Math\n uint256 internal constant ADD_OVERFLOW = 0;\n uint256 internal constant SUB_OVERFLOW = 1;\n uint256 internal constant SUB_UNDERFLOW = 2;\n uint256 internal constant MUL_OVERFLOW = 3;\n uint256 internal constant ZERO_DIVISION = 4;\n uint256 internal constant DIV_INTERNAL = 5;\n uint256 internal constant X_OUT_OF_BOUNDS = 6;\n uint256 internal constant Y_OUT_OF_BOUNDS = 7;\n uint256 internal constant PRODUCT_OUT_OF_BOUNDS = 8;\n uint256 internal constant INVALID_EXPONENT = 9;\n\n // Input\n uint256 internal constant OUT_OF_BOUNDS = 100;\n uint256 internal constant UNSORTED_ARRAY = 101;\n uint256 internal constant UNSORTED_TOKENS = 102;\n uint256 internal constant INPUT_LENGTH_MISMATCH = 103;\n uint256 internal constant ZERO_TOKEN = 104;\n uint256 internal constant INSUFFICIENT_DATA = 105;\n\n // Shared pools\n uint256 internal constant MIN_TOKENS = 200;\n uint256 internal constant MAX_TOKENS = 201;\n uint256 internal constant MAX_SWAP_FEE_PERCENTAGE = 202;\n uint256 internal constant MIN_SWAP_FEE_PERCENTAGE = 203;\n uint256 internal constant MINIMUM_BPT = 204;\n uint256 internal constant CALLER_NOT_VAULT = 205;\n uint256 internal constant UNINITIALIZED = 206;\n uint256 internal constant BPT_IN_MAX_AMOUNT = 207;\n uint256 internal constant BPT_OUT_MIN_AMOUNT = 208;\n uint256 internal constant EXPIRED_PERMIT = 209;\n uint256 internal constant NOT_TWO_TOKENS = 210;\n uint256 internal constant DISABLED = 211;\n\n // Pools\n uint256 internal constant MIN_AMP = 300;\n uint256 internal constant MAX_AMP = 301;\n uint256 internal constant MIN_WEIGHT = 302;\n uint256 internal constant MAX_STABLE_TOKENS = 303;\n uint256 internal constant MAX_IN_RATIO = 304;\n uint256 internal constant MAX_OUT_RATIO = 305;\n uint256 internal constant MIN_BPT_IN_FOR_TOKEN_OUT = 306;\n uint256 internal constant MAX_OUT_BPT_FOR_TOKEN_IN = 307;\n uint256 internal constant NORMALIZED_WEIGHT_INVARIANT = 308;\n uint256 internal constant INVALID_TOKEN = 309;\n uint256 internal constant UNHANDLED_JOIN_KIND = 310;\n uint256 internal constant ZERO_INVARIANT = 311;\n uint256 internal constant ORACLE_INVALID_SECONDS_QUERY = 312;\n uint256 internal constant ORACLE_NOT_INITIALIZED = 313;\n uint256 internal constant ORACLE_QUERY_TOO_OLD = 314;\n uint256 internal constant ORACLE_INVALID_INDEX = 315;\n uint256 internal constant ORACLE_BAD_SECS = 316;\n uint256 internal constant AMP_END_TIME_TOO_CLOSE = 317;\n uint256 internal constant AMP_ONGOING_UPDATE = 318;\n uint256 internal constant AMP_RATE_TOO_HIGH = 319;\n uint256 internal constant AMP_NO_ONGOING_UPDATE = 320;\n uint256 internal constant STABLE_INVARIANT_DIDNT_CONVERGE = 321;\n uint256 internal constant STABLE_GET_BALANCE_DIDNT_CONVERGE = 322;\n uint256 internal constant RELAYER_NOT_CONTRACT = 323;\n uint256 internal constant BASE_POOL_RELAYER_NOT_CALLED = 324;\n uint256 internal constant REBALANCING_RELAYER_REENTERED = 325;\n uint256 internal constant GRADUAL_UPDATE_TIME_TRAVEL = 326;\n uint256 internal constant SWAPS_DISABLED = 327;\n uint256 internal constant CALLER_IS_NOT_LBP_OWNER = 328;\n uint256 internal constant PRICE_RATE_OVERFLOW = 329;\n uint256 internal constant INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED = 330;\n uint256 internal constant WEIGHT_CHANGE_TOO_FAST = 331;\n uint256 internal constant LOWER_GREATER_THAN_UPPER_TARGET = 332;\n uint256 internal constant UPPER_TARGET_TOO_HIGH = 333;\n uint256 internal constant UNHANDLED_BY_LINEAR_POOL = 334;\n uint256 internal constant OUT_OF_TARGET_RANGE = 335;\n uint256 internal constant UNHANDLED_EXIT_KIND = 336;\n uint256 internal constant UNAUTHORIZED_EXIT = 337;\n uint256 internal constant MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE = 338;\n uint256 internal constant UNHANDLED_BY_MANAGED_POOL = 339;\n uint256 internal constant UNHANDLED_BY_PHANTOM_POOL = 340;\n uint256 internal constant TOKEN_DOES_NOT_HAVE_RATE_PROVIDER = 341;\n uint256 internal constant INVALID_INITIALIZATION = 342;\n uint256 internal constant OUT_OF_NEW_TARGET_RANGE = 343;\n uint256 internal constant FEATURE_DISABLED = 344;\n uint256 internal constant UNINITIALIZED_POOL_CONTROLLER = 345;\n uint256 internal constant SET_SWAP_FEE_DURING_FEE_CHANGE = 346;\n uint256 internal constant SET_SWAP_FEE_PENDING_FEE_CHANGE = 347;\n uint256 internal constant CHANGE_TOKENS_DURING_WEIGHT_CHANGE = 348;\n uint256 internal constant CHANGE_TOKENS_PENDING_WEIGHT_CHANGE = 349;\n uint256 internal constant MAX_WEIGHT = 350;\n uint256 internal constant UNAUTHORIZED_JOIN = 351;\n uint256 internal constant MAX_MANAGEMENT_AUM_FEE_PERCENTAGE = 352;\n uint256 internal constant FRACTIONAL_TARGET = 353;\n uint256 internal constant ADD_OR_REMOVE_BPT = 354;\n uint256 internal constant INVALID_CIRCUIT_BREAKER_BOUNDS = 355;\n uint256 internal constant CIRCUIT_BREAKER_TRIPPED = 356;\n uint256 internal constant MALICIOUS_QUERY_REVERT = 357;\n uint256 internal constant JOINS_EXITS_DISABLED = 358;\n\n // Lib\n uint256 internal constant REENTRANCY = 400;\n uint256 internal constant SENDER_NOT_ALLOWED = 401;\n uint256 internal constant PAUSED = 402;\n uint256 internal constant PAUSE_WINDOW_EXPIRED = 403;\n uint256 internal constant MAX_PAUSE_WINDOW_DURATION = 404;\n uint256 internal constant MAX_BUFFER_PERIOD_DURATION = 405;\n uint256 internal constant INSUFFICIENT_BALANCE = 406;\n uint256 internal constant INSUFFICIENT_ALLOWANCE = 407;\n uint256 internal constant ERC20_TRANSFER_FROM_ZERO_ADDRESS = 408;\n uint256 internal constant ERC20_TRANSFER_TO_ZERO_ADDRESS = 409;\n uint256 internal constant ERC20_MINT_TO_ZERO_ADDRESS = 410;\n uint256 internal constant ERC20_BURN_FROM_ZERO_ADDRESS = 411;\n uint256 internal constant ERC20_APPROVE_FROM_ZERO_ADDRESS = 412;\n uint256 internal constant ERC20_APPROVE_TO_ZERO_ADDRESS = 413;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_ALLOWANCE = 414;\n uint256 internal constant ERC20_DECREASED_ALLOWANCE_BELOW_ZERO = 415;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_BALANCE = 416;\n uint256 internal constant ERC20_BURN_EXCEEDS_ALLOWANCE = 417;\n uint256 internal constant SAFE_ERC20_CALL_FAILED = 418;\n uint256 internal constant ADDRESS_INSUFFICIENT_BALANCE = 419;\n uint256 internal constant ADDRESS_CANNOT_SEND_VALUE = 420;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_INT256 = 421;\n uint256 internal constant GRANT_SENDER_NOT_ADMIN = 422;\n uint256 internal constant REVOKE_SENDER_NOT_ADMIN = 423;\n uint256 internal constant RENOUNCE_SENDER_NOT_ALLOWED = 424;\n uint256 internal constant BUFFER_PERIOD_EXPIRED = 425;\n uint256 internal constant CALLER_IS_NOT_OWNER = 426;\n uint256 internal constant NEW_OWNER_IS_ZERO = 427;\n uint256 internal constant CODE_DEPLOYMENT_FAILED = 428;\n uint256 internal constant CALL_TO_NON_CONTRACT = 429;\n uint256 internal constant LOW_LEVEL_CALL_FAILED = 430;\n uint256 internal constant NOT_PAUSED = 431;\n uint256 internal constant ADDRESS_ALREADY_ALLOWLISTED = 432;\n uint256 internal constant ADDRESS_NOT_ALLOWLISTED = 433;\n uint256 internal constant ERC20_BURN_EXCEEDS_BALANCE = 434;\n uint256 internal constant INVALID_OPERATION = 435;\n uint256 internal constant CODEC_OVERFLOW = 436;\n uint256 internal constant IN_RECOVERY_MODE = 437;\n uint256 internal constant NOT_IN_RECOVERY_MODE = 438;\n uint256 internal constant INDUCED_FAILURE = 439;\n uint256 internal constant EXPIRED_SIGNATURE = 440;\n uint256 internal constant MALFORMED_SIGNATURE = 441;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_UINT64 = 442;\n uint256 internal constant UNHANDLED_FEE_TYPE = 443;\n uint256 internal constant BURN_FROM_ZERO = 444;\n\n // Vault\n uint256 internal constant INVALID_POOL_ID = 500;\n uint256 internal constant CALLER_NOT_POOL = 501;\n uint256 internal constant SENDER_NOT_ASSET_MANAGER = 502;\n uint256 internal constant USER_DOESNT_ALLOW_RELAYER = 503;\n uint256 internal constant INVALID_SIGNATURE = 504;\n uint256 internal constant EXIT_BELOW_MIN = 505;\n uint256 internal constant JOIN_ABOVE_MAX = 506;\n uint256 internal constant SWAP_LIMIT = 507;\n uint256 internal constant SWAP_DEADLINE = 508;\n uint256 internal constant CANNOT_SWAP_SAME_TOKEN = 509;\n uint256 internal constant UNKNOWN_AMOUNT_IN_FIRST_SWAP = 510;\n uint256 internal constant MALCONSTRUCTED_MULTIHOP_SWAP = 511;\n uint256 internal constant INTERNAL_BALANCE_OVERFLOW = 512;\n uint256 internal constant INSUFFICIENT_INTERNAL_BALANCE = 513;\n uint256 internal constant INVALID_ETH_INTERNAL_BALANCE = 514;\n uint256 internal constant INVALID_POST_LOAN_BALANCE = 515;\n uint256 internal constant INSUFFICIENT_ETH = 516;\n uint256 internal constant UNALLOCATED_ETH = 517;\n uint256 internal constant ETH_TRANSFER = 518;\n uint256 internal constant CANNOT_USE_ETH_SENTINEL = 519;\n uint256 internal constant TOKENS_MISMATCH = 520;\n uint256 internal constant TOKEN_NOT_REGISTERED = 521;\n uint256 internal constant TOKEN_ALREADY_REGISTERED = 522;\n uint256 internal constant TOKENS_ALREADY_SET = 523;\n uint256 internal constant TOKENS_LENGTH_MUST_BE_2 = 524;\n uint256 internal constant NONZERO_TOKEN_BALANCE = 525;\n uint256 internal constant BALANCE_TOTAL_OVERFLOW = 526;\n uint256 internal constant POOL_NO_TOKENS = 527;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_BALANCE = 528;\n\n // Fees\n uint256 internal constant SWAP_FEE_PERCENTAGE_TOO_HIGH = 600;\n uint256 internal constant FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH = 601;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT = 602;\n uint256 internal constant AUM_FEE_PERCENTAGE_TOO_HIGH = 603;\n\n // FeeSplitter\n uint256 internal constant SPLITTER_FEE_PERCENTAGE_TOO_HIGH = 700;\n\n // Misc\n uint256 internal constant UNIMPLEMENTED = 998;\n uint256 internal constant SHOULD_NOT_HAPPEN = 999;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthentication {\n /**\n * @dev Returns the action identifier associated with the external function described by `selector`.\n */\n function getActionId(bytes4 selector) external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the SignatureValidator helper, used to support meta-transactions.\n */\ninterface ISignaturesValidator {\n /**\n * @dev Returns the EIP712 domain separator.\n */\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @dev Returns the next nonce used by an address to sign messages.\n */\n function getNextNonce(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the TemporarilyPausable helper.\n */\ninterface ITemporarilyPausable {\n /**\n * @dev Emitted every time the pause state changes by `_setPaused`.\n */\n event PausedStateChanged(bool paused);\n\n /**\n * @dev Returns the current paused state.\n */\n function getPausedState()\n external\n view\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n );\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @notice Simple interface to retrieve the version of a deployed contract.\n */\ninterface IVersion {\n /**\n * @dev Returns a JSON representation of the contract version containing name, version number and task ID.\n */\n function version() external view returns (string memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\ninterface IERC4626 is IERC20 {\n /**\n * @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\n */\n event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares);\n\n /**\n * @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n * and transferred those `assets` to `receiver`.\n */\n event Withdraw(\n address indexed caller,\n address indexed receiver,\n address indexed owner,\n uint256 assets,\n uint256 shares\n );\n\n /**\n * @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\n */\n function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n /**\n * @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\n */\n function redeem(\n uint256 shares,\n address receiver,\n address owner\n ) external returns (uint256 assets);\n\n /**\n * @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\n */\n function asset() external view returns (address);\n\n /**\n * @dev Total amount of the underlying asset that is “managed” by Vault.\n */\n function totalAssets() external view returns (uint256);\n\n /**\n * @dev The amount of `assets` that the Vault would exchange for the amount\n * of `shares` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev The amount of `shares` that the Vault would exchange for the amount\n * of `assets` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToShares(uint256 assets) external view returns (uint256 shares);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\n/**\n * @dev Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n * given `owner`'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IERC20PermitDAI {\n /**\n * @notice update allowance with a signed permit\n * @param holder Token owner's address (Authorizer)\n * @param spender Spender's address\n * @param nonce The permit nonce\n * @param expiry The time at which this expires (unix time)\n * @param allowed Whether the spender is allowed or disallowed from spending\n * @param v v of the signature\n * @param r r of the signature\n * @param s s of the signature\n */\n function permit(\n address holder,\n address spender,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAToken {\n /**\n * @dev returns the address of the aToken's underlying asset\n */\n // solhint-disable-next-line func-name-mixedcase\n function UNDERLYING_ASSET_ADDRESS() external view returns (address);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n * result they would have if called on the Vault given the current state. Note that the results will be affected by\n * other transactions interacting with the Pools involved.\n *\n * All query functions can be called both on-chain and off-chain.\n *\n * If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n * no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n * calling them via STATICCALL will fail.\n *\n * If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n * non-view functions.\n *\n * In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n * structs for simplicity.\n */\ninterface IBalancerQueries {\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n returns (uint256);\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @title IBalancerRelayer\n * @notice Allows safe multicall execution of a relayer's functions\n */\ninterface IBalancerRelayer {\n function getLibrary() external view returns (address);\n\n function getVault() external view returns (IVault);\n\n function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBALTokenHolder is IAuthentication {\n function getName() external view returns (string memory);\n\n function withdrawFunds(address recipient, uint256 amount) external;\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IVault.sol\";\nimport \"../liquidity-mining/IBalancerToken.sol\";\n\nimport \"./IBALTokenHolder.sol\";\n\ninterface IBALTokenHolderFactory {\n function getBalancerToken() external view returns (IBalancerToken);\n\n function getVault() external view returns (IVault);\n\n function isHolderFromFactory(address holder) external view returns (bool);\n\n function create(string memory name) external returns (IBALTokenHolder);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Source: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/interfaces/IButtonWrapper.sol\n// Interface definition for ButtonWrapper contract, which wraps an\n// underlying ERC20 token into a new ERC20 with different characteristics.\n// NOTE: \"uAmount\" => underlying token (wrapped) amount and\n// \"amount\" => wrapper token amount\ninterface IButtonWrapper {\n //--------------------------------------------------------------------------\n // ButtonWrapper write methods\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mint(uint256 amount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mintFor(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burn(uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burnTo(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of underlying tokens withdrawn.\n function burnAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of underlying tokens withdrawn.\n function burnAllTo(address to) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function deposit(uint256 uAmount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function depositFor(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdraw(uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdrawTo(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAllTo(address to) external returns (uint256);\n\n //--------------------------------------------------------------------------\n // ButtonWrapper view methods\n\n /// @return The address of the underlying token.\n function underlying() external view returns (address);\n\n /// @return The total underlying tokens held by the wrapper contract.\n function totalUnderlying() external view returns (uint256);\n\n /// @param who The account address.\n /// @return The underlying token balance of the account.\n function balanceOfUnderlying(address who) external view returns (uint256);\n\n /// @param uAmount The amount of underlying tokens.\n /// @return The amount of wrapper tokens exchangeable.\n function underlyingToWrapper(uint256 uAmount) external view returns (uint256);\n\n /// @param amount The amount of wrapper tokens.\n /// @return The amount of underlying tokens exchangeable.\n function wrapperToUnderlying(uint256 amount) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// Interface for MidasCapital. An open interest protocol based on\n// modified Fuse contracts. Anyone can create an deploy isolated\n// lending and borrowing pools with custom parameters.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface ICToken is IERC20 {\n // Error codes referenced in this file can be found here:\n // https://github.com/compound-finance/compound-protocol/blob/a3214f67b73310d547e00fc578e8355911c9d376/contracts/ErrorReporter.sol\n // solhint-disable-previous-line max-line-length\n\n /**\n * @dev Underlying asset for this CToken\n */\n function underlying() external view returns (address);\n\n /**\n * @notice Sender supplies assets into the market and receives cTokens in exchange\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param mintAmount The amount of the underlying asset to supply\n * @return uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\n */\n function mint(uint256 mintAmount) external returns (uint256);\n\n /**\n * @notice Sender redeems cTokens in exchange for the underlying asset\n * @dev Accrues interest whether or not the operation succeeds, unless reverted\n * @param redeemTokens The number of cTokens to redeem into underlying\n * @return uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\n */\n function redeem(uint256 redeemTokens) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IEulerToken is IERC20 {\n /**\n * @dev Convert an eToken balance to an underlying amount, taking into account current exchange rate\n * @param balance eToken balance, in internal book-keeping units (18 decimals)\n * @return Amount in underlying units, (same decimals as underlying token)\n */\n // https://github.com/euler-xyz/euler-contracts/blob/b1ee3265853628d5a529081d7908c38404201b4e/contracts/modules/EToken.sol#L104\n // solhint-disable-previous-line max-line-length\n function convertBalanceToUnderlying(uint256 balance) external view returns (uint256);\n\n /**\n * @dev Convert an underlying amount to an eToken balance, taking into account current exchange rate\n * @param underlyingAmount Amount in underlying units (same decimals as underlying token)\n * @return eToken balance, in internal book-keeping units (18 decimals)\n */\n // https://github.com/euler-xyz/euler-contracts/blob/b1ee3265853628d5a529081d7908c38404201b4e/contracts/modules/EToken.sol#L114\n // solhint-disable-previous-line max-line-length\n function convertUnderlyingToBalance(uint256 underlyingAmount) external view returns (uint256);\n\n /**\n * @dev Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens\n */\n function deposit(uint256 subAccountId, uint256 amount) external;\n\n /**\n * @dev Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens\n */\n function withdraw(uint256 subAccountId, uint256 amount) external;\n\n /**\n * @dev Address of underlying asset\n */\n function underlyingAsset() external view returns (address);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IGearboxDieselToken is IERC20 {\n /**\n * @dev returns the address of the vault\n */\n function owner() external view returns (address);\n}\n\ninterface IGearboxVault {\n /**\n * @dev returns the address of the underlying asset\n */\n function underlyingToken() external view returns (address);\n\n /**\n * @dev returns a 27 decimal fixed point 'ray' value so a rate of 1 is represented as 1e27\n */\n // solhint-disable-next-line func-name-mixedcase\n function getDieselRate_RAY() external view returns (uint256);\n\n /**\n * @dev converts diesel token amount to main token amount\n */\n function fromDiesel(uint256) external view returns (uint256);\n\n /**\n * @dev converts main token amount to diesel token amount\n */\n function toDiesel(uint256) external view returns (uint256);\n\n /**\n * @dev Adds liquidity to pool and sends diesel (LP) tokens back to the liquidity provider\n * The Referral code can be 0\n */\n function addLiquidity(\n uint256 underlyingAmount,\n address onBehalfOf,\n uint256 referralCode\n ) external;\n\n /**\n * @dev Removes liquidity from the pool and sends the underlying tokens to the `to` address\n */\n function removeLiquidity(uint256 dieselAmount, address to) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\n/**\n * @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n * of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n * preferred source nonetheless.\n */\ninterface IProtocolFeePercentagesProvider {\n // All fee percentages are 18-decimal fixed point numbers, so e.g. 1e18 = 100% and 1e16 = 1%.\n\n // Emitted when a new fee type is registered.\n event ProtocolFeeTypeRegistered(uint256 indexed feeType, string name, uint256 maximumPercentage);\n\n // Emitted when the value of a fee type changes.\n // IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n // ProtocolFeesCollector, which will result in this event not being emitted despite their value changing. Such usage\n // of the ProtocolFeesCollector is however discouraged: all state-changing interactions with it should originate in\n // this contract.\n event ProtocolFeePercentageChanged(uint256 indexed feeType, uint256 percentage);\n\n /**\n * @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n * as well as configurable via `setFeeTypePercentage`.\n *\n * `feeType` can be any arbitrary value (that is not in use).\n *\n * It is not possible to de-register fee types, nor change their name or maximum value.\n */\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external;\n\n /**\n * @dev Returns true if `feeType` has been registered and can be queried.\n */\n function isValidFeeType(uint256 feeType) external view returns (bool);\n\n /**\n * @dev Returns true if `value` is a valid percentage value for `feeType`.\n */\n function isValidFeeTypePercentage(uint256 feeType, uint256 value) external view returns (bool);\n\n /**\n * @dev Sets the percentage value for `feeType` to `newValue`.\n *\n * IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n * ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n * event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n * discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n * `setFlashLoanFeePercentage`.\n */\n function setFeeTypePercentage(uint256 feeType, uint256 newValue) external;\n\n /**\n * @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n * whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\n */\n function getFeeTypePercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s maximum value.\n */\n function getFeeTypeMaximumPercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s name.\n */\n function getFeeTypeName(uint256 feeType) external view returns (string memory);\n}\n\nlibrary ProtocolFeeType {\n // This list is not exhaustive - more fee types can be added to the system. It is expected for this list to be\n // extended with new fee types as they are registered, to keep them all in one place and reduce\n // likelihood of user error.\n\n // solhint-disable private-vars-leading-underscore\n uint256 internal constant SWAP = 0;\n uint256 internal constant FLASH_LOAN = 1;\n uint256 internal constant YIELD = 2;\n uint256 internal constant AUM = 3;\n // solhint-enable private-vars-leading-underscore\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IVault.sol\";\nimport \"./IProtocolFeesWithdrawer.sol\";\n\n/**\n * @title ProtocolFeeSplitter\n * @author Daoism Systems\n * @notice Distributes protocol fees collected from a particular pool between a DAO fund recipient\n * (e.g., the Balancer DAO treasury), and a beneficiary designated by the pool owner.\n * @dev By default, all funds go to the DAO. To claim a share of the protocol fees, pool owners\n * may call `setPoolBeneficiary`.\n */\ninterface IProtocolFeeSplitter {\n event FeesCollected(\n bytes32 indexed poolId,\n address indexed beneficiary,\n uint256 poolEarned,\n address indexed daoFundsRecipient,\n uint256 daoEarned\n );\n\n event PoolRevenueShareChanged(bytes32 indexed poolId, uint256 revenueSharePercentage);\n event PoolRevenueShareCleared(bytes32 indexed poolId);\n event PoolBeneficiaryChanged(bytes32 indexed poolId, address newBeneficiary);\n event DefaultRevenueSharePercentageChanged(uint256 revenueSharePercentage);\n event DAOFundsRecipientChanged(address newDaoFundsRecipient);\n\n // Fund recipients\n\n /**\n * @notice Returns the DAO funds recipient that will receive any balance not due to the pool beneficiary.\n */\n function getDaoFundsRecipient() external view returns (address);\n\n /**\n * @notice Allows a authorized user to change the DAO funds recipient.\n * @dev This is a permissioned function.\n * @param newDaoFundsRecipient - address of the new DAO funds recipient.\n */\n function setDaoFundsRecipient(address newDaoFundsRecipient) external;\n\n /**\n * @notice Allows a pool owner to change the revenue share beneficiary for a given pool.\n * @dev This is a permissioned function.\n * @param poolId - the poolId of the pool where the beneficiary will change.\n * @param newBeneficiary - address of the new beneficiary.\n */\n function setPoolBeneficiary(bytes32 poolId, address newBeneficiary) external;\n\n // Revenue share settings\n\n /**\n * @dev Returns the current protocol fee split configuration for a given pool.\n * @param poolId - the poolId of a pool with accrued protocol fees.\n * @return revenueSharePercentageOverride - the percentage of the split sent to the pool beneficiary.\n * @return beneficiary - the address of the pool beneficiary.\n */\n function getRevenueShareSettings(bytes32 poolId)\n external\n view\n returns (\n uint256 revenueSharePercentageOverride,\n address beneficiary,\n bool overrideSet\n );\n\n /**\n * @dev Returns the default revenue share percentage a pool will receive, unless overridden by a call\n * to `setRevenueSharePercentage`.\n */\n function getDefaultRevenueSharePercentage() external view returns (uint256);\n\n /**\n * @notice Allows an authorized user to change the default revenue share percentage.\n * @dev Set the default revenue share percentage, applied to pools where no override has been set\n * through `setRevenueSharePercentage`. Must be below the maximum allowed split.\n * This is a permissioned function.\n * @param defaultRevenueSharePercentage - new default revenue share percentage\n */\n function setDefaultRevenueSharePercentage(uint256 defaultRevenueSharePercentage) external;\n\n /**\n * @notice Allows an authorized user to change the revenueShare for a given pool.\n * @dev This is a permissioned function.\n * @param poolId - the poolId of the pool where the revenue share will change.\n * @param revenueSharePercentage - the new revenue share percentage.\n */\n function setRevenueSharePercentage(bytes32 poolId, uint256 revenueSharePercentage) external;\n\n /**\n * @notice Allows an authorized user to change the revenueShare for a given pool.\n * @dev This is a permissioned function.\n * @param poolId - the poolId of the pool where the revenue share will change.\n */\n function clearRevenueSharePercentage(bytes32 poolId) external;\n\n // Permissionless fee collection functions\n\n /**\n * @dev Returns the amount of fees that would be sent to each beneficiary in a call to `collectFees`.\n * @param poolId - the poolId of a pool with accrued protocol fees.\n * @return beneficiaryAmount - the BPT amount that would be sent to the pool beneficiary.\n * @return daoAmount - the BPT amount that would be sent to the DAO funds recipient.\n */\n function getAmounts(bytes32 poolId) external view returns (uint256 beneficiaryAmount, uint256 daoAmount);\n\n /**\n * @dev Permissionless function to collect and distribute any accrued protocol fees for the given pool.\n * @param poolId - the poolId of a pool with accrued protocol fees.\n * @return beneficiaryAmount - the BPT amount sent to the pool beneficiary.\n * @return daoAmount - the BPT amount sent to the DAO funds recipient.\n */\n function collectFees(bytes32 poolId) external returns (uint256 beneficiaryAmount, uint256 daoAmount);\n\n // Misc getters\n\n /**\n * @notice Returns the `ProtocolFeesWithdrawer`, used to withdraw funds from the `ProtocolFeesCollector`.\n */\n function getProtocolFeesWithdrawer() external view returns (IProtocolFeesWithdrawer);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IProtocolFeesCollector.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ninterface IProtocolFeesWithdrawer {\n event TokenAllowlisted(IERC20 token);\n event TokenDenylisted(IERC20 token);\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) external view returns (bool);\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) external view returns (bool);\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view returns (IERC20);\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view returns (uint256);\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external;\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Registry of protocol IDs for external integrations with Balancer. The IDs chosen are arbitrary and do not affect\n * behavior of any Balancer contracts. They are used only to tag specific contracts (usually pools) at the data layer.\n */\ninterface IProtocolIdRegistry {\n // Emitted when a new protocol ID is registered.\n event ProtocolIdRegistered(uint256 indexed protocolId, string name);\n\n // Emitted when a protocol IDs name has been updated.\n event ProtocolIdRenamed(uint256 indexed protocolId, string name);\n\n /**\n * @dev Registers an ID (and name) to differentiate among protocols. Protocol IDs cannot be deregistered.\n */\n function registerProtocolId(uint256 protocolId, string memory name) external;\n\n /**\n * @dev Changes the name of an existing protocol ID. Should only be used to update in the case of mistakes.\n */\n function renameProtocolId(uint256 protocolId, string memory newName) external;\n\n /**\n * @dev Returns true if `protocolId` has been registered and can be queried.\n */\n function isValidProtocolId(uint256 protocolId) external view returns (bool);\n\n /**\n * @dev Returns the name associated with a given `protocolId`.\n */\n function getProtocolName(uint256 protocolId) external view returns (string memory);\n}\n\nlibrary ProtocolId {\n // This list is not exhaustive - more protocol IDs can be added to the system. It is expected for this list to be\n // extended with new protocol IDs as they are registered, to keep them all in one place and reduce\n // likelihood of user error.\n // solhint-disable private-vars-leading-underscore\n uint256 internal constant AAVE_V1 = 0;\n uint256 internal constant AAVE_V2 = 1;\n uint256 internal constant AAVE_V3 = 2;\n uint256 internal constant AMPLEFORTH = 3;\n uint256 internal constant BEEFY = 4;\n uint256 internal constant EULER = 5;\n uint256 internal constant GEARBOX = 6;\n uint256 internal constant IDLE = 7;\n uint256 internal constant MORPHO = 8;\n uint256 internal constant RADIANT = 9;\n uint256 internal constant REAPER = 10;\n uint256 internal constant SILO = 11;\n uint256 internal constant STARGATE = 12;\n uint256 internal constant STURDY = 13;\n uint256 internal constant TESSERA = 14;\n uint256 internal constant TETU = 15;\n uint256 internal constant YEARN = 16;\n uint256 internal constant MIDAS = 17;\n uint256 internal constant AGAVE = 18;\n // solhint-enable private-vars-leading-underscore\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// Source: https://github.com/Byte-Masons/beet-strat/blob/master/contracts/ReaperVaultv1_4.sol\n// Interface definition for the ReaperTokenVault contract, a single strategy vault\n// for Reaper Farm crypts. The pricePerFullShare is always represented with 18 decimals,\n// regardless of the underlying token decimals.\n// ie: If ppfs === 1e18, 1 USDC === 0.000_000_000_001_000_000 rfUSDC\n// ie: If ppfs === 1e18, 1 DAI === 1 rfDAI\ninterface IReaperTokenVault is IERC20 {\n /**\n * @dev returns the address of the vault's underlying asset (mainToken)\n */\n function token() external view returns (address);\n\n /**\n * @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\n */\n function getPricePerFullShare() external view returns (uint256);\n\n /**\n * @notice Deposits `_amount` `token`, issuing shares to the caller.\n * If Panic is activated, deposits will not be accepted and this call will fail.\n * @param _amount The quantity of tokens to deposit.\n **/\n function deposit(uint256 _amount) external;\n\n /**\n * @notice Withdraws the calling account's tokens from this Vault,\n * redeeming amount `_shares` for an appropriate amount of tokens.\n **/\n function withdraw(uint256 _shares) external;\n\n /**\n * @dev returns the number of decimals for this vault token.\n * For reaper single-strat vaults, the decimals are fixed to 18.\n */\n function decimals() external view returns (uint8);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ISilo.sol\";\n\ninterface IShareToken is IERC20 {\n /**\n * @dev returns the underlying asset\n */\n function asset() external view returns (address);\n\n /**\n * @dev returns the address of the silo\n */\n function silo() external view returns (ISilo);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IShareToken.sol\";\n\ninterface IBaseSilo {\n /// Storage struct that holds all required data for a single token market\n struct AssetStorage {\n // Token that represents a share in totalDeposits of Silo\n IShareToken collateralToken;\n // Token that represents a share in collateralOnlyDeposits of Silo\n IShareToken collateralOnlyToken;\n // Token that represents a share in totalBorrowAmount of Silo\n IShareToken debtToken;\n // COLLATERAL: Amount of asset token that has been deposited to Silo with interest earned by depositors.\n // It also includes token amount that has been borrowed.\n uint256 totalDeposits;\n // COLLATERAL ONLY: Amount of asset token that has been deposited to Silo that can ONLY be used\n // as collateral. These deposits do NOT earn interest and CANNOT be borrowed.\n uint256 collateralOnlyDeposits;\n // DEBT: Amount of asset token that has been borrowed with accrued interest.\n uint256 totalBorrowAmount;\n }\n\n /**\n * @dev returns the asset storage struct\n * @dev AssetStorage struct contains necessary information for calculating shareToken exchange rates\n */\n function assetStorage(address _asset) external view returns (AssetStorage memory);\n}\n\ninterface ISilo is IBaseSilo {\n /**\n * @dev Deposits funds into the Silo\n * @param _asset The address of the token to deposit\n * @param _depositor The address of the recipient of collateral tokens\n * @param _amount The amount of the token to deposit\n * @param _collateralOnly: True means your shareToken is protected (cannot be swapped for interest)\n * @return collateralAmount deposited amount\n * @return collateralShare user collateral shares based on deposited amount\n */\n function depositFor(\n address _asset,\n address _depositor,\n uint256 _amount,\n bool _collateralOnly\n ) external returns (uint256 collateralAmount, uint256 collateralShare);\n\n /**\n * @dev Withdraw `_amount` of `_asset` tokens from the Silo to `msg.sender`\n * @param _asset The address of the token to withdraw\n * @param _amount The amount of the token to withdraw\n * @param _collateralOnly True if withdrawing collateral only deposit\n * @return withdrawnAmount withdrawn amount that was transferred to user\n * @return withdrawnShare burned share based on `withdrawnAmount`\n */\n function withdraw(\n address _asset,\n uint256 _amount,\n bool _collateralOnly\n ) external returns (uint256 withdrawnAmount, uint256 withdrawnShare);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/interfaces/IStaticATokenLM.sol\n\ninterface IStaticATokenLM is IERC20 {\n struct SignatureParams {\n uint8 v;\n bytes32 r;\n bytes32 s;\n }\n\n /**\n * @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n * @param recipient The address that will receive the static aTokens\n * @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @return uint256 The amount of StaticAToken minted, static balance\n **/\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external returns (uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in static balance of StaticAToken\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdrawDynamicAmount(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Implements the permit function as for\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner The owner of the funds\n * @param spender The spender\n * @param value The amount\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param v Signature param\n * @param s Signature param\n * @param r Signature param\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @notice Allows to deposit on Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param depositor Address from which the funds to deposit are going to be pulled\n * @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n * @param value The amount to deposit\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return uint256 The amount of StaticAToken minted, static balance\n */\n function metaDeposit(\n address depositor,\n address recipient,\n uint256 value,\n uint16 referralCode,\n bool fromUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256);\n\n /**\n * @notice Allows to withdraw from Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner Address owning the staticATokens\n * @param recipient Address that will receive the underlying withdrawn from Aave\n * @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n * @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n */\n function metaWithdraw(\n address owner,\n address recipient,\n uint256 staticAmount,\n uint256 dynamicAmount,\n bool toUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256, uint256);\n\n /**\n * @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n * @param account The address of the user\n * @return uint256 The aToken balance\n **/\n function dynamicBalanceOf(address account) external view returns (uint256);\n\n /**\n * @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n * using the current liquidity index on Aave\n * @param amount The amount to convert from\n * @return uint256 The dynamic amount\n **/\n function staticToDynamicAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n * scaled balance, function of the principal and the liquidity index\n * @param amount The amount to convert from\n * @return uint256 The static (scaled) amount\n **/\n function dynamicToStaticAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n * as it can be considered as an ever-increasing exchange rate\n * @return The liquidity index\n **/\n function rate() external view returns (uint256);\n\n /**\n * @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n * @return bytes32 The domain separator\n **/\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\n */\n function collectAndUpdateRewards() external;\n\n /**\n * @notice Claim rewards on behalf of a user and send them to a receiver\n * @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n * @param onBehalfOf The address to claim on behalf of\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsOnBehalf(\n address onBehalfOf,\n address receiver,\n bool forceUpdate\n ) external;\n\n /**\n * @notice Claim rewards and send them to a receiver\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewards(address receiver, bool forceUpdate) external;\n\n /**\n * @notice Claim rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsToSelf(bool forceUpdate) external;\n\n /**\n * @notice Get the total claimable rewards of the contract.\n * @return The current balance + pending rewards from the `_incentivesController`\n */\n function getTotalClaimableRewards() external view returns (uint256);\n\n /**\n * @notice Get the total claimable rewards for a user in WAD\n * @param user The address of the user\n * @return The claimable amount of rewards in WAD\n */\n function getClaimableRewards(address user) external view returns (uint256);\n\n /**\n * @notice The unclaimed rewards for a user in WAD\n * @param user The address of the user\n * @return The unclaimed amount of rewards in WAD\n */\n function getUnclaimedRewards(address user) external view returns (uint256);\n\n function getAccRewardsPerToken() external view returns (uint256);\n\n function getLifetimeRewardsClaimed() external view returns (uint256);\n\n function getLifetimeRewards() external view returns (uint256);\n\n function getLastRewardBlock() external view returns (uint256);\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function INCENTIVES_CONTROLLER() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function ATOKEN() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function REWARD_TOKEN() external returns (IERC20);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/816bf1d0995ba5cfdfc264de4acda34a7fe93eba/contracts/0.4.24/Lido.sol\n\ninterface IstETH is IERC20 {\n function submit(address referral) external payable returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface ITetuSmartVault is IERC20 {\n function deposit(uint256 amount) external;\n\n function depositFor(uint256 amount, address holder) external;\n\n function underlyingBalanceInVault() external view returns (uint256);\n\n function withdraw(uint256 numberOfShares) external;\n\n function underlyingBalanceWithInvestmentForHolder(address holder) external view returns (uint256);\n\n function underlying() external view returns (address);\n\n function underlyingUnit() external view returns (uint256);\n\n function getPricePerFullShare() external view returns (uint256);\n\n function strategy() external view returns (address);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface ITetuStrategy {\n function investedUnderlyingBalance() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IButtonWrapper.sol\";\n\n// Balancer only supports ERC20 tokens, so we use this intermediate interface\n// to enforce ERC20-ness of UnbuttonTokens.\ninterface IUnbuttonToken is IButtonWrapper, IERC20 {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IstETH.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/2b46615a11dee77d4d22066f942f6c6afab9b87a/contracts/0.6.12/WstETH.sol\n\n/**\n * @title StETH token wrapper with static balances.\n * @dev It's an ERC20 token that represents the account's share of the total\n * supply of stETH tokens. WstETH token's balance only changes on transfers,\n * unlike StETH that is also changed when oracles report staking rewards and\n * penalties. It's a \"power user\" token for DeFi protocols which don't\n * support rebasable tokens.\n *\n * The contract is also a trustless wrapper that accepts stETH tokens and mints\n * wstETH in return. Then the user unwraps, the contract burns user's wstETH\n * and sends user locked stETH in return.\n *\n * The contract provides the staking shortcut: user can send ETH with regular\n * transfer and get wstETH in return. The contract will send ETH to Lido submit\n * method, staking it and wrapping the received stETH.\n *\n */\ninterface IwstETH is IERC20 {\n function stETH() external returns (IstETH);\n\n /**\n * @notice Exchanges stETH to wstETH\n * @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n * @dev Requirements:\n * - `_stETHAmount` must be non-zero\n * - msg.sender must approve at least `_stETHAmount` stETH to this\n * contract.\n * - msg.sender must have at least `_stETHAmount` of stETH.\n * User should first approve _stETHAmount to the WstETH contract\n * @return Amount of wstETH user receives after wrap\n */\n function wrap(uint256 _stETHAmount) external returns (uint256);\n\n /**\n * @notice Exchanges wstETH to stETH\n * @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n * @dev Requirements:\n * - `_wstETHAmount` must be non-zero\n * - msg.sender must have at least `_wstETHAmount` wstETH.\n * @return Amount of stETH user receives after unwrap\n */\n function unwrap(uint256 _wstETHAmount) external returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a given amount of stETH\n * @param _stETHAmount amount of stETH\n * @return Amount of wstETH for a given stETH amount\n */\n function getWstETHByStETH(uint256 _stETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a given amount of wstETH\n * @param _wstETHAmount amount of wstETH\n * @return Amount of stETH for a given wstETH amount\n */\n function getStETHByWstETH(uint256 _wstETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a one stETH\n * @return Amount of stETH for 1 wstETH\n */\n function stEthPerToken() external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a one wstETH\n * @return Amount of wstETH for a 1 stETH\n */\n function tokensPerStEth() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IYearnTokenVault is IERC20 {\n /**\n * @dev returns the address of the vault's underlying asset (mainToken)\n */\n function token() external view returns (address);\n\n /**\n * @dev returns the price for a single Vault share (ie yvDAI). The pricePerShare is represented\n * in the same decimals as the underlying asset (ie: 6 decimals for USDC)\n */\n function pricePerShare() external view returns (uint256);\n\n /**\n * @notice Deposits `_amount` `token`, issuing shares to `recipient`.\n * If the Vault is in Emergency Shutdown, deposits will not be accepted and this call will fail.\n * @param _amount The quantity of tokens to deposit, defaults to all.\n * @param recipient The address to issue the shares in this Vault to. Defaults to the caller's address.\n * @return The issued Vault shares.\n */\n function deposit(uint256 _amount, address recipient) external returns (uint256);\n\n /**\n * @notice Withdraws the calling account's tokens from this Vault,\n * redeeming amount `_shares` for an appropriate amount of tokens.\n * See note on `setWithdrawalQueue` for further details of withdrawal ordering and behavior.\n * @param maxShares How many shares to try and redeem for tokens, defaults to all.\n * @param recipient The address to issue the shares in this Vault to. Defaults to the caller's address.\n * @return redeemed: The quantity of tokens redeemed for `_shares`.\n */\n function withdraw(uint256 maxShares, address recipient) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n * types.\n *\n * This concept is unrelated to a Pool's Asset Managers.\n */\ninterface IAsset {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthorizer {\n /**\n * @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n */\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IVault.sol\";\nimport \"./IPoolSwapStructs.sol\";\n\n/**\n * @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n * the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n * either IGeneralPool or IMinimalSwapInfoPool\n */\ninterface IBasePool is IPoolSwapStructs {\n /**\n * @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n * each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n * The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n * the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n *\n * Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n *\n * `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n * designated to receive any benefits (typically pool shares). `balances` contains the total balances\n * for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as minting pool shares.\n */\n function onJoinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n * tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n * to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n * as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n * `protocolSwapFeePercentage`.\n *\n * Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n *\n * `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n * to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n * the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as burning pool shares.\n */\n function onExitPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\n */\n function getPoolId() external view returns (bytes32);\n\n /**\n * @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n * 10% swap fee.\n */\n function getSwapFeePercentage() external view returns (uint256);\n\n /**\n * @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n * not relevant for outside parties, but which might be useful for some types of Pools.\n */\n function getScalingFactors() external view returns (uint256[] memory);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Inspired by Aave Protocol's IFlashLoanReceiver.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IFlashLoanRecipient {\n /**\n * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n *\n * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n * Vault, or else the entire flash loan will revert.\n *\n * `userData` is the same value passed in the `IVault.flashLoan` call.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory feeAmounts,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\n\ninterface IPoolSwapStructs {\n // This is not really an interface - it just defines common structs used by other interfaces: IGeneralPool and\n // IMinimalSwapInfoPool.\n //\n // This data structure represents a request for a token swap, where `kind` indicates the swap type ('given in' or\n // 'given out') which indicates whether or not the amount sent by the pool is known.\n //\n // The pool receives `tokenIn` and sends `tokenOut`. `amount` is the number of `tokenIn` tokens the pool will take\n // in, or the number of `tokenOut` tokens the Pool will send out, depending on the given swap `kind`.\n //\n // All other fields are not strictly necessary for most swaps, but are provided to support advanced scenarios in\n // some Pools.\n //\n // `poolId` is the ID of the Pool involved in the swap - this is useful for Pool contracts that implement more than\n // one Pool.\n //\n // The meaning of `lastChangeBlock` depends on the Pool specialization:\n // - Two Token or Minimal Swap Info: the last block in which either `tokenIn` or `tokenOut` changed its total\n // balance.\n // - General: the last block in which *any* of the Pool's registered tokens changed its total balance.\n //\n // `from` is the origin address for the funds the Pool receives, and `to` is the destination address\n // where the Pool sends the outgoing tokens.\n //\n // `userData` is extra data provided by the caller - typically a signature from a trusted party.\n struct SwapRequest {\n IVault.SwapKind kind;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amount;\n // Misc data\n bytes32 poolId;\n uint256 lastChangeBlock;\n address from;\n address to;\n bytes userData;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\nimport \"./IAuthorizer.sol\";\n\ninterface IProtocolFeesCollector {\n event SwapFeePercentageChanged(uint256 newSwapFeePercentage);\n event FlashLoanFeePercentageChanged(uint256 newFlashLoanFeePercentage);\n\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n function setSwapFeePercentage(uint256 newSwapFeePercentage) external;\n\n function setFlashLoanFeePercentage(uint256 newFlashLoanFeePercentage) external;\n\n function getSwapFeePercentage() external view returns (uint256);\n\n function getFlashLoanFeePercentage() external view returns (uint256);\n\n function getCollectedFeeAmounts(IERC20[] memory tokens) external view returns (uint256[] memory feeAmounts);\n\n function getAuthorizer() external view returns (IAuthorizer);\n\n function vault() external view returns (IVault);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/helpers/ISignaturesValidator.sol\";\nimport \"../solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"../solidity-utils/misc/IWETH.sol\";\n\nimport \"./IAsset.sol\";\nimport \"./IAuthorizer.sol\";\nimport \"./IFlashLoanRecipient.sol\";\nimport \"./IProtocolFeesCollector.sol\";\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n * don't override one of these declarations.\n */\ninterface IVault is ISignaturesValidator, ITemporarilyPausable, IAuthentication {\n // Generalities about the Vault:\n //\n // - Whenever documentation refers to 'tokens', it strictly refers to ERC20-compliant token contracts. Tokens are\n // transferred out of the Vault by calling the `IERC20.transfer` function, and transferred in by calling\n // `IERC20.transferFrom`. In these cases, the sender must have previously allowed the Vault to use their tokens by\n // calling `IERC20.approve`. The only deviation from the ERC20 standard that is supported is functions not returning\n // a boolean value: in these scenarios, a non-reverting call is assumed to be successful.\n //\n // - All non-view functions in the Vault are non-reentrant: calling them while another one is mid-execution (e.g.\n // while execution control is transferred to a token contract during a swap) will result in a revert. View\n // functions can be called in a re-reentrant way, but doing so might cause them to return inconsistent results.\n // Contracts calling view functions in the Vault must make sure the Vault has not already been entered.\n //\n // - View functions revert if referring to either unregistered Pools, or unregistered tokens for registered Pools.\n\n // Authorizer\n //\n // Some system actions are permissioned, like setting and collecting protocol fees. This permissioning system exists\n // outside of the Vault in the Authorizer contract: the Vault simply calls the Authorizer to check if the caller\n // can perform a given action.\n\n /**\n * @dev Returns the Vault's Authorizer.\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n *\n * Emits an `AuthorizerChanged` event.\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n\n /**\n * @dev Emitted when a new authorizer is set by `setAuthorizer`.\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n // Relayers\n //\n // Additionally, it is possible for an account to perform certain actions on behalf of another one, using their\n // Vault ERC20 allowance and Internal Balance. These accounts are said to be 'relayers' for these Vault functions,\n // and are expected to be smart contracts with sound authentication mechanisms. For an account to be able to wield\n // this power, two things must occur:\n // - The Authorizer must grant the account the permission to be a relayer for the relevant Vault function. This\n // means that Balancer governance must approve each individual contract to act as a relayer for the intended\n // functions.\n // - Each user must approve the relayer to act on their behalf.\n // This double protection means users cannot be tricked into approving malicious relayers (because they will not\n // have been allowed by the Authorizer via governance), nor can malicious relayers approved by a compromised\n // Authorizer or governance drain user funds, since they would also need to be approved by each individual user.\n\n /**\n * @dev Returns true if `user` has approved `relayer` to act as a relayer for them.\n */\n function hasApprovedRelayer(address user, address relayer) external view returns (bool);\n\n /**\n * @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n *\n * Emits a `RelayerApprovalChanged` event.\n */\n function setRelayerApproval(\n address sender,\n address relayer,\n bool approved\n ) external;\n\n /**\n * @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\n */\n event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved);\n\n // Internal Balance\n //\n // Users can deposit tokens into the Vault, where they are allocated to their Internal Balance, and later\n // transferred or withdrawn. It can also be used as a source of tokens when joining Pools, as a destination\n // when exiting them, and as either when performing swaps. This usage of Internal Balance results in greatly reduced\n // gas costs when compared to relying on plain ERC20 transfers, leading to large savings for frequent users.\n //\n // Internal Balance management features batching, which means a single contract call can be used to perform multiple\n // operations of different kinds, with different senders and recipients, at once.\n\n /**\n * @dev Returns `user`'s Internal Balance for a set of tokens.\n */\n function getInternalBalance(address user, IERC20[] memory tokens) external view returns (uint256[] memory);\n\n /**\n * @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n * and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n * it lets integrators reuse a user's Vault allowance.\n *\n * For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\n */\n function manageUserBalance(UserBalanceOp[] memory ops) external payable;\n\n /**\n * @dev Data for `manageUserBalance` operations, which include the possibility for ETH to be sent and received\n without manual WETH wrapping or unwrapping.\n */\n struct UserBalanceOp {\n UserBalanceOpKind kind;\n IAsset asset;\n uint256 amount;\n address sender;\n address payable recipient;\n }\n\n // There are four possible operations in `manageUserBalance`:\n //\n // - DEPOSIT_INTERNAL\n // Increases the Internal Balance of the `recipient` account by transferring tokens from the corresponding\n // `sender`. The sender must have allowed the Vault to use their tokens via `IERC20.approve()`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset and forwarding ETH in the call: it will be wrapped\n // and deposited as WETH. Any ETH amount remaining will be sent back to the caller (not the sender, which is\n // relevant for relayers).\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - WITHDRAW_INTERNAL\n // Decreases the Internal Balance of the `sender` account by transferring tokens to the `recipient`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset. This will deduct WETH instead, unwrap it and send\n // it to the recipient as ETH.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_INTERNAL\n // Transfers tokens from the Internal Balance of the `sender` account to the Internal Balance of `recipient`.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_EXTERNAL\n // Transfers tokens from `sender` to `recipient`, using the Vault's ERC20 allowance. This is typically used by\n // relayers, as it lets them reuse a user's Vault allowance.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `ExternalBalanceTransfer` event.\n\n enum UserBalanceOpKind { DEPOSIT_INTERNAL, WITHDRAW_INTERNAL, TRANSFER_INTERNAL, TRANSFER_EXTERNAL }\n\n /**\n * @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n * interacting with Pools using Internal Balance.\n *\n * Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n * address.\n */\n event InternalBalanceChanged(address indexed user, IERC20 indexed token, int256 delta);\n\n /**\n * @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\n */\n event ExternalBalanceTransfer(IERC20 indexed token, address indexed sender, address recipient, uint256 amount);\n\n // Pools\n //\n // There are three specialization settings for Pools, which allow for cheaper swaps at the cost of reduced\n // functionality:\n //\n // - General: no specialization, suited for all Pools. IGeneralPool is used for swap request callbacks, passing the\n // balance of all tokens in the Pool. These Pools have the largest swap costs (because of the extra storage reads),\n // which increase with the number of registered tokens.\n //\n // - Minimal Swap Info: IMinimalSwapInfoPool is used instead of IGeneralPool, which saves gas by only passing the\n // balance of the two tokens involved in the swap. This is suitable for some pricing algorithms, like the weighted\n // constant product one popularized by Balancer V1. Swap costs are smaller compared to general Pools, and are\n // independent of the number of registered tokens.\n //\n // - Two Token: only allows two tokens to be registered. This achieves the lowest possible swap gas cost. Like\n // minimal swap info Pools, these are called via IMinimalSwapInfoPool.\n\n enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN }\n\n /**\n * @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n * is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n * changed.\n *\n * The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n * depending on the chosen specialization setting. This contract is known as the Pool's contract.\n *\n * Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n * multiple Pools may share the same contract.\n *\n * Emits a `PoolRegistered` event.\n */\n function registerPool(PoolSpecialization specialization) external returns (bytes32);\n\n /**\n * @dev Emitted when a Pool is registered by calling `registerPool`.\n */\n event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, PoolSpecialization specialization);\n\n /**\n * @dev Returns a Pool's contract address and specialization setting.\n */\n function getPool(bytes32 poolId) external view returns (address, PoolSpecialization);\n\n /**\n * @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n * exit by receiving registered tokens, and can only swap registered tokens.\n *\n * Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n * of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n * ascending order.\n *\n * The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n * Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n * depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n * expected to be highly secured smart contracts with sound design principles, and the decision to register an\n * Asset Manager should not be made lightly.\n *\n * Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n * Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n * different Asset Manager.\n *\n * Emits a `TokensRegistered` event.\n */\n function registerTokens(\n bytes32 poolId,\n IERC20[] memory tokens,\n address[] memory assetManagers\n ) external;\n\n /**\n * @dev Emitted when a Pool registers tokens by calling `registerTokens`.\n */\n event TokensRegistered(bytes32 indexed poolId, IERC20[] tokens, address[] assetManagers);\n\n /**\n * @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n * balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n * must be deregistered in the same `deregisterTokens` call.\n *\n * A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n *\n * Emits a `TokensDeregistered` event.\n */\n function deregisterTokens(bytes32 poolId, IERC20[] memory tokens) external;\n\n /**\n * @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\n */\n event TokensDeregistered(bytes32 indexed poolId, IERC20[] tokens);\n\n /**\n * @dev Returns detailed information for a Pool's registered token.\n *\n * `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n * withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n * equals the sum of `cash` and `managed`.\n *\n * Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n * `managed` or `total` balance to be greater than 2^112 - 1.\n *\n * `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n * join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n * example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n * change for this purpose, and will update `lastChangeBlock`.\n *\n * `assetManager` is the Pool's token Asset Manager.\n */\n function getPoolTokenInfo(bytes32 poolId, IERC20 token)\n external\n view\n returns (\n uint256 cash,\n uint256 managed,\n uint256 lastChangeBlock,\n address assetManager\n );\n\n /**\n * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n * the tokens' `balances` changed.\n *\n * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n *\n * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n * order as passed to `registerTokens`.\n *\n * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n * instead.\n */\n function getPoolTokens(bytes32 poolId)\n external\n view\n returns (\n IERC20[] memory tokens,\n uint256[] memory balances,\n uint256 lastChangeBlock\n );\n\n /**\n * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n * Pool shares.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n * these maximums.\n *\n * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n * back to the caller (not the sender, which is important for relayers).\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n * `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n *\n * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n * withdrawn from Internal Balance: attempting to do so will trigger a revert.\n *\n * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n * directly to the Pool's contract, as is `recipient`.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function joinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n JoinPoolRequest memory request\n ) external payable;\n\n struct JoinPoolRequest {\n IAsset[] assets;\n uint256[] maxAmountsIn;\n bytes userData;\n bool fromInternalBalance;\n }\n\n /**\n * @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n * trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n * Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n * `getPoolTokenInfo`).\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n * token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n * it just enforces these minimums.\n *\n * If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n * enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n * of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n * be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n * final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n *\n * If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n * an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n * do so will trigger a revert.\n *\n * `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n * `tokens` array. This array must match the Pool's registered tokens.\n *\n * This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n * passed directly to the Pool's contract.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function exitPool(\n bytes32 poolId,\n address sender,\n address payable recipient,\n ExitPoolRequest memory request\n ) external;\n\n struct ExitPoolRequest {\n IAsset[] assets;\n uint256[] minAmountsOut;\n bytes userData;\n bool toInternalBalance;\n }\n\n /**\n * @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\n */\n event PoolBalanceChanged(\n bytes32 indexed poolId,\n address indexed liquidityProvider,\n IERC20[] tokens,\n int256[] deltas,\n uint256[] protocolFeeAmounts\n );\n\n enum PoolBalanceChangeKind { JOIN, EXIT }\n\n // Swaps\n //\n // Users can swap tokens with Pools by calling the `swap` and `batchSwap` functions. To do this,\n // they need not trust Pool contracts in any way: all security checks are made by the Vault. They must however be\n // aware of the Pools' pricing algorithms in order to estimate the prices Pools will quote.\n //\n // The `swap` function executes a single swap, while `batchSwap` can perform multiple swaps in sequence.\n // In each individual swap, tokens of one kind are sent from the sender to the Pool (this is the 'token in'),\n // and tokens of another kind are sent from the Pool to the recipient in exchange (this is the 'token out').\n // More complex swaps, such as one token in to multiple tokens out can be achieved by batching together\n // individual swaps.\n //\n // There are two swap kinds:\n // - 'given in' swaps, where the amount of tokens in (sent to the Pool) is known, and the Pool determines (via the\n // `onSwap` hook) the amount of tokens out (to send to the recipient).\n // - 'given out' swaps, where the amount of tokens out (received from the Pool) is known, and the Pool determines\n // (via the `onSwap` hook) the amount of tokens in (to receive from the sender).\n //\n // Additionally, it is possible to chain swaps using a placeholder input amount, which the Vault replaces with\n // the calculated output of the previous swap. If the previous swap was 'given in', this will be the calculated\n // tokenOut amount. If the previous swap was 'given out', it will use the calculated tokenIn amount. These extended\n // swaps are known as 'multihop' swaps, since they 'hop' through a number of intermediate tokens before arriving at\n // the final intended token.\n //\n // In all cases, tokens are only transferred in and out of the Vault (or withdrawn from and deposited into Internal\n // Balance) after all individual swaps have been completed, and the net token balance change computed. This makes\n // certain swap patterns, such as multihops, or swaps that interact with the same token pair in multiple Pools, cost\n // much less gas than they would otherwise.\n //\n // It also means that under certain conditions it is possible to perform arbitrage by swapping with multiple\n // Pools in a way that results in net token movement out of the Vault (profit), with no tokens being sent in (only\n // updating the Pool's internal accounting).\n //\n // To protect users from front-running or the market changing rapidly, they supply a list of 'limits' for each token\n // involved in the swap, where either the maximum number of tokens to send (by passing a positive value) or the\n // minimum amount of tokens to receive (by passing a negative value) is specified.\n //\n // Additionally, a 'deadline' timestamp can also be provided, forcing the swap to fail if it occurs after\n // this point in time (e.g. if the transaction failed to be included in a block promptly).\n //\n // If interacting with Pools that hold WETH, it is possible to both send and receive ETH directly: the Vault will do\n // the wrapping and unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be\n // passed in the `assets` array instead of the WETH address. Note that it is possible to combine ETH and WETH in the\n // same swap. Any excess ETH will be sent back to the caller (not the sender, which is relevant for relayers).\n //\n // Finally, Internal Balance can be used when either sending or receiving tokens.\n\n enum SwapKind { GIVEN_IN, GIVEN_OUT }\n\n /**\n * @dev Performs a swap with a single Pool.\n *\n * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n * taken from the Pool, which must be greater than or equal to `limit`.\n *\n * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n * sent to the Pool, which must be less than or equal to `limit`.\n *\n * Internal Balance usage and the recipient are determined by the `funds` struct.\n *\n * Emits a `Swap` event.\n */\n function swap(\n SingleSwap memory singleSwap,\n FundManagement memory funds,\n uint256 limit,\n uint256 deadline\n ) external payable returns (uint256);\n\n /**\n * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on\n * the `kind` value.\n *\n * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address).\n * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct SingleSwap {\n bytes32 poolId;\n SwapKind kind;\n IAsset assetIn;\n IAsset assetOut;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n * the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n *\n * Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n * Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n * the same index in the `assets` array.\n *\n * Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n * Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n * `amountOut` depending on the swap kind.\n *\n * Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n * of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n * the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n *\n * The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n * or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n * out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n * or unwrapped from WETH by the Vault.\n *\n * Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n * the minimum or maximum amount of each token the vault is allowed to transfer.\n *\n * `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n * equivalent `swap` call.\n *\n * Emits `Swap` events.\n */\n function batchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds,\n int256[] memory limits,\n uint256 deadline\n ) external payable returns (int256[] memory);\n\n /**\n * @dev Data for each individual swap executed by `batchSwap`. The asset in and out fields are indexes into the\n * `assets` array passed to that function, and ETH assets are converted to WETH.\n *\n * If `amount` is zero, the multihop mechanism is used to determine the actual amount based on the amount in/out\n * from the previous swap, depending on the swap kind.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct BatchSwapStep {\n bytes32 poolId;\n uint256 assetInIndex;\n uint256 assetOutIndex;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Emitted for each individual swap performed by `swap` or `batchSwap`.\n */\n event Swap(\n bytes32 indexed poolId,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n\n /**\n * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the\n * `recipient` account.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20\n * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender`\n * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of\n * `joinPool`.\n *\n * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of\n * transferred. This matches the behavior of `exitPool`.\n *\n * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a\n * revert.\n */\n struct FundManagement {\n address sender;\n bool fromInternalBalance;\n address payable recipient;\n bool toInternalBalance;\n }\n\n /**\n * @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n * simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n *\n * Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n * the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n * receives are the same that an equivalent `batchSwap` call would receive.\n *\n * Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n * This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n * approve them for the Vault, or even know a user's address.\n *\n * Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n * eth_call instead of eth_sendTransaction.\n */\n function queryBatchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n // Flash Loans\n\n /**\n * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n * and then reverting unless the tokens plus a proportional protocol fee have been returned.\n *\n * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n * for each token contract. `tokens` must be sorted in ascending order.\n *\n * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n * `receiveFlashLoan` call.\n *\n * Emits `FlashLoan` events.\n */\n function flashLoan(\n IFlashLoanRecipient recipient,\n IERC20[] memory tokens,\n uint256[] memory amounts,\n bytes memory userData\n ) external;\n\n /**\n * @dev Emitted for each individual flash loan performed by `flashLoan`.\n */\n event FlashLoan(IFlashLoanRecipient indexed recipient, IERC20 indexed token, uint256 amount, uint256 feeAmount);\n\n // Asset Management\n //\n // Each token registered for a Pool can be assigned an Asset Manager, which is able to freely withdraw the Pool's\n // tokens from the Vault, deposit them, or assign arbitrary values to its `managed` balance (see\n // `getPoolTokenInfo`). This makes them extremely powerful and dangerous. Even if an Asset Manager only directly\n // controls one of the tokens in a Pool, a malicious manager could set that token's balance to manipulate the\n // prices of the other tokens, and then drain the Pool with swaps. The risk of using Asset Managers is therefore\n // not constrained to the tokens they are managing, but extends to the entire Pool's holdings.\n //\n // However, a properly designed Asset Manager smart contract can be safely used for the Pool's benefit,\n // for example by lending unused tokens out for interest, or using them to participate in voting protocols.\n //\n // This concept is unrelated to the IAsset interface.\n\n /**\n * @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n *\n * Pool Balance management features batching, which means a single contract call can be used to perform multiple\n * operations of different kinds, with different Pools and tokens, at once.\n *\n * For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\n */\n function managePoolBalance(PoolBalanceOp[] memory ops) external;\n\n struct PoolBalanceOp {\n PoolBalanceOpKind kind;\n bytes32 poolId;\n IERC20 token;\n uint256 amount;\n }\n\n /**\n * Withdrawals decrease the Pool's cash, but increase its managed balance, leaving the total balance unchanged.\n *\n * Deposits increase the Pool's cash, but decrease its managed balance, leaving the total balance unchanged.\n *\n * Updates don't affect the Pool's cash balance, but because the managed balance changes, it does alter the total.\n * The external amount can be either increased or decreased by this call (i.e., reporting a gain or a loss).\n */\n enum PoolBalanceOpKind { WITHDRAW, DEPOSIT, UPDATE }\n\n /**\n * @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\n */\n event PoolBalanceManaged(\n bytes32 indexed poolId,\n address indexed assetManager,\n IERC20 indexed token,\n int256 cashDelta,\n int256 managedDelta\n );\n\n // Protocol Fees\n //\n // Some operations cause the Vault to collect tokens in the form of protocol fees, which can then be withdrawn by\n // permissioned accounts.\n //\n // There are two kinds of protocol fees:\n //\n // - flash loan fees: charged on all flash loans, as a percentage of the amounts lent.\n //\n // - swap fees: a percentage of the fees charged by Pools when performing swaps. For a number of reasons, including\n // swap gas costs and interface simplicity, protocol swap fees are not charged on each individual swap. Rather,\n // Pools are expected to keep track of how much they have charged in swap fees, and pay any outstanding debts to the\n // Vault when they are joined or exited. This prevents users from joining a Pool with unpaid debt, as well as\n // exiting a Pool in debt without first paying their share.\n\n /**\n * @dev Returns the current protocol fee module.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n * error in some part of the system.\n *\n * The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n *\n * While the contract is paused, the following features are disabled:\n * - depositing and transferring internal balance\n * - transferring external balance (using the Vault's allowance)\n * - swaps\n * - joining Pools\n * - Asset Manager interactions\n *\n * Internal Balance can still be withdrawn, and Pools exited.\n */\n function setPaused(bool paused) external;\n\n /**\n * @dev Returns the Vault's WETH instance.\n */\n function WETH() external view returns (IWETH);\n // solhint-disable-previous-line func-name-mixedcase\n}\n"},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\n/**\n * @dev Base authorization layer implementation for Pools.\n *\n * The owner account can call some of the permissioned functions - access control of the rest is delegated to the\n * Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership,\n * granular roles, etc., could be built on top of this by making the owner a smart contract.\n *\n * Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate\n * control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`.\n */\nabstract contract BasePoolAuthorization is Authentication {\n address private immutable _owner;\n\n address internal constant _DELEGATE_OWNER = 0xBA1BA1ba1BA1bA1bA1Ba1BA1ba1BA1bA1ba1ba1B;\n\n constructor(address owner) {\n _owner = owner;\n }\n\n function getOwner() public view returns (address) {\n return _owner;\n }\n\n function getAuthorizer() external view returns (IAuthorizer) {\n return _getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n if ((getOwner() != _DELEGATE_OWNER) && _isOwnerOnlyAction(actionId)) {\n // Only the owner can perform \"owner only\" actions, unless the owner is delegated.\n return msg.sender == getOwner();\n } else {\n // Non-owner actions are always processed via the Authorizer, as \"owner only\" ones are when delegated.\n return _getAuthorizer().canPerform(actionId, account, address(this));\n }\n }\n\n function _isOwnerOnlyAction(bytes32) internal view virtual returns (bool) {\n return false;\n }\n\n function _getAuthorizer() internal view virtual returns (IAuthorizer);\n}\n"},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\nimport \"./FactoryWidePauseWindow.sol\";\n\n/**\n * @notice Base contract for Pool factories.\n *\n * Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary\n * logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by\n * the factory) is very powerful.\n *\n * @dev By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory\n * contract would not be able to store it.\n *\n * Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n * become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n * prevent the creation of any future pools from the factory.\n */\nabstract contract BasePoolFactory is\n IBasePoolFactory,\n BaseSplitCodeFactory,\n SingletonAuthentication,\n FactoryWidePauseWindow\n{\n IProtocolFeePercentagesProvider private immutable _protocolFeeProvider;\n\n mapping(address => bool) private _isPoolFromFactory;\n bool private _disabled;\n\n event PoolCreated(address indexed pool);\n event FactoryDisabled();\n\n constructor(\n IVault vault,\n IProtocolFeePercentagesProvider protocolFeeProvider,\n uint256 initialPauseWindowDuration,\n uint256 bufferPeriodDuration,\n bytes memory creationCode\n )\n BaseSplitCodeFactory(creationCode)\n SingletonAuthentication(vault)\n FactoryWidePauseWindow(initialPauseWindowDuration, bufferPeriodDuration)\n {\n _protocolFeeProvider = protocolFeeProvider;\n }\n\n function isPoolFromFactory(address pool) external view override returns (bool) {\n return _isPoolFromFactory[pool];\n }\n\n function isDisabled() public view override returns (bool) {\n return _disabled;\n }\n\n function disable() external override authenticate {\n _ensureEnabled();\n\n _disabled = true;\n\n emit FactoryDisabled();\n }\n\n function _ensureEnabled() internal view {\n _require(!isDisabled(), Errors.DISABLED);\n }\n\n function getProtocolFeePercentagesProvider() public view returns (IProtocolFeePercentagesProvider) {\n return _protocolFeeProvider;\n }\n\n function _create(bytes memory constructorArgs, bytes32 salt) internal virtual override returns (address) {\n _ensureEnabled();\n\n address pool = super._create(constructorArgs, salt);\n\n _isPoolFromFactory[pool] = true;\n\n emit PoolCreated(pool);\n\n return pool;\n }\n}\n"},"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\";\n\n/**\n * @dev Utility to create Pool factories for Pools that use the `TemporarilyPausable` contract.\n *\n * By calling `TemporarilyPausable`'s constructor with the result of `getPauseConfiguration`, all Pools created by this\n * factory will share the same Pause Window end time, after which both old and new Pools will not be pausable.\n */\ncontract FactoryWidePauseWindow {\n // This contract relies on timestamps in a similar way as `TemporarilyPausable` does - the same caveats apply.\n // solhint-disable not-rely-on-time\n\n uint256 private immutable _initialPauseWindowDuration;\n uint256 private immutable _bufferPeriodDuration;\n\n // Time when the pause window for all created Pools expires, and the pause window duration of new Pools becomes\n // zero.\n uint256 private immutable _poolsPauseWindowEndTime;\n\n constructor(uint256 initialPauseWindowDuration, uint256 bufferPeriodDuration) {\n // New pools will check on deployment that the durations given are within the bounds specified by\n // `TemporarilyPausable`. Since it is now possible for a factory to pass in arbitrary values here,\n // pre-emptively verify that these durations are valid for pool creation.\n // (Otherwise, you would be able to deploy a useless factory where `create` would always revert.)\n\n _require(\n initialPauseWindowDuration <= PausableConstants.MAX_PAUSE_WINDOW_DURATION,\n Errors.MAX_PAUSE_WINDOW_DURATION\n );\n _require(\n bufferPeriodDuration <= PausableConstants.MAX_BUFFER_PERIOD_DURATION,\n Errors.MAX_BUFFER_PERIOD_DURATION\n );\n\n _initialPauseWindowDuration = initialPauseWindowDuration;\n _bufferPeriodDuration = bufferPeriodDuration;\n\n _poolsPauseWindowEndTime = block.timestamp + initialPauseWindowDuration;\n }\n\n /**\n * @dev Returns the current `TemporarilyPausable` configuration that will be applied to Pools created by this\n * factory.\n *\n * `pauseWindowDuration` will decrease over time until it reaches zero, at which point both it and\n * `bufferPeriodDuration` will be zero forever, meaning deployed Pools will not be pausable.\n */\n function getPauseConfiguration() public view returns (uint256 pauseWindowDuration, uint256 bufferPeriodDuration) {\n uint256 currentTime = block.timestamp;\n if (currentTime < _poolsPauseWindowEndTime) {\n // The buffer period is always the same since its duration is related to how much time is needed to respond\n // to a potential emergency. The Pause Window duration however decreases as the end time approaches.\n\n pauseWindowDuration = _poolsPauseWindowEndTime - currentTime; // No need for checked arithmetic.\n bufferPeriodDuration = _bufferPeriodDuration;\n } else {\n // After the end time, newly created Pools have no Pause Window, nor Buffer Period (since they are not\n // pausable in the first place).\n\n pauseWindowDuration = 0;\n bufferPeriodDuration = 0;\n }\n }\n}\n"},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport \"./BasePoolAuthorization.sol\";\n\n/**\n * @notice Handle storage and state changes for pools that support \"Recovery Mode\".\n *\n * @dev This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds\n * in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing\n * them to revert).\n *\n * Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window\n * after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract\n * will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation,\n * until they are voluntarily or involuntarily unpaused.\n *\n * By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any\n * time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever\n * condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather,\n * a special \"clean\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally.\n * In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation\n * that can fail in extreme circumstances), and no protocol fees are collected.\n *\n * It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error.\n */\nabstract contract RecoveryMode is IRecoveryMode, BasePoolAuthorization {\n using FixedPoint for uint256;\n using BasePoolUserData for bytes;\n\n IVault private immutable _vault;\n\n /**\n * @dev Reverts if the contract is in Recovery Mode.\n */\n modifier whenNotInRecoveryMode() {\n _ensureNotInRecoveryMode();\n _;\n }\n\n constructor(IVault vault) {\n _vault = vault;\n }\n\n /**\n * @notice Enable recovery mode, which enables a special safe exit path for LPs.\n * @dev Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may\n * perform certain operations in a \"safer\" manner that is less likely to fail, in an attempt to keep the pool\n * running, even in a pathological state. Unlike the Pause operation, which is only available during a short window\n * after factory deployment, Recovery Mode can always be enabled.\n */\n function enableRecoveryMode() external override authenticate {\n // Unlike when recovery mode is disabled, derived contracts should *not* do anything when it is enabled.\n // We do not want to make any calls that could fail and prevent the pool from entering recovery mode.\n // Accordingly, this should have no effect, but for consistency with `disableRecoveryMode`, revert if\n // recovery mode was already enabled.\n _ensureNotInRecoveryMode();\n\n _setRecoveryMode(true);\n\n emit RecoveryModeStateChanged(true);\n }\n\n /**\n * @notice Disable recovery mode, which disables the special safe exit path for LPs.\n * @dev Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly\n * necessary.\n */\n function disableRecoveryMode() external override authenticate {\n // Some derived contracts respond to disabling recovery mode with state changes (e.g., related to protocol fees,\n // or otherwise ensuring that enabling and disabling recovery mode has no ill effects on LPs). When called\n // outside of recovery mode, these state changes might lead to unexpected behavior.\n _ensureInRecoveryMode();\n\n _setRecoveryMode(false);\n\n emit RecoveryModeStateChanged(false);\n }\n\n // Defer implementation for functions that require storage\n\n /**\n * @notice Override to check storage and return whether the pool is in Recovery Mode\n */\n function inRecoveryMode() public view virtual override returns (bool);\n\n /**\n * @dev Override to update storage and emit the event\n *\n * No complex code or external calls that could fail should be placed in the implementations,\n * which could jeopardize the ability to enable and disable Recovery Mode.\n */\n function _setRecoveryMode(bool enabled) internal virtual;\n\n /**\n * @dev Reverts if the contract is not in Recovery Mode.\n */\n function _ensureInRecoveryMode() internal view {\n _require(inRecoveryMode(), Errors.NOT_IN_RECOVERY_MODE);\n }\n\n /**\n * @dev Reverts if the contract is in Recovery Mode.\n */\n function _ensureNotInRecoveryMode() internal view {\n _require(!inRecoveryMode(), Errors.IN_RECOVERY_MODE);\n }\n\n /**\n * @dev A minimal proportional exit, suitable as is for most pools: though not for pools with preminted BPT\n * or other special considerations. Designed to be overridden if a pool needs to do extra processing,\n * such as scaling a stored invariant, or caching the new total supply.\n *\n * No complex code or external calls should be made in derived contracts that override this!\n */\n function _doRecoveryModeExit(\n uint256[] memory balances,\n uint256 totalSupply,\n bytes memory userData\n ) internal virtual returns (uint256, uint256[] memory);\n\n /**\n * @dev Keep a reference to the Vault, for use in reentrancy protection function calls that require it.\n */\n function _getVault() internal view returns (IVault) {\n return _vault;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @dev Building block for performing access control on external functions.\n *\n * This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n * to external functions to only make them callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n */\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call the entry point function.\n */\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n _require(_canPerform(actionId, msg.sender), Errors.SENDER_NOT_ALLOWED);\n }\n\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./CodeDeployer.sol\";\n\n/**\n * @dev Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when\n * the contract's creation code grows close to 24kB.\n *\n * Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB.\n */\nabstract contract BaseSplitCodeFactory {\n // The contract's creation code is stored as code in two separate addresses, and retrieved via `extcodecopy`. This\n // means this factory supports contracts with creation code of up to 48kB.\n // We rely on inline-assembly to achieve this, both to make the entire operation highly gas efficient, and because\n // `extcodecopy` is not available in Solidity.\n\n // solhint-disable no-inline-assembly\n\n address private immutable _creationCodeContractA;\n uint256 private immutable _creationCodeSizeA;\n\n address private immutable _creationCodeContractB;\n uint256 private immutable _creationCodeSizeB;\n\n /**\n * @dev The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`.\n */\n constructor(bytes memory creationCode) {\n uint256 creationCodeSize = creationCode.length;\n\n // We are going to deploy two contracts: one with approximately the first half of `creationCode`'s contents\n // (A), and another with the remaining half (B).\n // We store the lengths in both immutable and stack variables, since immutable variables cannot be read during\n // construction.\n uint256 creationCodeSizeA = creationCodeSize / 2;\n _creationCodeSizeA = creationCodeSizeA;\n\n uint256 creationCodeSizeB = creationCodeSize - creationCodeSizeA;\n _creationCodeSizeB = creationCodeSizeB;\n\n // To deploy the contracts, we're going to use `CodeDeployer.deploy()`, which expects a memory array with\n // the code to deploy. Note that we cannot simply create arrays for A and B's code by copying or moving\n // `creationCode`'s contents as they are expected to be very large (> 24kB), so we must operate in-place.\n\n // Memory: [ code length ] [ A.data ] [ B.data ]\n\n // Creating A's array is simple: we simply replace `creationCode`'s length with A's length. We'll later restore\n // the original length.\n\n bytes memory creationCodeA;\n assembly {\n creationCodeA := creationCode\n mstore(creationCodeA, creationCodeSizeA)\n }\n\n // Memory: [ A.length ] [ A.data ] [ B.data ]\n // ^ creationCodeA\n\n _creationCodeContractA = CodeDeployer.deploy(creationCodeA);\n\n // Creating B's array is a bit more involved: since we cannot move B's contents, we are going to create a 'new'\n // memory array starting at A's last 32 bytes, which will be replaced with B's length. We'll back-up this last\n // byte to later restore it.\n\n bytes memory creationCodeB;\n bytes32 lastByteA;\n\n assembly {\n // `creationCode` points to the array's length, not data, so by adding A's length to it we arrive at A's\n // last 32 bytes.\n creationCodeB := add(creationCode, creationCodeSizeA)\n lastByteA := mload(creationCodeB)\n mstore(creationCodeB, creationCodeSizeB)\n }\n\n // Memory: [ A.length ] [ A.data[ : -1] ] [ B.length ][ B.data ]\n // ^ creationCodeA ^ creationCodeB\n\n _creationCodeContractB = CodeDeployer.deploy(creationCodeB);\n\n // We now restore the original contents of `creationCode` by writing back the original length and A's last byte.\n assembly {\n mstore(creationCodeA, creationCodeSize)\n mstore(creationCodeB, lastByteA)\n }\n }\n\n /**\n * @dev Returns the two addresses where the creation code of the contract crated by this factory is stored.\n */\n function getCreationCodeContracts() public view returns (address contractA, address contractB) {\n return (_creationCodeContractA, _creationCodeContractB);\n }\n\n /**\n * @dev Returns the creation code of the contract this factory creates.\n */\n function getCreationCode() public view returns (bytes memory) {\n return _getCreationCodeWithArgs(\"\");\n }\n\n /**\n * @dev Returns the creation code that will result in a contract being deployed with `constructorArgs`.\n */\n function _getCreationCodeWithArgs(bytes memory constructorArgs) private view returns (bytes memory code) {\n // This function exists because `abi.encode()` cannot be instructed to place its result at a specific address.\n // We need for the ABI-encoded constructor arguments to be located immediately after the creation code, but\n // cannot rely on `abi.encodePacked()` to perform concatenation as that would involve copying the creation code,\n // which would be prohibitively expensive.\n // Instead, we compute the creation code in a pre-allocated array that is large enough to hold *both* the\n // creation code and the constructor arguments, and then copy the ABI-encoded arguments (which should not be\n // overly long) right after the end of the creation code.\n\n // Immutable variables cannot be used in assembly, so we store them in the stack first.\n address creationCodeContractA = _creationCodeContractA;\n uint256 creationCodeSizeA = _creationCodeSizeA;\n address creationCodeContractB = _creationCodeContractB;\n uint256 creationCodeSizeB = _creationCodeSizeB;\n\n uint256 creationCodeSize = creationCodeSizeA + creationCodeSizeB;\n uint256 constructorArgsSize = constructorArgs.length;\n\n uint256 codeSize = creationCodeSize + constructorArgsSize;\n\n assembly {\n // First, we allocate memory for `code` by retrieving the free memory pointer and then moving it ahead of\n // `code` by the size of the creation code plus constructor arguments, and 32 bytes for the array length.\n code := mload(0x40)\n mstore(0x40, add(code, add(codeSize, 32)))\n\n // We now store the length of the code plus constructor arguments.\n mstore(code, codeSize)\n\n // Next, we concatenate the creation code stored in A and B.\n let dataStart := add(code, 32)\n extcodecopy(creationCodeContractA, dataStart, 0, creationCodeSizeA)\n extcodecopy(creationCodeContractB, add(dataStart, creationCodeSizeA), 0, creationCodeSizeB)\n }\n\n // Finally, we copy the constructorArgs to the end of the array. Unfortunately there is no way to avoid this\n // copy, as it is not possible to tell Solidity where to store the result of `abi.encode()`.\n uint256 constructorArgsDataPtr;\n uint256 constructorArgsCodeDataPtr;\n assembly {\n constructorArgsDataPtr := add(constructorArgs, 32)\n constructorArgsCodeDataPtr := add(add(code, 32), creationCodeSize)\n }\n\n _memcpy(constructorArgsCodeDataPtr, constructorArgsDataPtr, constructorArgsSize);\n }\n\n /**\n * @dev Deploys a contract with constructor arguments and a user-provided salt, using the create2 opcode.\n * To create `constructorArgs`, call `abi.encode()` with the contract's constructor arguments, in order.\n */\n function _create(bytes memory constructorArgs, bytes32 salt) internal virtual returns (address) {\n bytes memory creationCode = _getCreationCodeWithArgs(constructorArgs);\n\n address destination;\n assembly {\n destination := create2(0, add(creationCode, 32), mload(creationCode), salt)\n }\n\n if (destination == address(0)) {\n // Bubble up inner revert reason\n // solhint-disable-next-line no-inline-assembly\n assembly {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n return destination;\n }\n\n // From\n // https://github.com/Arachnid/solidity-stringutils/blob/b9a6f6615cf18a87a823cbc461ce9e140a61c305/src/strings.sol\n function _memcpy(\n uint256 dest,\n uint256 src,\n uint256 len\n ) private pure {\n // Copy word-length chunks while possible\n for (; len >= 32; len -= 32) {\n assembly {\n mstore(dest, mload(src))\n }\n dest += 32;\n src += 32;\n }\n\n // Copy remaining bytes\n uint256 mask = 256**(32 - len) - 1;\n assembly {\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as\n * contract code, which can be retrieved via the `extcodecopy` opcode.\n */\nlibrary CodeDeployer {\n // During contract construction, the full code supplied exists as code, and can be accessed via `codesize` and\n // `codecopy`. This is not the contract's final code however: whatever the constructor returns is what will be\n // stored as its code.\n //\n // We use this mechanism to have a simple constructor that stores whatever is appended to it. The following opcode\n // sequence corresponds to the creation code of the following equivalent Solidity contract, plus padding to make the\n // full code 32 bytes long:\n //\n // contract CodeDeployer {\n // constructor() payable {\n // uint256 size;\n // assembly {\n // size := sub(codesize(), 32) // size of appended data, as constructor is 32 bytes long\n // codecopy(0, 32, size) // copy all appended data to memory at position 0\n // return(0, size) // return appended data for it to be stored as code\n // }\n // }\n // }\n //\n // More specifically, it is composed of the following opcodes (plus padding):\n //\n // [1] PUSH1 0x20\n // [2] CODESIZE\n // [3] SUB\n // [4] DUP1\n // [6] PUSH1 0x20\n // [8] PUSH1 0x00\n // [9] CODECOPY\n // [11] PUSH1 0x00\n // [12] RETURN\n //\n // The padding is just the 0xfe sequence (invalid opcode). It is important as it lets us work in-place, avoiding\n // memory allocation and copying.\n bytes32\n private constant _DEPLOYER_CREATION_CODE = 0x602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe;\n\n /**\n * @dev Deploys a contract with `code` as its code, returning the destination address.\n *\n * Reverts if deployment fails.\n */\n function deploy(bytes memory code) internal returns (address destination) {\n bytes32 deployerCreationCode = _DEPLOYER_CREATION_CODE;\n\n // We need to concatenate the deployer creation code and `code` in memory, but want to avoid copying all of\n // `code` (which could be quite long) into a new memory location. Therefore, we operate in-place using\n // assembly.\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let codeLength := mload(code)\n\n // `code` is composed of length and data. We've already stored its length in `codeLength`, so we simply\n // replace it with the deployer creation code (which is exactly 32 bytes long).\n mstore(code, deployerCreationCode)\n\n // At this point, `code` now points to the deployer creation code immediately followed by `code`'s data\n // contents. This is exactly what the deployer expects to receive when created.\n destination := create(0, code, add(codeLength, 32))\n\n // Finally, we restore the original length in order to not mutate `code`.\n mstore(code, codeLength)\n }\n\n // The create opcode returns the zero address when contract creation fails, so we revert if this happens.\n _require(destination != address(0), Errors.CODE_DEPLOYMENT_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\";\n\nimport \"../openzeppelin/EIP712.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract EOASignaturesValidator is ISignaturesValidator, EIP712 {\n // Replay attack prevention for each account.\n mapping(address => uint256) internal _nextNonce;\n\n function getDomainSeparator() public view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n function getNextNonce(address account) public view override returns (uint256) {\n return _nextNonce[account];\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 errorCode\n ) internal {\n return _ensureValidSignature(account, structHash, signature, type(uint256).max, errorCode);\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 deadline,\n uint256 errorCode\n ) internal {\n bytes32 digest = _hashTypedDataV4(structHash);\n _require(_isValidSignature(account, digest, signature), errorCode);\n\n // We could check for the deadline before validating the signature, but this leads to saner error processing (as\n // we only care about expired deadlines if the signature is correct) and only affects the gas cost of the revert\n // scenario, which will only occur infrequently, if ever.\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n _require(deadline >= block.timestamp, Errors.EXPIRED_SIGNATURE);\n\n // We only advance the nonce after validating the signature. This is irrelevant for this module, but it can be\n // important in derived contracts that override _isValidSignature (e.g. SignaturesValidator), as we want for\n // the observable state to still have the current nonce as the next valid one.\n _nextNonce[account] += 1;\n }\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual returns (bool) {\n _require(signature.length == 65, Errors.MALFORMED_SIGNATURE);\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the r, s and v signature parameters, and the only way to get them is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n address recoveredAddress = ecrecover(digest, v, r, s);\n\n // ecrecover returns the zero address on recover failure, so we need to handle that explicitly.\n return (recoveredAddress != address(0) && recoveredAddress == account);\n }\n\n function _toArraySignature(\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (bytes memory) {\n bytes memory signature = new bytes(65);\n // solhint-disable-next-line no-inline-assembly\n assembly {\n mstore(add(signature, 32), r)\n mstore(add(signature, 64), s)\n mstore8(add(signature, 96), v)\n }\n\n return signature;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\n// solhint-disable\n\nfunction _asIAsset(IERC20[] memory tokens) pure returns (IAsset[] memory assets) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n assets := tokens\n }\n}\n\nfunction _sortTokens(\n IERC20 tokenA,\n IERC20 tokenB\n) pure returns (IERC20[] memory tokens) {\n bool aFirst = tokenA < tokenB;\n IERC20[] memory sortedTokens = new IERC20[](2);\n\n sortedTokens[0] = aFirst ? tokenA : tokenB;\n sortedTokens[1] = aFirst ? tokenB : tokenA;\n\n return sortedTokens;\n}\n\nfunction _insertSorted(IERC20[] memory tokens, IERC20 token) pure returns (IERC20[] memory sorted) {\n sorted = new IERC20[](tokens.length + 1);\n\n if (tokens.length == 0) {\n sorted[0] = token;\n return sorted;\n }\n\n uint256 i;\n for (i = tokens.length; i > 0 && tokens[i - 1] > token; i--) sorted[i] = tokens[i - 1];\n for (uint256 j = 0; j < i; j++) sorted[j] = tokens[j];\n sorted[i] = token;\n}\n\nfunction _findTokenIndex(IERC20[] memory tokens, IERC20 token) pure returns (uint256) {\n // Note that while we know tokens are initially sorted, we cannot assume this will hold throughout\n // the pool's lifetime, as pools with mutable tokens can append and remove tokens in any order.\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; i++) {\n if (tokens[i] == token) {\n return i;\n }\n }\n\n _revert(Errors.INVALID_TOKEN);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nlibrary InputHelpers {\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n _require(a == b, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureInputLengthMatch(\n uint256 a,\n uint256 b,\n uint256 c\n ) internal pure {\n _require(a == b && b == c, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureArrayIsSorted(IERC20[] memory array) internal pure {\n address[] memory addressArray;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addressArray := array\n }\n ensureArrayIsSorted(addressArray);\n }\n\n function ensureArrayIsSorted(address[] memory array) internal pure {\n if (array.length < 2) {\n return;\n }\n\n address previous = array[0];\n for (uint256 i = 1; i < array.length; ++i) {\n address current = array[i];\n _require(previous < current, Errors.UNSORTED_ARRAY);\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./Authentication.sol\";\n\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers\n constructor(IVault vault) Authentication(bytes32(uint256(address(this)))) {\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\";\n\n/**\n * @dev Allows for a contract to be paused during an initial period after deployment, disabling functionality. Can be\n * used as an emergency switch in case a security vulnerability or threat is identified.\n *\n * The contract can only be paused during the Pause Window, a period that starts at deployment. It can also be\n * unpaused and repaused any number of times during this period. This is intended to serve as a safety measure: it lets\n * system managers react quickly to potentially dangerous situations, knowing that this action is reversible if careful\n * analysis later determines there was a false alarm.\n *\n * If the contract is paused when the Pause Window finishes, it will remain in the paused state through an additional\n * Buffer Period, after which it will be automatically unpaused forever. This is to ensure there is always enough time\n * to react to an emergency, even if the threat is discovered shortly before the Pause Window expires.\n *\n * Note that since the contract can only be paused within the Pause Window, unpausing during the Buffer Period is\n * irreversible.\n */\nabstract contract TemporarilyPausable is ITemporarilyPausable {\n // The Pause Window and Buffer Period are timestamp-based: they should not be relied upon for sub-minute accuracy.\n // solhint-disable not-rely-on-time\n\n uint256 private immutable _pauseWindowEndTime;\n uint256 private immutable _bufferPeriodEndTime;\n\n bool private _paused;\n\n constructor(uint256 pauseWindowDuration, uint256 bufferPeriodDuration) {\n _require(pauseWindowDuration <= PausableConstants.MAX_PAUSE_WINDOW_DURATION, Errors.MAX_PAUSE_WINDOW_DURATION);\n _require(\n bufferPeriodDuration <= PausableConstants.MAX_BUFFER_PERIOD_DURATION,\n Errors.MAX_BUFFER_PERIOD_DURATION\n );\n\n uint256 pauseWindowEndTime = block.timestamp + pauseWindowDuration;\n\n _pauseWindowEndTime = pauseWindowEndTime;\n _bufferPeriodEndTime = pauseWindowEndTime + bufferPeriodDuration;\n }\n\n /**\n * @dev Reverts if the contract is paused.\n */\n modifier whenNotPaused() {\n _ensureNotPaused();\n _;\n }\n\n /**\n * @dev Returns the current contract pause status, as well as the end times of the Pause Window and Buffer\n * Period.\n */\n function getPausedState()\n external\n view\n override\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n )\n {\n paused = !_isNotPaused();\n pauseWindowEndTime = _getPauseWindowEndTime();\n bufferPeriodEndTime = _getBufferPeriodEndTime();\n }\n\n /**\n * @dev Sets the pause state to `paused`. The contract can only be paused until the end of the Pause Window, and\n * unpaused until the end of the Buffer Period.\n *\n * Once the Buffer Period expires, this function reverts unconditionally.\n */\n function _setPaused(bool paused) internal {\n if (paused) {\n _require(block.timestamp < _getPauseWindowEndTime(), Errors.PAUSE_WINDOW_EXPIRED);\n } else {\n _require(block.timestamp < _getBufferPeriodEndTime(), Errors.BUFFER_PERIOD_EXPIRED);\n }\n\n _paused = paused;\n emit PausedStateChanged(paused);\n }\n\n /**\n * @dev Reverts if the contract is paused.\n */\n function _ensureNotPaused() internal view {\n _require(_isNotPaused(), Errors.PAUSED);\n }\n\n /**\n * @dev Reverts if the contract is not paused.\n */\n function _ensurePaused() internal view {\n _require(!_isNotPaused(), Errors.NOT_PAUSED);\n }\n\n /**\n * @dev Returns true if the contract is unpaused.\n *\n * Once the Buffer Period expires, the gas cost of calling this function is reduced dramatically, as storage is no\n * longer accessed.\n */\n function _isNotPaused() internal view returns (bool) {\n // After the Buffer Period, the (inexpensive) timestamp check short-circuits the storage access.\n return block.timestamp > _getBufferPeriodEndTime() || !_paused;\n }\n\n // These getters lead to reduced bytecode size by inlining the immutable variables in a single place.\n\n function _getPauseWindowEndTime() private view returns (uint256) {\n return _pauseWindowEndTime;\n }\n\n function _getBufferPeriodEndTime() private view returns (uint256) {\n return _bufferPeriodEndTime;\n }\n}\n\n/**\n * @dev Keep the maximum durations in a single place.\n */\nlibrary PausableConstants {\n uint256 public constant MAX_PAUSE_WINDOW_DURATION = 270 days;\n uint256 public constant MAX_BUFFER_PERIOD_DURATION = 90 days;\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary VaultHelpers {\n /**\n * @dev Returns the address of a Pool's contract.\n *\n * This is the same code the Vault runs in `PoolRegistry._getPoolAddress`.\n */\n function toPoolAddress(bytes32 poolId) internal pure returns (address) {\n // 12 byte logical shift left to remove the nonce and specialization setting. We don't need to mask,\n // since the logical shift already sets the upper bits to zero.\n return address(uint256(poolId) >> (12 * 8));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\";\n\n/**\n * @notice Retrieves a contract's version set at creation time from storage.\n */\ncontract Version is IVersion {\n string private _version;\n\n constructor(string memory version) {\n _setVersion(version);\n }\n\n function version() external view override returns (string memory) {\n return _version;\n }\n\n /**\n * @dev Internal setter that allows this contract to be used in proxies.\n */\n function _setVersion(string memory newVersion) internal {\n _version = newVersion;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./LogExpMath.sol\";\n\n/* solhint-disable private-vars-leading-underscore */\n\nlibrary FixedPoint {\n // solhint-disable no-inline-assembly\n\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n // Minimum base for the power function when the exponent is 'free' (larger than ONE).\n uint256 internal constant MIN_POW_BASE_FREE_EXPONENT = 0.7e18;\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = product == 0 ? 0 : ((product - 1) / FixedPoint.ONE) + 1;\n assembly {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), ONE), 1))\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n return aInflated / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = a == 0 ? 0 : (a * FixedPoint.ONE - 1) / b + 1;\n assembly {\n result := mul(iszero(iszero(aInflated)), add(div(sub(aInflated, 1), b), 1))\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n if (raw < maxError) {\n return 0;\n } else {\n return sub(raw, maxError);\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n return add(raw, maxError);\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (x < ONE) ? (ONE - x) : 0;\n assembly {\n result := mul(lt(x, ONE), sub(ONE, x))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files (the “Software”), to deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the\n// Software.\n\n// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/* solhint-disable */\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n _require(x >> 255 == 0, Errors.X_OUT_OF_BOUNDS);\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n _require(y < MILD_EXPONENT_BOUND, Errors.Y_OUT_OF_BOUNDS);\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n _require(\n MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,\n Errors.PRODUCT_OUT_OF_BOUNDS\n );\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n _require(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT, Errors.INVALID_EXPONENT);\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT).\n // Fixed point division requires multiplying by ONE_18.\n return ((ONE_18 * ONE_18) / exp(-x));\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n return (((product * seriesSum) / ONE_20) * firstAN) / 100;\n }\n\n /**\n * @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n */\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n\n int256 logArg;\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n\n /**\n * @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n _require(a > 0, Errors.OUT_OF_BOUNDS);\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n return _ln_36(a) / ONE_18;\n } else {\n return _ln(a);\n }\n }\n\n /**\n * @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function _ln(int256 a) private pure returns (int256) {\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, and this if statement will not be entered in the recursive call.\n // Fixed point division requires multiplying by ONE_18.\n return (-_ln((ONE_18 * ONE_18) / a));\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n return (sum + seriesSum) / 100;\n }\n\n /**\n * @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n * Adapted from OpenZeppelin's SafeMath library.\n */\nlibrary Math {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Returns the absolute value of a signed integer.\n */\n function abs(int256 a) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = a > 0 ? uint256(a) : uint256(-a)\n assembly {\n let s := sar(255, a)\n result := sub(xor(a, s), s)\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n _require((b >= 0 && c >= a) || (b < 0 && c < a), Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n _require((b >= 0 && c <= a) || (b < 0 && c > a), Errors.SUB_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the largest of two numbers of 256 bits.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (a < b) ? b : a;\n assembly {\n result := sub(a, mul(sub(a, b), lt(a, b)))\n }\n }\n\n /**\n * @dev Returns the smallest of two numbers of 256 bits.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to `result = (a < b) ? a : b`\n assembly {\n result := sub(a, mul(sub(a, b), gt(a, b)))\n }\n }\n\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n _require(a == 0 || c / a == b, Errors.MUL_OVERFLOW);\n return c;\n }\n\n function div(\n uint256 a,\n uint256 b,\n bool roundUp\n ) internal pure returns (uint256) {\n return roundUp ? divUp(a, b) : divDown(a, b);\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n return a / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n // Equivalent to:\n // result = a == 0 ? 0 : 1 + (a - 1) / b;\n assembly {\n result := mul(iszero(iszero(a)), add(1, div(sub(a, 1), b)))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the Address library from OpenZeppelin Contracts, altered by removing the `isContract` checks on\n// `functionCall` and `functionDelegateCall` in order to save gas, as the recipients are known to be contracts.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n // solhint-disable max-line-length\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n _require(address(this).balance >= amount, Errors.ADDRESS_INSUFFICIENT_BALANCE);\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n _require(success, Errors.ADDRESS_CANNOT_SEND_VALUE);\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call(data);\n return verifyCallResult(success, returndata);\n }\n\n // solhint-enable max-line-length\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but passing some native ETH as msg.value to the call.\n *\n * _Available since v3.4._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n * revert reason or using the one provided.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n _revert(Errors.LOW_LEVEL_CALL_FAILED);\n }\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _HASHED_NAME = keccak256(bytes(name));\n _HASHED_VERSION = keccak256(bytes(version));\n _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, _getChainId(), address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n }\n\n // solc-ignore-next-line func-mutability\n function _getChainId() private view returns (uint256 chainId) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n chainId := chainid()\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n// work on bytes32, replacing them with a native implementation for address and bytes32 values, to reduce bytecode\n// size and runtime costs.\n// The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n struct AddressSet {\n // Storage of set values\n address[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n address lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return set._values[index];\n }\n\n function rawIndexOf(AddressSet storage set, address value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n\n struct Bytes32Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return set._values[index];\n }\n\n function rawIndexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n *\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Sets a new value for the total supply. It should only be set using this function.\n *\n * * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function _setTotalSupply(uint256 value) internal virtual {\n _totalSupply = value;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n msg.sender,\n _allowances[sender][msg.sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_ALLOWANCE)\n );\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(\n msg.sender,\n spender,\n _allowances[msg.sender][spender].sub(subtractedValue, Errors.ERC20_DECREASED_ALLOWANCE_BELOW_ZERO)\n );\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n _require(sender != address(0), Errors.ERC20_TRANSFER_FROM_ZERO_ADDRESS);\n _require(recipient != address(0), Errors.ERC20_TRANSFER_TO_ZERO_ADDRESS);\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_BALANCE);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _beforeTokenTransfer(address(0), account, amount);\n\n _setTotalSupply(totalSupply().add(amount));\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n _require(account != address(0), Errors.ERC20_BURN_FROM_ZERO_ADDRESS);\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, Errors.ERC20_BURN_EXCEEDS_BALANCE);\n _setTotalSupply(totalSupply().sub(amount));\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is ERC20 {\n using SafeMath for uint256;\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(msg.sender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, Errors.ERC20_BURN_EXCEEDS_ALLOWANCE);\n\n _approve(account, msg.sender, decreasedAllowance);\n _burn(account, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\n\nimport \"./ERC20.sol\";\nimport \"../helpers/EOASignaturesValidator.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EOASignaturesValidator {\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n bytes32 structHash = keccak256(\n abi.encode(_PERMIT_TYPEHASH, owner, spender, value, getNextNonce(owner), deadline)\n );\n\n _ensureValidSignature(owner, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view override returns (uint256) {\n return getNextNonce(owner);\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return getDomainSeparator();\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce bytecode size.\n// Modifier code is inlined by the compiler, which causes its code to appear multiple times in the codebase. By using\n// private functions, we achieve the same end result with slightly higher runtime gas costs, but reduced bytecode size.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _enterNonReentrant();\n _;\n _exitNonReentrant();\n }\n\n function _enterNonReentrant() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n _require(_status != _ENTERED, Errors.REENTRANCY);\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _exitNonReentrant() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n _require(value >> 255 == 0, Errors.SAFE_CAST_VALUE_CANT_FIT_INT256);\n return int256(value);\n }\n\n /**\n * @dev Converts an unsigned uint256 into an unsigned uint64.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxUint64.\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n _require(value <= type(uint64).max, Errors.SAFE_CAST_VALUE_CANT_FIT_UINT64);\n return uint64(value);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce gas costs.\n// The `safeTransfer` and `safeTransferFrom` functions assume that `token` is a contract (an account with code), and\n// work differently from the OpenZeppelin version if it is not.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n\n function safeApprove(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n // Some contracts need their allowance reduced to 0 before setting it to an arbitrary amount.\n if (value != 0 && token.allowance(address(this), address(to)) != 0) {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, 0));\n }\n\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, value));\n }\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n *\n * WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert.\n */\n function _callOptionalReturn(address token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = token.call(data);\n\n // If the low-level call didn't succeed we return whatever was returned from it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n if eq(success, 0) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n // Finally we check the returndata size is either zero or true - note that this check will always pass for EOAs\n _require(returndata.length == 0 || abi.decode(returndata, (bool)), Errors.SAFE_ERC20_CALL_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, Errors.SUB_OVERFLOW);\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n uint256 errorCode\n ) internal pure returns (uint256) {\n _require(b <= a, errorCode);\n uint256 c = a - b;\n\n return c;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract ERC20Mock is ERC20 {\n constructor(string memory name, string memory symbol) ERC20(name, symbol) {}\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n\n function burn(address sender, uint256 amount) external {\n _burn(sender, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20Burnable.sol\";\nimport \"../openzeppelin/ERC20Permit.sol\";\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract TestToken is ERC20, ERC20Burnable, ERC20Permit {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) ERC20(name, symbol) ERC20Permit(name) {\n _setupDecimals(decimals);\n }\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n\n // burnWithoutAllowance was created to allow burn of token without approval. Example of use:\n //\n // MockGearboxVault.sol can't use burnFrom function (from ERC20Burnable) in unit tests, since\n // MockGearboxVault doesn't have permission to burn relayer wrapped tokens and relayer is not a Signer\n function burnWithoutAllowance(address sender, uint256 amount) external {\n _burn(sender, amount);\n }\n}\n"},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\nabstract contract AssetHelpers {\n // solhint-disable-next-line var-name-mixedcase\n IWETH private immutable _weth;\n\n // Sentinel value used to indicate WETH with wrapping/unwrapping semantics. The zero address is a good choice for\n // multiple reasons: it is cheap to pass as a calldata argument, it is a known invalid token and non-contract, and\n // it is an address Pools cannot register as a token.\n address private constant _ETH = address(0);\n\n constructor(IWETH weth) {\n _weth = weth;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function _WETH() internal view returns (IWETH) {\n return _weth;\n }\n\n /**\n * @dev Returns true if `asset` is the sentinel value that represents ETH.\n */\n function _isETH(IAsset asset) internal pure returns (bool) {\n return address(asset) == _ETH;\n }\n\n /**\n * @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n * to the WETH contract.\n */\n function _translateToIERC20(IAsset asset) internal view returns (IERC20) {\n return _isETH(asset) ? _WETH() : _asIERC20(asset);\n }\n\n /**\n * @dev Same as `_translateToIERC20(IAsset)`, but for an entire array.\n */\n function _translateToIERC20(IAsset[] memory assets) internal view returns (IERC20[] memory) {\n IERC20[] memory tokens = new IERC20[](assets.length);\n for (uint256 i = 0; i < assets.length; ++i) {\n tokens[i] = _translateToIERC20(assets[i]);\n }\n return tokens;\n }\n\n /**\n * @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n * returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value.\n */\n function _asIERC20(IAsset asset) internal pure returns (IERC20) {\n return IERC20(address(asset));\n }\n}\n"},"contracts/BalancerPoolDataQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\";\n\nenum TotalSupplyType { TOTAL_SUPPLY, VIRTUAL_SUPPLY, ACTUAL_SUPPLY }\nenum SwapFeeType { SWAP_FEE_PERCENTAGE, PERCENT_FEE }\n\n// The base ILinearPool does not include getWrappedTokenRate, so we redefine it here.\ninterface ILinearPool {\n function getWrappedTokenRate() external view returns (uint256);\n\n function getTargets() external view returns (uint256 lowerTarget, uint256 upperTarget);\n}\n\ninterface IWeightedPool {\n function getNormalizedWeights() external view returns (uint256[] memory);\n}\n\ninterface IPoolWithScalingFactors {\n function getScalingFactors() external view returns (uint256[] memory);\n}\n\ninterface IPoolWithActualSupply {\n function getActualSupply() external view returns (uint256);\n}\n\ninterface IPoolWithVirtualSupply {\n function getVirtualSupply() external view returns (uint256);\n}\n\ninterface IPoolWithSwapFeePercentage {\n function getSwapFeePercentage() external view returns (uint256);\n}\n\ninterface IPoolWithPercentFee {\n function percentFee() external view returns (uint256);\n}\n\ninterface IPoolWithAmp {\n function getAmplificationParameter()\n external\n view\n returns (\n uint256 value,\n bool isUpdating,\n uint256 precision\n );\n}\n\nstruct PoolDataQueryConfig {\n bool loadTokenBalanceUpdatesAfterBlock;\n bool loadTotalSupply;\n bool loadSwapFees;\n bool loadLinearWrappedTokenRates;\n bool loadLinearTargets;\n bool loadNormalizedWeights;\n bool loadScalingFactors;\n bool loadAmps;\n bool loadRates;\n uint256 blockNumber;\n TotalSupplyType[] totalSupplyTypes;\n SwapFeeType[] swapFeeTypes;\n uint256[] linearPoolIdxs;\n uint256[] weightedPoolIdxs;\n uint256[] scalingFactorPoolIdxs;\n uint256[] ampPoolIdxs;\n uint256[] ratePoolIdxs;\n}\n\nstruct PoolStatusQueryConfig {\n bool loadInRecoveryMode;\n bool loadIsPaused;\n}\n\n/**\n * @dev This contract builds on top of the Balancer V2 architecture to provide useful helpers for fetching on chain data\n * for Balancer pools. It is especially helpful for SOR (Smart order router) initialization. It allows for bulking\n * actions for many pools at once, with the overall goal to reduce network-in and network-out required for loading\n * useful onchain data.\n */\ncontract BalancerPoolDataQueries {\n IVault public immutable vault;\n\n constructor(IVault _vault) {\n vault = _vault;\n }\n\n /**\n * @dev Under most circumstances, you will use getPoolData as the main entry point for this contract.\n * It allows you to fetch various types of pool data for many pools in a single query. The response\n * is optimized for data out. We return the minimum amount of data from this query to facilitate\n * faster network requests. getPoolData replaces the generic multicall approach that over fetches data\n * in most situations and will revert if any query in the multicall reverts, making it difficult to identify\n * pools that need to be filtered from routing. This function returns an array ignoreIdxs that contains the\n * enumerated idxs in the poolIds array that should be filtered out.\n */\n function getPoolData(bytes32[] memory poolIds, PoolDataQueryConfig memory config)\n external\n view\n returns (\n uint256[][] memory balances,\n uint256[] memory totalSupplies,\n uint256[] memory swapFees,\n uint256[] memory linearWrappedTokenRates,\n uint256[][] memory linearTargets,\n uint256[][] memory weights,\n uint256[][] memory scalingFactors,\n uint256[] memory amps,\n uint256[] memory rates,\n uint256[] memory ignoreIdxs\n )\n {\n uint256 i;\n address[] memory pools = new address[](poolIds.length);\n\n for (i = 0; i < poolIds.length; i++) {\n (pools[i], ) = vault.getPool(poolIds[i]);\n }\n\n if (config.loadTokenBalanceUpdatesAfterBlock) {\n balances = getPoolTokenBalancesWithUpdatesAfterBlock(poolIds, config.blockNumber);\n }\n\n if (config.loadTotalSupply) {\n totalSupplies = getTotalSupplyForPools(pools, config.totalSupplyTypes);\n }\n\n if (config.loadSwapFees) {\n swapFees = getSwapFeePercentageForPools(pools, config.swapFeeTypes);\n }\n\n if (config.loadLinearWrappedTokenRates) {\n address[] memory linearPools = new address[](config.linearPoolIdxs.length);\n\n for (i = 0; i < config.linearPoolIdxs.length; i++) {\n linearPools[i] = pools[config.linearPoolIdxs[i]];\n }\n\n linearWrappedTokenRates = getWrappedTokenRateForLinearPools(linearPools);\n }\n\n if (config.loadNormalizedWeights) {\n address[] memory weightedPools = new address[](config.weightedPoolIdxs.length);\n\n for (i = 0; i < config.weightedPoolIdxs.length; i++) {\n weightedPools[i] = pools[config.weightedPoolIdxs[i]];\n }\n\n weights = getNormalizedWeightsForPools(weightedPools);\n }\n\n if (config.loadScalingFactors) {\n address[] memory scalingFactorPools = new address[](config.scalingFactorPoolIdxs.length);\n\n for (i = 0; i < config.scalingFactorPoolIdxs.length; i++) {\n scalingFactorPools[i] = pools[config.scalingFactorPoolIdxs[i]];\n }\n\n scalingFactors = getScalingFactorsForPools(scalingFactorPools);\n }\n\n if (config.loadAmps) {\n address[] memory ampPools = new address[](config.ampPoolIdxs.length);\n\n for (i = 0; i < config.ampPoolIdxs.length; i++) {\n ampPools[i] = pools[config.ampPoolIdxs[i]];\n }\n\n amps = getAmpForPools(ampPools);\n }\n\n if (config.loadRates) {\n address[] memory ratePools = new address[](config.ratePoolIdxs.length);\n\n for (i = 0; i < config.ratePoolIdxs.length; i++) {\n ratePools[i] = pools[config.ratePoolIdxs[i]];\n }\n\n rates = getRateForPools(ratePools);\n }\n\n if (config.loadLinearTargets) {\n address[] memory linearTargetPools = new address[](config.linearPoolIdxs.length);\n\n for (i = 0; i < config.linearPoolIdxs.length; i++) {\n linearTargetPools[i] = pools[config.linearPoolIdxs[i]];\n }\n\n linearTargets = getLinearTargetsForPools(linearTargetPools);\n }\n\n ignoreIdxs = _getErrorIdxsFromResults(\n poolIds,\n config,\n totalSupplies,\n swapFees,\n linearWrappedTokenRates,\n amps,\n rates,\n scalingFactors,\n weights\n );\n }\n\n function getPoolStatus(bytes32[] memory poolIds, PoolStatusQueryConfig memory config)\n external\n view\n returns (bool[] memory isPaused, bool[] memory inRecoveryMode)\n {\n uint256 i;\n address[] memory pools = new address[](poolIds.length);\n\n for (i = 0; i < poolIds.length; i++) {\n (pools[i], ) = vault.getPool(poolIds[i]);\n }\n\n if (config.loadIsPaused) {\n isPaused = getIsPausedForPools(pools);\n }\n\n if (config.loadInRecoveryMode) {\n inRecoveryMode = getInRecoveryModeForPools(pools);\n }\n }\n\n function getPoolTokenBalancesWithUpdatesAfterBlock(bytes32[] memory poolIds, uint256 blockNumber)\n public\n view\n returns (uint256[][] memory)\n {\n uint256[] memory balances;\n uint256 lastChangeBlock;\n uint256[][] memory allBalances = new uint256[][](poolIds.length);\n\n for (uint256 i = 0; i < poolIds.length; i++) {\n (, balances, lastChangeBlock) = vault.getPoolTokens(poolIds[i]);\n\n if (lastChangeBlock > blockNumber) {\n allBalances[i] = balances;\n }\n }\n\n return allBalances;\n }\n\n function getWrappedTokenRateForLinearPools(address[] memory poolAddresses) public view returns (uint256[] memory) {\n uint256[] memory rates = new uint256[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n rates[i] = _getLinearWrappedTokenRate(poolAddresses[i]);\n }\n\n return rates;\n }\n\n function getAmpForPools(address[] memory poolAddresses) public view returns (uint256[] memory) {\n uint256[] memory amps = new uint256[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n amps[i] = _getPoolAmp(poolAddresses[i]);\n }\n\n return amps;\n }\n\n function getRateForPools(address[] memory poolAddresses) public view returns (uint256[] memory) {\n uint256[] memory rates = new uint256[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n rates[i] = _getPoolRate(poolAddresses[i]);\n }\n\n return rates;\n }\n\n function getSwapFeePercentageForPools(address[] memory poolAddresses, SwapFeeType[] memory swapFeeTypes)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory swapFees = new uint256[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n if (swapFeeTypes[i] == SwapFeeType.PERCENT_FEE) {\n try IPoolWithPercentFee(poolAddresses[i]).percentFee() returns (uint256 swapFee) {\n swapFees[i] = swapFee;\n } catch {\n swapFees[i] = 0;\n }\n } else {\n // In instances where we get an unknown pool type that does not support the default getSwapFeePercentage\n // we return a 0 swap fee.\n try IPoolWithSwapFeePercentage(poolAddresses[i]).getSwapFeePercentage() returns (uint256 swapFee) {\n swapFees[i] = swapFee;\n } catch {\n swapFees[i] = 0;\n }\n }\n }\n\n return swapFees;\n }\n\n function getTotalSupplyForPools(address[] memory poolAddresses, TotalSupplyType[] memory totalSupplyTypes)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory totalSupplies = new uint256[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n if (totalSupplyTypes[i] == TotalSupplyType.VIRTUAL_SUPPLY) {\n totalSupplies[i] = _getPoolVirtualSupply(poolAddresses[i]);\n } else if (totalSupplyTypes[i] == TotalSupplyType.ACTUAL_SUPPLY) {\n totalSupplies[i] = _getPoolActualSupply(poolAddresses[i]);\n } else {\n totalSupplies[i] = _getPoolTotalSupply(poolAddresses[i]);\n }\n }\n\n return totalSupplies;\n }\n\n function getNormalizedWeightsForPools(address[] memory poolAddresses) public view returns (uint256[][] memory) {\n uint256[][] memory allWeights = new uint256[][](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n allWeights[i] = _getPoolNormalizedWeights(poolAddresses[i]);\n }\n\n return allWeights;\n }\n\n function getScalingFactorsForPools(address[] memory poolAddresses) public view returns (uint256[][] memory) {\n uint256[][] memory allScalingFactors = new uint256[][](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n allScalingFactors[i] = _getPoolScalingFactors(poolAddresses[i]);\n }\n\n return allScalingFactors;\n }\n\n function getLinearTargetsForPools(address[] memory poolAddresses) public view returns (uint256[][] memory) {\n uint256[][] memory linearTargets = new uint256[][](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n linearTargets[i] = _getPoolLinearTargets(poolAddresses[i]);\n }\n\n return linearTargets;\n }\n\n function getInRecoveryModeForPools(address[] memory poolAddresses) public view returns (bool[] memory) {\n bool[] memory inRecoveryModes = new bool[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n inRecoveryModes[i] = _getPoolInRecoveryMode(poolAddresses[i]);\n }\n\n return inRecoveryModes;\n }\n\n function getIsPausedForPools(address[] memory poolAddresses) public view returns (bool[] memory) {\n bool[] memory isPaused = new bool[](poolAddresses.length);\n\n for (uint256 i = 0; i < poolAddresses.length; i++) {\n isPaused[i] = _getPoolIsPaused(poolAddresses[i]);\n }\n\n return isPaused;\n }\n\n /**\n * @dev Our goal is to prevent queries from reverting even if one or more pools are in an invalid/corrupt state.\n * We wrap each query below in a try/catch block, and return a value of 0 in instances where the query reverts.\n * We use a 0 value as our sentinel value, but recognize it is possible for pools to return a 0 value in non error\n * situations (ie: pool is uninitialized). In such situations, it is still appropriate for us to flag the pool to\n * be ignored.\n */\n function _getLinearWrappedTokenRate(address poolAddress) internal view returns (uint256) {\n try ILinearPool(poolAddress).getWrappedTokenRate() returns (uint256 rate) {\n return rate;\n } catch {\n return 0;\n }\n }\n\n function _getPoolLinearTargets(address poolAddress) internal view returns (uint256[] memory) {\n uint256[] memory targets = new uint256[](2);\n\n (targets[0], targets[1]) = ILinearPool(poolAddress).getTargets();\n\n return targets;\n }\n\n function _getPoolVirtualSupply(address poolAddress) internal view returns (uint256) {\n try IPoolWithVirtualSupply(poolAddress).getVirtualSupply() returns (uint256 virtualSupply) {\n return virtualSupply;\n } catch {\n return 0;\n }\n }\n\n function _getPoolActualSupply(address poolAddress) internal view returns (uint256) {\n try IPoolWithActualSupply(poolAddress).getActualSupply() returns (uint256 actualSupply) {\n return actualSupply;\n } catch {\n return 0;\n }\n }\n\n function _getPoolTotalSupply(address poolAddress) internal view returns (uint256) {\n try IERC20(poolAddress).totalSupply() returns (uint256 totalSupply) {\n return totalSupply;\n } catch {\n return 0;\n }\n }\n\n function _getPoolRate(address poolAddress) internal view returns (uint256) {\n try IRateProvider(poolAddress).getRate() returns (uint256 rate) {\n return rate;\n } catch {\n return 0;\n }\n }\n\n function _getPoolScalingFactors(address poolAddress) internal view returns (uint256[] memory) {\n try IPoolWithScalingFactors(poolAddress).getScalingFactors() returns (uint256[] memory scalingFactors) {\n return scalingFactors;\n } catch {\n uint256[] memory empty = new uint256[](0);\n\n return empty;\n }\n }\n\n function _getPoolNormalizedWeights(address poolAddress) internal view returns (uint256[] memory) {\n try IWeightedPool(poolAddress).getNormalizedWeights() returns (uint256[] memory normalizedWeights) {\n return normalizedWeights;\n } catch {\n uint256[] memory empty = new uint256[](0);\n\n return empty;\n }\n }\n\n function _getPoolAmp(address poolAddress) internal view returns (uint256) {\n try IPoolWithAmp(poolAddress).getAmplificationParameter() returns (uint256 value, bool, uint256) {\n return value;\n } catch {\n return 0;\n }\n }\n\n function _getPoolInRecoveryMode(address poolAddress) internal view returns (bool) {\n try IRecoveryMode(poolAddress).inRecoveryMode() returns (bool inRecoveryMode) {\n return inRecoveryMode;\n } catch {\n return false;\n }\n }\n\n function _getPoolIsPaused(address poolAddress) internal view returns (bool) {\n try ITemporarilyPausable(poolAddress).getPausedState() returns (bool paused, uint256, uint256) {\n return paused;\n } catch {\n return false;\n }\n }\n\n function _getErrorIdxsFromResults(\n bytes32[] memory poolIds,\n PoolDataQueryConfig memory config,\n uint256[] memory totalSupplies,\n uint256[] memory swapFees,\n uint256[] memory linearWrappedTokenRates,\n uint256[] memory amps,\n uint256[] memory rates,\n uint256[][] memory scalingFactors,\n uint256[][] memory weights\n ) internal pure returns (uint256[] memory) {\n bool[] memory errors = new bool[](poolIds.length);\n uint256 numErrors = 0;\n uint256 i;\n\n for (i = 0; i < poolIds.length; i++) {\n if ((config.loadTotalSupply && totalSupplies[i] == 0) || (config.loadSwapFees && swapFees[i] == 0)) {\n errors[i] = true;\n }\n }\n\n if (config.loadLinearWrappedTokenRates) {\n for (i = 0; i < config.linearPoolIdxs.length; i++) {\n if (linearWrappedTokenRates[i] == 0) {\n errors[config.linearPoolIdxs[i]] = true;\n }\n }\n }\n\n if (config.loadAmps) {\n for (i = 0; i < config.ampPoolIdxs.length; i++) {\n if (amps[i] == 0) {\n errors[config.ampPoolIdxs[i]] = true;\n }\n }\n }\n\n if (config.loadRates) {\n for (i = 0; i < config.ratePoolIdxs.length; i++) {\n if (rates[i] == 0) {\n errors[config.ratePoolIdxs[i]] = true;\n }\n }\n }\n\n if (config.loadScalingFactors) {\n for (i = 0; i < config.scalingFactorPoolIdxs.length; i++) {\n // any failed fetches to scaling factors returns an empty array\n if (scalingFactors[i].length == 0) {\n errors[config.scalingFactorPoolIdxs[i]] = true;\n }\n }\n }\n\n if (config.loadNormalizedWeights) {\n for (i = 0; i < config.weightedPoolIdxs.length; i++) {\n // any failed fetches to normalized weights returns an empty array\n if (weights[i].length == 0) {\n errors[config.weightedPoolIdxs[i]] = true;\n }\n }\n }\n\n for (i = 0; i < errors.length; i++) {\n if (errors[i] == true) {\n numErrors++;\n }\n }\n\n uint256[] memory errorIdxs = new uint256[](numErrors);\n uint256 idx = 0;\n\n for (i = 0; i < errors.length; i++) {\n if (errors[i] == true) {\n errorIdxs[idx] = i;\n idx++;\n }\n }\n\n return errorIdxs;\n }\n}\n"},"contracts/BalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\n\n/**\n * @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n * It connects different functionalities of the protocol components to allow accessing information that would\n * have required a more cumbersome setup if we wanted to provide these already built-in.\n */\ncontract BalancerQueries is IBalancerQueries, AssetHelpers {\n IVault public immutable vault;\n\n constructor(IVault _vault) AssetHelpers(_vault.WETH()) {\n vault = _vault;\n }\n\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n override\n returns (uint256)\n {\n // The Vault only supports batch swap queries, so we need to convert the swap call into an equivalent batch\n // swap. The result will be identical.\n\n // The main difference between swaps and batch swaps is that batch swaps require an assets array. We're going\n // to place the asset in at index 0, and asset out at index 1.\n IAsset[] memory assets = new IAsset[](2);\n assets[0] = singleSwap.assetIn;\n assets[1] = singleSwap.assetOut;\n\n IVault.BatchSwapStep[] memory swaps = new IVault.BatchSwapStep[](1);\n swaps[0] = IVault.BatchSwapStep({\n poolId: singleSwap.poolId,\n assetInIndex: 0,\n assetOutIndex: 1,\n amount: singleSwap.amount,\n userData: singleSwap.userData\n });\n\n int256[] memory assetDeltas = vault.queryBatchSwap(singleSwap.kind, swaps, assets, funds);\n\n // Batch swaps return the full Vault asset deltas, which in the special case of a single step swap contains more\n // information than we need (as the amount in is known in a GIVEN_IN swap, and the amount out is known in a\n // GIVEN_OUT swap). We extract the information we're interested in.\n if (singleSwap.kind == IVault.SwapKind.GIVEN_IN) {\n // The asset out will have a negative Vault delta (the assets are coming out of the Pool and the user is\n // receiving them), so make it positive to match the `swap` interface.\n\n _require(assetDeltas[1] <= 0, Errors.SHOULD_NOT_HAPPEN);\n return uint256(-assetDeltas[1]);\n } else {\n // The asset in will have a positive Vault delta (the assets are going into the Pool and the user is\n // sending them), so we don't need to do anything.\n return uint256(assetDeltas[0]);\n }\n }\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external override returns (int256[] memory assetDeltas) {\n return vault.queryBatchSwap(kind, swaps, assets, funds);\n }\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external override returns (uint256 bptOut, uint256[] memory amountsIn) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptOut, amountsIn) = IBasePool(pool).queryJoin(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external override returns (uint256 bptIn, uint256[] memory amountsOut) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptIn, amountsOut) = IBasePool(pool).queryExit(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function _validateAssetsAndGetBalances(bytes32 poolId, IAsset[] memory expectedAssets)\n internal\n view\n returns (uint256[] memory balances, uint256 lastChangeBlock)\n {\n IERC20[] memory actualTokens;\n IERC20[] memory expectedTokens = _translateToIERC20(expectedAssets);\n\n (actualTokens, balances, lastChangeBlock) = vault.getPoolTokens(poolId);\n InputHelpers.ensureInputLengthMatch(actualTokens.length, expectedTokens.length);\n\n for (uint256 i = 0; i < actualTokens.length; ++i) {\n IERC20 token = actualTokens[i];\n _require(token == expectedTokens[i], Errors.TOKENS_MISMATCH);\n }\n }\n}\n"},"contracts/BALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n * is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n * final recipient of the funds to be configurable without having to alter the gauges themselves.\n *\n * There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\n */\ncontract BALTokenHolder is IBALTokenHolder, SingletonAuthentication {\n using SafeERC20 for IERC20;\n\n IBalancerToken private immutable _balancerToken;\n\n string private _name;\n\n constructor(\n IBalancerToken balancerToken,\n IVault vault,\n string memory name\n ) SingletonAuthentication(vault) {\n // BALTokenHolder is often deployed from a factory for convenience, but it uses its own address instead of\n // the factory's as a disambiguator to make sure the action IDs of all instances are unique, reducing likelihood\n // of errors.\n\n _balancerToken = balancerToken;\n _name = name;\n }\n\n function getBalancerToken() external view returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getName() external view override returns (string memory) {\n return _name;\n }\n\n function withdrawFunds(address recipient, uint256 amount) external override authenticate {\n IERC20(_balancerToken).safeTransfer(recipient, amount);\n }\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external override authenticate {\n require(token != _balancerToken, \"Cannot sweep BAL\");\n IERC20(token).safeTransfer(recipient, amount);\n }\n}\n"},"contracts/BALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\nimport \"./BALTokenHolder.sol\";\n\ncontract BALTokenHolderFactory is IBALTokenHolderFactory {\n IBalancerToken private immutable _balancerToken;\n IVault private immutable _vault;\n\n mapping(address => bool) private _factoryCreatedHolders;\n\n event BALTokenHolderCreated(BALTokenHolder balTokenHolder, string name);\n\n constructor(IBalancerToken balancerToken, IVault vault) {\n _balancerToken = balancerToken;\n _vault = vault;\n }\n\n function getBalancerToken() public view override returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function isHolderFromFactory(address holder) external view override returns (bool) {\n return _factoryCreatedHolders[holder];\n }\n\n function create(string memory name) external override returns (IBALTokenHolder) {\n BALTokenHolder holder = new BALTokenHolder(getBalancerToken(), getVault(), name);\n\n _factoryCreatedHolders[address(holder)] = true;\n emit BALTokenHolderCreated(holder, name);\n\n return holder;\n }\n}\n"},"contracts/BatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./relayer/BaseRelayerLibrary.sol\";\n\nimport \"./relayer/AaveWrapping.sol\";\nimport \"./relayer/ERC4626Wrapping.sol\";\nimport \"./relayer/EulerWrapping.sol\";\nimport \"./relayer/GaugeActions.sol\";\nimport \"./relayer/GearboxWrapping.sol\";\nimport \"./relayer/LidoWrapping.sol\";\nimport \"./relayer/CompoundV2Wrapping.sol\";\nimport \"./relayer/UnbuttonWrapping.sol\";\nimport \"./relayer/ReaperWrapping.sol\";\nimport \"./relayer/TetuWrapping.sol\";\nimport \"./relayer/SiloWrapping.sol\";\nimport \"./relayer/VaultActions.sol\";\nimport \"./relayer/VaultPermit.sol\";\nimport \"./relayer/YearnWrapping.sol\";\n\n/**\n * @title Batch Relayer Library\n * @notice This contract is not a relayer by itself and calls into it directly will fail.\n * The associated relayer can be found by calling `getEntrypoint` on this contract.\n */\ncontract BatchRelayerLibrary is\n AaveWrapping,\n BaseRelayerLibrary,\n ERC4626Wrapping,\n EulerWrapping,\n GaugeActions,\n GearboxWrapping,\n LidoWrapping,\n UnbuttonWrapping,\n CompoundV2Wrapping,\n ReaperWrapping,\n SiloWrapping,\n TetuWrapping,\n VaultActions,\n VaultPermit,\n YearnWrapping\n{\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter,\n bool canCallUserCheckpoint,\n string memory version\n ) BaseRelayerLibrary(vault, version) LidoWrapping(wstETH) GaugeActions(minter, canCallUserCheckpoint) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"contracts/PoolRecoveryHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\n/**\n * @dev This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode\n * if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms\n * identify failed pools and prevent further traffic from being routed to them (since in this state swap operations\n * would fail).\n */\ncontract PoolRecoveryHelper is SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n EnumerableSet.AddressSet private _factories;\n\n constructor(IVault vault, address[] memory initialFactories) SingletonAuthentication(vault) {\n for (uint256 i = 0; i < initialFactories.length; ++i) {\n require(_factories.add(initialFactories[i]), \"Duplicate initial factory\");\n }\n }\n\n /**\n * @notice Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be\n * passed to `enableRecoveryMode()`.\n */\n function addPoolFactory(address factory) external authenticate {\n require(_factories.add(factory), \"Duplicate factory\");\n }\n\n /**\n * @notice Removes a Pool Factory from the helper.\n */\n function removePoolFactory(address factory) external authenticate {\n require(_factories.remove(factory), \"Non-existent factory\");\n }\n\n /**\n * @notice Returns the total number of Pool Factories.\n */\n function getFactoryCount() external view returns (uint256) {\n return _factories.length();\n }\n\n /**\n * @notice Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`.\n */\n function getFactoryAtIndex(uint256 index) external view returns (IBasePoolFactory) {\n return IBasePoolFactory(_factories.at(index));\n }\n\n /**\n * @notice Returns true if the Pool has been created from a known factory.\n */\n function isPoolFromKnownFactory(address pool) public view returns (bool) {\n uint256 totalFactories = _factories.length();\n for (uint256 i = 0; i < totalFactories; ++i) {\n IBasePoolFactory factory = IBasePoolFactory(_factories.unchecked_at(i));\n\n if (factory.isPoolFromFactory(pool)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @notice Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()`\n * reverts).\n *\n * Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex\n * computations and does not call into any external contracts, which makes it a very dependable way to retrieve the\n * underlying tokens.\n *\n * However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees\n * accrued before enabling Recovery Mode will be forfeited.\n *\n * The Pool must have been created via a known Pool Factory contract.\n */\n function enableRecoveryMode(address pool) external {\n // We require that the Pools come from known factories as a sanity check since this function is permissionless.\n // This ensures we're actually calling legitimate Pools, and that they support both the IRateProviderPool and\n // IRecoveryMode interfaces.\n require(isPoolFromKnownFactory(pool), \"Pool is not from known factory\");\n\n // The Pool will be placed in recovery mode if any of its rate providers reverts.\n IRateProvider[] memory rateProviders = IRateProviderPool(pool).getRateProviders();\n for (uint256 i = 0; i < rateProviders.length; ++i) {\n if (rateProviders[i] != IRateProvider(0)) {\n try rateProviders[i].getRate() {\n // On success, we simply keep processing rate providers\n continue;\n } catch {\n IRecoveryMode(pool).enableRecoveryMode();\n return;\n }\n }\n }\n\n // If no rate providers revert, we then revert to both signal that calling this function performs no state\n // changes, and to help prevent these accidental wasteful calls.\n revert(\"Pool's rate providers do not revert\");\n }\n}\n"},"contracts/ProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\";\n\ncontract ProtocolFeePercentagesProvider is IProtocolFeePercentagesProvider, SingletonAuthentication {\n using SafeCast for uint256;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n struct FeeTypeData {\n uint64 value;\n uint64 maximum;\n bool registered;\n string name;\n }\n\n mapping(uint256 => FeeTypeData) private _feeTypeData;\n\n // Absolute maximum fee percentages (1e18 = 100%, 1e16 = 1%).\n\n // No fee can go over 100%\n uint256 private constant _MAX_PROTOCOL_FEE_PERCENTAGE = 1e18; // 100%\n\n // These are copied from ProtocolFeesCollector\n uint256 private constant _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE = 50e16; // 50%\n uint256 private constant _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE = 1e16; // 1%\n\n constructor(\n IVault vault,\n uint256 maxYieldValue,\n uint256 maxAUMValue\n ) SingletonAuthentication(vault) {\n IProtocolFeesCollector protocolFeeCollector = vault.getProtocolFeesCollector();\n _protocolFeesCollector = protocolFeeCollector; // Note that this is immutable in the Vault as well\n\n // Initialize all starting fee types\n\n // Yield and AUM types are initialized with a value of 0.\n _registerFeeType(ProtocolFeeType.YIELD, \"Yield\", maxYieldValue, 0);\n _registerFeeType(ProtocolFeeType.AUM, \"Assets Under Management\", maxAUMValue, 0);\n\n // Swap and Flash loan types are special as their storage is actually located in the ProtocolFeesCollector. We\n // therefore simply mark them as registered, but ignore maximum and initial values. Not calling _registerFeeType\n // also means that ProtocolFeeTypeRegistered nor ProtocolFeePercentageChanged events will be emitted for these.\n _feeTypeData[ProtocolFeeType.SWAP].registered = true;\n _feeTypeData[ProtocolFeeType.SWAP].name = \"Swap\";\n\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].registered = true;\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].name = \"Flash Loan\";\n }\n\n modifier withValidFeeType(uint256 feeType) {\n require(isValidFeeType(feeType), \"Non-existent fee type\");\n _;\n }\n\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external override authenticate {\n require(!_feeTypeData[feeType].registered, \"Fee type already registered\");\n _registerFeeType(feeType, name, maximumValue, initialValue);\n }\n\n function _registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) private {\n require((maximumValue > 0) && (maximumValue <= _MAX_PROTOCOL_FEE_PERCENTAGE), \"Invalid maximum fee percentage\");\n require(initialValue <= maximumValue, \"Invalid initial percentage\");\n\n _feeTypeData[feeType] = FeeTypeData({\n registered: true,\n name: name,\n maximum: maximumValue.toUint64(),\n value: initialValue.toUint64()\n });\n\n emit ProtocolFeeTypeRegistered(feeType, name, maximumValue);\n emit ProtocolFeePercentageChanged(feeType, initialValue);\n }\n\n function isValidFeeType(uint256 feeType) public view override returns (bool) {\n return _feeTypeData[feeType].registered;\n }\n\n function isValidFeeTypePercentage(uint256 feeType, uint256 value)\n public\n view\n override\n withValidFeeType(feeType)\n returns (bool)\n {\n return value <= getFeeTypeMaximumPercentage(feeType);\n }\n\n function setFeeTypePercentage(uint256 feeType, uint256 newValue)\n external\n override\n withValidFeeType(feeType)\n authenticate\n {\n require(isValidFeeTypePercentage(feeType, newValue), \"Invalid fee percentage\");\n\n if (feeType == ProtocolFeeType.SWAP) {\n _protocolFeesCollector.setSwapFeePercentage(newValue);\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n _protocolFeesCollector.setFlashLoanFeePercentage(newValue);\n } else {\n _feeTypeData[feeType].value = newValue.toUint64();\n }\n\n emit ProtocolFeePercentageChanged(feeType, newValue);\n }\n\n function getFeeTypePercentage(uint256 feeType) external view override withValidFeeType(feeType) returns (uint256) {\n if (feeType == ProtocolFeeType.SWAP) {\n return _protocolFeesCollector.getSwapFeePercentage();\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _protocolFeesCollector.getFlashLoanFeePercentage();\n } else {\n return _feeTypeData[feeType].value;\n }\n }\n\n function getFeeTypeMaximumPercentage(uint256 feeType)\n public\n view\n override\n withValidFeeType(feeType)\n returns (uint256)\n {\n if (feeType == ProtocolFeeType.SWAP) {\n return _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE;\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE;\n } else {\n return _feeTypeData[feeType].maximum;\n }\n }\n\n function getFeeTypeName(uint256 feeType) external view override withValidFeeType(feeType) returns (string memory) {\n return _feeTypeData[feeType].name;\n }\n}\n"},"contracts/ProtocolFeeSplitter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\";\n\ninterface Pool {\n function getOwner() external view returns (address);\n}\n\n/**\n * @notice Support revenue sharing for individual pools between the DAO and designated recipients.\n * @dev This contract is responsible for splitting the BPT profits collected by the ProtocolFeeCollector between\n * a beneficiary specified by the pool's owner and the DAO fee recipient (e.g., the Balancer DAO treasury account).\n * Only BPT tokens are involved in the split: any other tokens would remain in the `ProtocolFeeCollector`.\n *\n * BPT tokens are withdrawn using the ProtocolFeesWithdrawer, a wrapper around the ProtocolFeesCollector that allows\n * governance to prevent certain tokens (on a denyList) from being withdrawn. `collectFees` would fail if the BPT\n * token were on this denyList.\n */\ncontract ProtocolFeeSplitter is IProtocolFeeSplitter, SingletonAuthentication {\n using FixedPoint for uint256;\n\n // All fee percentages are 18-decimal fixed point numbers.\n // Absolute maximum fee percentage (1e18 = 100%).\n uint256 private constant _MAX_REVENUE_SHARE_PERCENTAGE = 50e16; // 50%\n\n IProtocolFeesWithdrawer private immutable _protocolFeesWithdrawer;\n\n // The recipient of the DAO portion of the revenue share; e.g., the Balancer DAO treasury account.\n address private _daoFundsRecipient;\n\n // The default revenue share given to pools; can be updated by governance (1e18 = 100%, 1e16 = 1%).\n uint256 private _defaultRevenueSharePercentage;\n\n // Packed to use 1 storage slot\n // 1e18 (100% - maximum fee value) can fit in uint88\n struct RevenueShareSettings {\n uint88 revenueSharePercentageOverride;\n address beneficiary;\n bool overrideSet;\n }\n\n // poolId => PoolSettings\n mapping(bytes32 => RevenueShareSettings) private _poolSettings;\n\n constructor(IProtocolFeesWithdrawer protocolFeesWithdrawer, address daoFundsRecipient)\n SingletonAuthentication(protocolFeesWithdrawer.getProtocolFeesCollector().vault())\n {\n _protocolFeesWithdrawer = protocolFeesWithdrawer;\n _daoFundsRecipient = daoFundsRecipient;\n }\n\n // Fund recipients\n\n /// @inheritdoc IProtocolFeeSplitter\n function getDaoFundsRecipient() external view override returns (address) {\n return _daoFundsRecipient;\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function setDaoFundsRecipient(address newDaoFundsRecipient) external override authenticate {\n _daoFundsRecipient = newDaoFundsRecipient;\n\n emit DAOFundsRecipientChanged(newDaoFundsRecipient);\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function setPoolBeneficiary(bytes32 poolId, address newBeneficiary) external override {\n (address pool, ) = getVault().getPool(poolId);\n _require(\n msg.sender == Pool(pool).getOwner() ||\n _canPerform(getActionId(this.setPoolBeneficiary.selector), msg.sender),\n Errors.SENDER_NOT_ALLOWED\n );\n\n _poolSettings[poolId].beneficiary = newBeneficiary;\n\n emit PoolBeneficiaryChanged(poolId, newBeneficiary);\n }\n\n // Revenue share settings\n\n /// @inheritdoc IProtocolFeeSplitter\n function getRevenueShareSettings(bytes32 poolId)\n external\n view\n override\n returns (\n uint256 revenueSharePercentageOverride,\n address beneficiary,\n bool overrideSet\n )\n {\n RevenueShareSettings memory settings = _poolSettings[poolId];\n\n return (settings.revenueSharePercentageOverride, settings.beneficiary, settings.overrideSet);\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function getDefaultRevenueSharePercentage() external view override returns (uint256) {\n return _defaultRevenueSharePercentage;\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function setDefaultRevenueSharePercentage(uint256 defaultRevenueSharePercentage) external override authenticate {\n _require(\n defaultRevenueSharePercentage <= _MAX_REVENUE_SHARE_PERCENTAGE,\n Errors.SPLITTER_FEE_PERCENTAGE_TOO_HIGH\n );\n _defaultRevenueSharePercentage = defaultRevenueSharePercentage;\n\n emit DefaultRevenueSharePercentageChanged(defaultRevenueSharePercentage);\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function setRevenueSharePercentage(bytes32 poolId, uint256 revenueSharePercentage) external override authenticate {\n _require(revenueSharePercentage <= _MAX_REVENUE_SHARE_PERCENTAGE, Errors.SPLITTER_FEE_PERCENTAGE_TOO_HIGH);\n _poolSettings[poolId].revenueSharePercentageOverride = uint88(revenueSharePercentage);\n _poolSettings[poolId].overrideSet = true;\n\n emit PoolRevenueShareChanged(poolId, revenueSharePercentage);\n }\n\n /**\n * @notice Ignore any previously set revenue sharing percentage, and begin using the default.\n * @param poolId - the poolId of the pool to begin using the default revenue share percentage.\n */\n function clearRevenueSharePercentage(bytes32 poolId) external override authenticate {\n _poolSettings[poolId].overrideSet = false;\n\n emit PoolRevenueShareCleared(poolId);\n }\n\n // Permissionless fee collection functions\n\n /// @inheritdoc IProtocolFeeSplitter\n function getAmounts(bytes32 poolId) external view override returns (uint256 beneficiaryAmount, uint256 daoAmount) {\n (address pool, ) = getVault().getPool(poolId);\n IERC20 bpt = IERC20(pool);\n\n return _getAmounts(bpt, poolId);\n }\n\n /// @inheritdoc IProtocolFeeSplitter\n function collectFees(bytes32 poolId) external override returns (uint256 beneficiaryAmount, uint256 daoAmount) {\n (address pool, ) = getVault().getPool(poolId);\n IERC20 bpt = IERC20(pool);\n address beneficiary = _poolSettings[poolId].beneficiary;\n\n (beneficiaryAmount, daoAmount) = _getAmounts(bpt, poolId);\n\n _withdrawBpt(bpt, beneficiaryAmount, beneficiary);\n _withdrawBpt(bpt, daoAmount, _daoFundsRecipient);\n\n emit FeesCollected(poolId, beneficiary, beneficiaryAmount, _daoFundsRecipient, daoAmount);\n }\n\n // Misc getters\n\n /// @inheritdoc IProtocolFeeSplitter\n function getProtocolFeesWithdrawer() external view override returns (IProtocolFeesWithdrawer) {\n return _protocolFeesWithdrawer;\n }\n\n // Internal functions\n\n function _withdrawBpt(\n IERC20 bpt,\n uint256 amount,\n address to\n ) private {\n if (amount == 0) {\n return;\n }\n\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = bpt;\n\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _protocolFeesWithdrawer.withdrawCollectedFees(tokens, amounts, to);\n }\n\n function _getAmounts(IERC20 bpt, bytes32 poolId) private view returns (uint256, uint256) {\n IProtocolFeesWithdrawer protocolFeesWithdrawer = _protocolFeesWithdrawer;\n uint256 feeCollectorBptBalance = bpt.balanceOf(address(protocolFeesWithdrawer.getProtocolFeesCollector()));\n if (feeCollectorBptBalance == 0) {\n return (0, 0);\n }\n\n address beneficiary = _poolSettings[poolId].beneficiary;\n\n if (beneficiary == address(0)) {\n // If there's no beneficiary, the full amount is sent to the DAO recipient.\n return (0, feeCollectorBptBalance);\n } else {\n // Otherwise, split the fee between the beneficiary and the DAO recipient,\n // according to the share percentage.\n return _computeAmounts(feeCollectorBptBalance, _getPoolBeneficiaryFeePercentage(poolId));\n }\n }\n\n function _computeAmounts(uint256 feeCollectorBptBalance, uint256 feePercentage)\n private\n pure\n returns (uint256 ownerAmount, uint256 daoAmount)\n {\n ownerAmount = feeCollectorBptBalance.mulDown(feePercentage);\n daoAmount = feeCollectorBptBalance.sub(ownerAmount);\n }\n\n function _getPoolBeneficiaryFeePercentage(bytes32 poolId) private view returns (uint256) {\n RevenueShareSettings memory settings = _poolSettings[poolId];\n\n return settings.overrideSet ? settings.revenueSharePercentageOverride : _defaultRevenueSharePercentage;\n }\n}\n"},"contracts/ProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ncontract ProtocolFeesWithdrawer is IProtocolFeesWithdrawer, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n EnumerableSet.AddressSet private _denylistedTokens;\n\n constructor(IVault vault, IERC20[] memory initialDeniedTokens) SingletonAuthentication(vault) {\n _protocolFeesCollector = vault.getProtocolFeesCollector();\n\n uint256 tokensLength = initialDeniedTokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n _denylistToken(initialDeniedTokens[i]);\n }\n }\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view override returns (IProtocolFeesCollector) {\n return _protocolFeesCollector;\n }\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) public view override returns (bool) {\n return !_denylistedTokens.contains(address(token));\n }\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) public view override returns (bool) {\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n if (!isWithdrawableToken(tokens[i])) return false;\n }\n return true;\n }\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view override returns (IERC20) {\n return IERC20(_denylistedTokens.at(index));\n }\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view override returns (uint256) {\n return _denylistedTokens.length();\n }\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external override authenticate {\n require(isWithdrawableTokens(tokens), \"Attempting to withdraw denylisted token\");\n\n // We delegate checking of inputs and reentrancy protection to the ProtocolFeesCollector.\n _protocolFeesCollector.withdrawCollectedFees(tokens, amounts, recipient);\n }\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external override authenticate {\n _denylistToken(token);\n }\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external override authenticate {\n require(_denylistedTokens.remove(address(token)), \"Token is not denylisted\");\n emit TokenAllowlisted(token);\n }\n\n // Internal functions\n\n function _denylistToken(IERC20 token) internal {\n require(_denylistedTokens.add(address(token)), \"Token already denylisted\");\n emit TokenDenylisted(token);\n }\n}\n"},"contracts/ProtocolIdRegistry.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\ncontract ProtocolIdRegistry is IProtocolIdRegistry, SingletonAuthentication {\n struct ProtocolIdData {\n string name;\n bool registered;\n }\n\n mapping(uint256 => ProtocolIdData) private _protocolIdData;\n\n modifier withValidProtocolId(uint256 protocolId) {\n require(isValidProtocolId(protocolId), \"Non-existent protocol ID\");\n _;\n }\n\n constructor(IVault vault) SingletonAuthentication(vault) {\n _registerProtocolId(ProtocolId.AAVE_V1, \"Aave v1\");\n _registerProtocolId(ProtocolId.AAVE_V2, \"Aave v2\");\n _registerProtocolId(ProtocolId.AAVE_V3, \"Aave v3\");\n _registerProtocolId(ProtocolId.AMPLEFORTH, \"Ampleforth\");\n _registerProtocolId(ProtocolId.BEEFY, \"Beefy\");\n _registerProtocolId(ProtocolId.EULER, \"Euler\");\n _registerProtocolId(ProtocolId.GEARBOX, \"Gearbox\");\n _registerProtocolId(ProtocolId.IDLE, \"Idle\");\n _registerProtocolId(ProtocolId.MORPHO, \"Morpho\");\n _registerProtocolId(ProtocolId.RADIANT, \"Radiant\");\n _registerProtocolId(ProtocolId.REAPER, \"Reaper\");\n _registerProtocolId(ProtocolId.SILO, \"Silo\");\n _registerProtocolId(ProtocolId.STARGATE, \"Stargate\");\n _registerProtocolId(ProtocolId.STURDY, \"Sturdy\");\n _registerProtocolId(ProtocolId.TESSERA, \"Tessera\");\n _registerProtocolId(ProtocolId.TETU, \"Tetu\");\n _registerProtocolId(ProtocolId.YEARN, \"Yearn\");\n _registerProtocolId(ProtocolId.MIDAS, \"Midas\");\n _registerProtocolId(ProtocolId.AGAVE, \"Agave\");\n }\n\n /// @inheritdoc IProtocolIdRegistry\n function registerProtocolId(uint256 protocolId, string memory name) external override authenticate {\n _registerProtocolId(protocolId, name);\n }\n\n /// @inheritdoc IProtocolIdRegistry\n function renameProtocolId(uint256 protocolId, string memory newName) external override authenticate {\n _renameProtocolId(protocolId, newName);\n }\n\n /// @inheritdoc IProtocolIdRegistry\n function isValidProtocolId(uint256 protocolId) public view override returns (bool) {\n return _protocolIdData[protocolId].registered;\n }\n\n function _registerProtocolId(uint256 protocolId, string memory name) private {\n require(!isValidProtocolId(protocolId), \"Protocol ID already registered\");\n _protocolIdData[protocolId] = ProtocolIdData({ name: name, registered: true });\n emit ProtocolIdRegistered(protocolId, name);\n }\n\n function _renameProtocolId(uint256 protocolId, string memory newName) private {\n require(isValidProtocolId(protocolId), \"Protocol ID not registered\");\n _protocolIdData[protocolId].name = newName;\n emit ProtocolIdRenamed(protocolId, newName);\n }\n\n /// @inheritdoc IProtocolIdRegistry\n function getProtocolName(uint256 protocolId)\n external\n view\n override\n withValidProtocolId(protocolId)\n returns (string memory)\n {\n return _protocolIdData[protocolId].name;\n }\n}\n"},"contracts/relayer/AaveWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title AaveWrapping\n * @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract AaveWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n function wrapAaveDynamicToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool fromUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // Aave's StaticATokens allow wrapping either an aToken or the underlying asset.\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 dynamicToken = fromUnderlying ? staticToken.ASSET() : staticToken.ATOKEN();\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, dynamicToken, amount);\n }\n\n dynamicToken.safeApprove(address(staticToken), amount);\n // Use 0 for the referral code\n uint256 result = staticToken.deposit(recipient, amount, 0, fromUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapAaveStaticToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool toUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, staticToken, amount);\n }\n\n // No approval is needed here, as the Static Tokens are burned directly from the relayer's account\n (, uint256 result) = staticToken.withdraw(recipient, amount, toUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/BalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Balancer Relayer\n * @notice Allows safe multicall execution of a relayer's functions\n * @dev\n * Relayers are composed of two contracts:\n * - This contract, which acts as a single point of entry into the system through a multicall function.\n * - A library contract, which defines the allowed behaviour of the relayer.\n *\n * The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n * We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n * without having to expose all these functions on the entrypoint contract itself. The multicall function is\n * then a single point of entry for all actions, so we can easily prevent reentrancy.\n *\n * This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n * the relayer through another function (which must allow reentrancy for multicall logic), and that would\n * potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n * e.g., sweeping any leftover ETH that should have been refunded to the user.\n *\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n * Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n * into the library contract.\n */\ncontract BalancerRelayer is IBalancerRelayer, Version, ReentrancyGuard {\n using Address for address payable;\n using Address for address;\n\n IVault private immutable _vault;\n address private immutable _library;\n\n /**\n * @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n * derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\n */\n constructor(\n IVault vault,\n address libraryAddress,\n string memory version\n ) Version(version) {\n _vault = vault;\n _library = libraryAddress;\n }\n\n receive() external payable {\n // Only accept ETH transfers from the Vault. This is expected to happen due to a swap/exit/withdrawal\n // with ETH as an output, should the relayer be listed as the recipient. This may also happen when\n // joining a pool, performing a swap, or if managing a user's balance uses less than the full ETH value\n // provided. Any excess ETH will be refunded to this contract, and then forwarded to the original sender.\n _require(msg.sender == address(_vault), Errors.ETH_TRANSFER);\n }\n\n function getVault() external view override returns (IVault) {\n return _vault;\n }\n\n function getLibrary() external view override returns (address) {\n return _library;\n }\n\n function multicall(bytes[] calldata data) external payable override nonReentrant returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n results[i] = _library.functionDelegateCall(data[i]);\n }\n\n _refundETH();\n }\n\n function _refundETH() private {\n uint256 remainingEth = address(this).balance;\n if (remainingEth > 0) {\n msg.sender.sendValue(remainingEth);\n }\n }\n}\n"},"contracts/relayer/BaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\nimport \"./BalancerRelayer.sol\";\n\n/**\n * @title Base Relayer Library\n * @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n * to take further actions on their behalf.\n * @dev\n * Relayers are composed of two contracts:\n * - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n * - A library contract such as this one, which defines the allowed behaviour of the relayer\n\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n * will reject calls from outside the entrypoint context.\n *\n * This contract should neither be allowlisted as a relayer, nor called directly by the user.\n * No guarantees can be made about fund safety when calling this contract in an improper manner.\n *\n * All functions that are meant to be called from the entrypoint via `multicall` must be payable so that they\n * do not revert in a call involving ETH. This also applies to functions that do not alter the state and would be\n * usually labeled as `view`.\n */\ncontract BaseRelayerLibrary is IBaseRelayerLibrary {\n using Address for address;\n using SafeERC20 for IERC20;\n\n IVault private immutable _vault;\n IBalancerRelayer private immutable _entrypoint;\n\n constructor(IVault vault, string memory version) IBaseRelayerLibrary(vault.WETH()) {\n _vault = vault;\n _entrypoint = new BalancerRelayer(vault, address(this), version);\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function getEntrypoint() external view returns (IBalancerRelayer) {\n return _entrypoint;\n }\n\n /**\n * @notice Sets whether a particular relayer is authorised to act on behalf of the user\n */\n function setRelayerApproval(\n address relayer,\n bool approved,\n bytes calldata authorisation\n ) external payable {\n require(relayer == address(this) || !approved, \"Relayer can only approve itself\");\n bytes memory data = abi.encodePacked(\n abi.encodeWithSelector(_vault.setRelayerApproval.selector, msg.sender, relayer, approved),\n authorisation\n );\n\n address(_vault).functionCall(data);\n }\n\n /**\n * @notice Approves the Vault to use tokens held in the relayer\n * @dev This is needed to avoid having to send intermediate tokens back to the user\n */\n function approveVault(IERC20 token, uint256 amount) external payable override {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n // TODO: gas golf this a bit\n token.safeApprove(address(getVault()), amount);\n }\n\n /**\n * @notice Returns the amount referenced by chained reference `ref`.\n * @dev It does not alter the reference (even if it's marked as temporary).\n *\n * This function does not alter the state in any way. It is not marked as view because it has to be `payable`\n * in order to be used in a batch transaction.\n *\n * Use a static call to read the state off-chain.\n */\n function peekChainedReferenceValue(uint256 ref) external payable override returns (uint256 value) {\n (, value) = _peekChainedReferenceValue(ref);\n }\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal override {\n if (amount == 0) return;\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _pullTokens(sender, tokens, amounts);\n }\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal override {\n IVault.UserBalanceOp[] memory ops = new IVault.UserBalanceOp[](tokens.length);\n for (uint256 i; i < tokens.length; i++) {\n ops[i] = IVault.UserBalanceOp({\n asset: IAsset(address(tokens[i])),\n amount: amounts[i],\n sender: sender,\n recipient: payable(address(this)),\n kind: IVault.UserBalanceOpKind.TRANSFER_EXTERNAL\n });\n }\n\n getVault().manageUserBalance(ops);\n }\n\n /**\n * @dev Returns true if `amount` is not actually an amount, but rather a chained reference.\n */\n function _isChainedReference(uint256 amount) internal pure override returns (bool) {\n // First 3 nibbles are enough to determine if it's a chained reference.\n return\n (amount & 0xfff0000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it.\n */\n function _isTemporaryChainedReference(uint256 amount) internal pure returns (bool) {\n // First 3 nibbles determine if it's a chained reference.\n // If the 4th nibble is 0 it is temporary; otherwise it is considered read-only.\n // In practice, we shall use '0xba11' for read-only references.\n return\n (amount & 0xffff000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Stores `value` as the amount referenced by chained reference `ref`.\n */\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal override {\n bytes32 slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, value)\n }\n }\n\n /**\n * @dev Returns the amount referenced by chained reference `ref`.\n * If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n * If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n * (see `_isTemporaryChainedReference` function).\n */\n function _getChainedReferenceValue(uint256 ref) internal override returns (uint256) {\n (bytes32 slot, uint256 value) = _peekChainedReferenceValue(ref);\n\n if (_isTemporaryChainedReference(ref)) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, 0)\n }\n }\n return value;\n }\n\n /**\n * @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n * It does not alter the reference (even if it's marked as temporary).\n */\n function _peekChainedReferenceValue(uint256 ref) private view returns (bytes32 slot, uint256 value) {\n slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n value := sload(slot)\n }\n }\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _TEMP_STORAGE_SUFFIX = keccak256(\"balancer.base-relayer-library\");\n\n function _getStorageSlot(uint256 ref) private view returns (bytes32) {\n // This replicates the mechanism Solidity uses to allocate storage slots for mappings, but using a hash as the\n // mapping's storage slot, and subtracting 1 at the end. This should be more than enough to prevent collisions\n // with other state variables this or derived contracts might use.\n // See https://docs.soliditylang.org/en/v0.8.9/internals/layout_in_storage.html\n\n return bytes32(uint256(keccak256(abi.encodePacked(_removeReferencePrefix(ref), _TEMP_STORAGE_SUFFIX))) - 1);\n }\n\n /**\n * @dev Returns a reference without its prefix.\n * Use this function to calculate the storage slot so that it's the same for temporary and read-only references.\n */\n function _removeReferencePrefix(uint256 ref) private pure returns (uint256) {\n return (ref & 0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n }\n}\n"},"contracts/relayer/CompoundV2Wrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title CompoundV2Wrapping\n * @notice Allows users to wrap and unwrap Compound v2 cTokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract CompoundV2Wrapping is IBaseRelayerLibrary {\n function wrapCompoundV2(\n ICToken wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 mainToken = IERC20(wrappedToken.underlying());\n amount = _resolveAmountPullTokenAndApproveSpender(mainToken, address(wrappedToken), amount, sender);\n\n // The `mint` function deposits `amount` underlying tokens and transfers cTokens to the caller.\n // It returns an error code, where zero indicates success. Other error codes can be found here:\n // https://github.com/compound-finance/compound-protocol/blob/a3214f67b73310d547e00fc578e8355911c9d376/contracts/ErrorReporter.sol\n // solhint-disable-previous-line max-line-length\n require(wrappedToken.mint(amount) == 0, \"wrapping failed\");\n\n uint256 receivedWrappedAmount = wrappedToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(wrappedToken, recipient, receivedWrappedAmount, outputReference);\n }\n\n function unwrapCompoundV2(\n ICToken wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrappedToken, amount, sender);\n\n IERC20 mainToken = IERC20(wrappedToken.underlying());\n\n // The `redeem` function burns `amount` cTokens and transfers underlying tokens to the caller.\n // It returns an error code, where zero indicates success. Other error codes can be found here:\n // https://github.com/compound-finance/compound-protocol/blob/a3214f67b73310d547e00fc578e8355911c9d376/contracts/ErrorReporter.sol\n // solhint-disable-previous-line max-line-length\n require(wrappedToken.redeem(amount) == 0, \"unwrapping failed\");\n\n uint256 withdrawnMainAmount = mainToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(mainToken, recipient, withdrawnMainAmount, outputReference);\n }\n}\n"},"contracts/relayer/ERC4626Wrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ERC4626Wrapping\n * @notice Allows users to wrap and unwrap ERC4626 tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract ERC4626Wrapping is IBaseRelayerLibrary {\n function wrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 underlying = IERC20(wrappedToken.asset());\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlying, address(wrappedToken), amount, sender);\n\n uint256 result = wrappedToken.deposit(amount, recipient);\n\n _setChainedReference(outputReference, result);\n }\n\n function unwrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrappedToken, amount, sender);\n\n uint256 result = wrappedToken.redeem(amount, recipient, address(this));\n\n _setChainedReference(outputReference, result);\n }\n}\n"},"contracts/relayer/EulerWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title EulerWrapping\n * @notice Allows users to wrap and unwrap Euler tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract EulerWrapping is IBaseRelayerLibrary {\n //solhint-disable-next-line private-vars-leading-underscore\n uint256 private constant MAX_UINT256 = type(uint256).max;\n\n function wrapEuler(\n IEulerToken wrappedToken,\n address eulerProtocol,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 underlying = IERC20(wrappedToken.underlyingAsset());\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlying, eulerProtocol, amount, sender);\n\n // Deposit MainToken into EulerToken\n // 0 for the Euler primary account\n wrappedToken.deposit(0, amount);\n\n uint256 receivedWrappedAmount = wrappedToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(wrappedToken, recipient, receivedWrappedAmount, outputReference);\n }\n\n function unwrapEuler(\n IEulerToken wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrappedToken, amount, sender);\n\n // Euler offers two ways to withdraw:\n // 1. Calculate mainTokenOut via wrappedToken.convertBalanceToUnderlying(wrappedTokenAmount)\n // 2. Redeem the account's full balance of wrappedToken for mainToken\n // Option 1 may leave wrappedToken dust in the relayer, so we choose option 2\n // The 0 argument is for the Euler primary account\n wrappedToken.withdraw(0, MAX_UINT256); //MAX_UINT256 forces option 2\n\n IERC20 mainToken = IERC20(wrappedToken.underlyingAsset());\n uint256 withdrawnMainAmount = mainToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(mainToken, recipient, withdrawnMainAmount, outputReference);\n }\n}\n"},"contracts/relayer/GaugeActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title GaugeActions\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract GaugeActions is IBaseRelayerLibrary {\n using SafeERC20 for IERC20;\n\n IBalancerMinter private immutable _balancerMinter;\n bool private immutable _canCallUserCheckpoint;\n\n /**\n * @dev The zero address may be passed as balancerMinter to safely disable features\n * which only exist on mainnet\n */\n constructor(IBalancerMinter balancerMinter, bool canCallUserCheckpoint) {\n _balancerMinter = balancerMinter;\n _canCallUserCheckpoint = canCallUserCheckpoint;\n }\n\n /**\n * @notice Returns true if the relayer is configured to checkpoint gauges directly via `user_checkpoint`.\n * @dev This method is not expected to be called inside `multicall` so it is not marked as `payable`.\n */\n function canCallUserCheckpoint() external view returns (bool) {\n return _canCallUserCheckpoint;\n }\n\n function gaugeDeposit(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 bptToken = gauge.lp_token();\n\n amount = _resolveAmountPullTokenAndApproveSpender(bptToken, address(gauge), amount, sender);\n\n gauge.deposit(amount, recipient);\n }\n\n function gaugeWithdraw(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n amount = _resolveAmountAndPullToken(gauge, amount, sender);\n\n // No approval is needed here, as the gauge Tokens are burned directly from the relayer's account.\n gauge.withdraw(amount);\n\n // Gauge does not support withdrawing BPT to another address atomically.\n // If intended recipient is not the relayer then forward the withdrawn BPT on to the recipient.\n if (recipient != address(this)) {\n IERC20 bptToken = gauge.lp_token();\n\n bptToken.safeTransfer(recipient, amount);\n }\n }\n\n function gaugeMint(address[] calldata gauges, uint256 outputReference) external payable {\n uint256 balMinted = _balancerMinter.mintManyFor(gauges, msg.sender);\n\n _setChainedReference(outputReference, balMinted);\n }\n\n function gaugeSetMinterApproval(\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external payable {\n _balancerMinter.setMinterApprovalWithSignature(address(this), approval, user, deadline, v, r, s);\n }\n\n function gaugeClaimRewards(IStakingLiquidityGauge[] calldata gauges) external payable {\n uint256 numGauges = gauges.length;\n for (uint256 i; i < numGauges; ++i) {\n gauges[i].claim_rewards(msg.sender);\n }\n }\n\n /**\n * @notice Perform a user checkpoint for the given user on the given set of gauges.\n * @dev Both mainnet and child chain gauges are supported.\n */\n function gaugeCheckpoint(address user, IStakingLiquidityGauge[] calldata gauges) external payable {\n if (_canCallUserCheckpoint) {\n _checkpointGaugesViaUserCheckpoint(user, gauges);\n } else {\n _checkpointGaugesViaUserBalance(user, gauges);\n }\n }\n\n function _checkpointGaugesViaUserCheckpoint(address user, IStakingLiquidityGauge[] calldata gauges) internal {\n uint256 numGauges = gauges.length;\n // In L2s (child chain gauges), `user_checkpoint` is not permissioned, so we can just call it directly.\n for (uint256 i = 0; i < numGauges; ++i) {\n gauges[i].user_checkpoint(user);\n }\n }\n\n function _checkpointGaugesViaUserBalance(address user, IStakingLiquidityGauge[] calldata gauges) internal {\n uint256 numGauges = gauges.length;\n IVault.UserBalanceOp[] memory ops = new IVault.UserBalanceOp[](numGauges);\n\n // In mainnet, `user_checkpoint` is permissioned for liquidity gauges, so we cannot call it directly.\n // However, some non-permissioned actions cause the gauge to checkpoint a user as a side effect,\n // even if the operation itself is a no-op. The simplest of these is a gauge token transfer, which we\n // perform here. Since the Vault has an unlimited allowance for gauge tokens, and user balance\n // operations use the Vault allowance, no approvals are necessary.\n // The amount has to be greater than 0 for the checkpoint to take place, so we use 1 wei.\n // There is no actual value transfer since the sender and the recipient are the same.\n for (uint256 i = 0; i < numGauges; ++i) {\n // We first prepare all the transfer operations for each of the gauges.\n ops[i] = IVault.UserBalanceOp({\n asset: IAsset(address(gauges[i])),\n amount: 1,\n sender: user,\n recipient: payable(address(user)),\n kind: IVault.UserBalanceOpKind.TRANSFER_EXTERNAL\n });\n }\n // And we execute all of them at once.\n getVault().manageUserBalance(ops);\n }\n}\n"},"contracts/relayer/GearboxWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title GearboxWrapping\n * @notice Allows users to wrap and unwrap Gearbox tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract GearboxWrapping is IBaseRelayerLibrary {\n function wrapGearbox(\n IGearboxDieselToken wrappedToken,\n address sender,\n address recipient,\n uint256 mainAmount,\n uint256 outputReference\n ) external payable {\n IGearboxVault gearboxVault = IGearboxVault(wrappedToken.owner());\n IERC20 underlying = IERC20(gearboxVault.underlyingToken());\n\n // Main Tokens are not deposited in the dieselToken address. Instead, they're deposited in a gearbox vault\n mainAmount = _resolveAmountPullTokenAndApproveSpender(underlying, address(gearboxVault), mainAmount, sender);\n\n // The third argument of addLiquidity is a referral code, which will be always 0 for the relayer (no referee)\n gearboxVault.addLiquidity(mainAmount, recipient, 0);\n\n _setChainedReference(outputReference, gearboxVault.toDiesel(mainAmount));\n }\n\n function unwrapGearbox(\n IGearboxDieselToken wrappedToken,\n address sender,\n address recipient,\n uint256 dieselAmount,\n uint256 outputReference\n ) external payable {\n dieselAmount = _resolveAmountAndPullToken(IERC20(address(wrappedToken)), dieselAmount, sender);\n\n // Main Tokens are not deposited in the dieselToken address. Instead, they're deposited in a gearbox vault.\n // Therefore, to remove liquidity, we withdraw tokens from the vault, and not from the wrapped token.\n IGearboxVault gearboxVault = IGearboxVault(wrappedToken.owner());\n gearboxVault.removeLiquidity(dieselAmount, recipient);\n\n _setChainedReference(outputReference, gearboxVault.fromDiesel(dieselAmount));\n }\n}\n"},"contracts/relayer/IBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @title IBaseRelayerLibrary\n */\nabstract contract IBaseRelayerLibrary is AssetHelpers {\n using SafeERC20 for IERC20;\n\n constructor(IWETH weth) AssetHelpers(weth) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getVault() public view virtual returns (IVault);\n\n function approveVault(IERC20 token, uint256 amount) external payable virtual;\n\n function peekChainedReferenceValue(uint256 ref) external payable virtual returns (uint256);\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal virtual;\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal virtual;\n\n function _isChainedReference(uint256 amount) internal pure virtual returns (bool);\n\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal virtual;\n\n function _getChainedReferenceValue(uint256 ref) internal virtual returns (uint256);\n\n /**\n * @dev This reuses `_resolveAmountAndPullToken` to adjust the `amount` in case it is a chained reference,\n * then pull that amount of `token` to the relayer. Additionally, it approves the `spender` to enable\n * wrapping operations. The spender is usually a token, but could also be another kind of contract (e.g.,\n * a protocol or gauge).\n */\n function _resolveAmountPullTokenAndApproveSpender(\n IERC20 token,\n address spender,\n uint256 amount,\n address sender\n ) internal returns (uint256 resolvedAmount) {\n resolvedAmount = _resolveAmountAndPullToken(token, amount, sender);\n\n token.safeApprove(spender, resolvedAmount);\n }\n\n /**\n * @dev Extract the `amount` (if it is a chained reference), and pull that amount of `token` to\n * this contract.\n */\n function _resolveAmountAndPullToken(\n IERC20 token,\n uint256 amount,\n address sender\n ) internal returns (uint256 resolvedAmount) {\n resolvedAmount = _resolveAmount(amount);\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, token, resolvedAmount);\n }\n }\n\n /**\n * @dev Resolve an amount from a possible chained reference. This is internal, since some wrappers\n * call it independently.\n */\n function _resolveAmount(uint256 amount) internal returns (uint256) {\n return _isChainedReference(amount) ? _getChainedReferenceValue(amount) : amount;\n }\n\n /**\n * @dev Transfer the given `amount` of `token` to `recipient`, then call `_setChainedReference`\n * with that amount, in case it needs to be encoded as an output reference.\n */\n function _transferAndSetChainedReference(\n IERC20 token,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) internal {\n if (recipient != address(this)) {\n token.safeTransfer(recipient, amount);\n }\n\n _setChainedReference(outputReference, amount);\n }\n\n /**\n * @dev Check for a chained output reference, and encode the given `amount` if necessary.\n * This is internal, since some wrappers call it independently.\n */\n function _setChainedReference(uint256 outputReference, uint256 amount) internal {\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, amount);\n }\n }\n}\n"},"contracts/relayer/interfaces/IMockEulerProtocol.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\ninterface IMockEulerProtocol {\n /**\n * @notice Triggers a transferFrom call `from` msg.sender\n * @dev This mimics the requirement to ensure the euler protocol\n * is allowed to transfer from msg.sender\n */\n function requestUnderlyingFromRelayer(\n address underlying,\n uint256 amount,\n address msgSender\n ) external;\n\n /**\n * @notice Sends tokens from EulerProtocol to relayer\n * @dev This is a simple ERC20.transfer\n */\n function sendUnderlyingToRelayer(\n address wrappedToken,\n uint256 amount,\n address relayer\n ) external;\n}\n"},"contracts/relayer/LidoWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title LidoWrapping\n * @notice Allows users to wrap and unwrap stETH\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract LidoWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n IstETH private immutable _stETH;\n IwstETH private immutable _wstETH;\n\n /**\n * @dev The zero address may be passed as wstETH to safely disable this module\n * @param wstETH - the address of Lido's wrapped stETH contract\n */\n constructor(IERC20 wstETH) {\n // Safely disable stETH wrapping if no address has been passed for wstETH\n _stETH = wstETH != IERC20(0) ? IwstETH(address(wstETH)).stETH() : IstETH(0);\n _wstETH = IwstETH(address(wstETH));\n }\n\n function wrapStETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountPullTokenAndApproveSpender(_stETH, address(_wstETH), amount, sender);\n\n uint256 result = IwstETH(_wstETH).wrap(amount);\n\n _transferAndSetChainedReference(_wstETH, recipient, result, outputReference);\n }\n\n function unwrapWstETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(_wstETH, amount, sender);\n\n // No approval is needed here, as wstETH is burned directly from the relayer's account\n uint256 result = _wstETH.unwrap(amount);\n\n _transferAndSetChainedReference(_stETH, recipient, result, outputReference);\n }\n\n function stakeETH(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmount(amount);\n\n uint256 result = _stETH.submit{ value: amount }(address(this));\n\n _transferAndSetChainedReference(_stETH, recipient, result, outputReference);\n }\n\n function stakeETHAndWrap(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmount(amount);\n\n // We must query this separately, since the wstETH contract doesn't return how much wstETH is minted.\n uint256 result = _wstETH.getWstETHByStETH(amount);\n\n // The fallback function on the wstETH contract automatically stakes and wraps any ETH sent to it.\n // We can then send the ETH safely, and only have to ensure that the call doesn't revert.\n //\n // This would be dangerous if `_wstETH` were set to the zero address. However, in this scenario,\n // this function would have already reverted during the call to `getWstETHByStETH`, preventing loss of funds.\n payable(address(_wstETH)).sendValue(amount);\n\n _transferAndSetChainedReference(_wstETH, recipient, result, outputReference);\n }\n}\n"},"contracts/relayer/ReaperWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ReaperWrapping\n * @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH\n */\nabstract contract ReaperWrapping is IBaseRelayerLibrary {\n function unwrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(vaultToken, amount, sender);\n\n // Burn the rf shares and receive the underlying token.\n vaultToken.withdraw(amount);\n\n IERC20 underlyingToken = IERC20(vaultToken.token());\n // Determine the amount of underlying returned for the shares burned.\n uint256 withdrawnAmount = underlyingToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(underlyingToken, recipient, withdrawnAmount, outputReference);\n }\n\n function wrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 underlyingToken = IERC20(vaultToken.token());\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlyingToken, address(vaultToken), amount, sender);\n\n // Deposit the tokens into the vault\n vaultToken.deposit(amount);\n\n // Determine the amount of shares gained from depositing\n uint256 sharesGained = vaultToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(vaultToken, recipient, sharesGained, outputReference);\n }\n}\n"},"contracts/relayer/SiloWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title SiloWrapping\n * @notice Allows users to wrap and unwrap Silo shareTokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract SiloWrapping is IBaseRelayerLibrary {\n function wrapShareToken(\n IShareToken wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n // Initialize the token we will be wrapping (underlying asset of shareToken)\n IERC20 underlyingToken = IERC20(wrappedToken.asset());\n // Initialize the corresponding Silo (Liquidity Pool)\n ISilo silo = wrappedToken.silo();\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlyingToken, address(silo), amount, sender);\n\n // the collateralOnly param is set to false because we want to receive interest bearing shareTokens\n (, uint256 result) = silo.depositFor(address(underlyingToken), recipient, amount, false);\n\n _setChainedReference(outputReference, result);\n }\n\n function unwrapShareToken(\n IShareToken wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrappedToken, amount, sender);\n\n // Initialize the corresponding Silo (Liquidity Pool)\n ISilo silo = wrappedToken.silo();\n IERC20 underlyingToken = IERC20(wrappedToken.asset());\n\n // No approval is needed here, as the shareTokens are burned directly from the relayer's account.\n // Setting the amount to type(uint256).max informs Silo that we'd like to redeem all the relayer's shares.\n // Ignore the return value which cannot be trusted. It does not include any fees assessed.\n silo.withdraw(address(underlyingToken), type(uint256).max, false);\n\n uint256 result = underlyingToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(underlyingToken, recipient, result, outputReference);\n }\n}\n"},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @title DoubleEntrypointFixRelayer\n * @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n * tokens). It doesn't use the standard relayer architecture to simplify the code.\n */\ncontract DoubleEntrypointFixRelayer is IFlashLoanRecipient {\n using SafeERC20 for IERC20;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant BTC_STABLE_POOL_ADDRESS = IERC20(0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56);\n bytes32 public constant BTC_STABLE_POOL_ID = 0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant wBTC = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);\n IERC20 public constant renBTC = IERC20(0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D);\n IERC20 public constant sBTC = IERC20(0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6);\n IERC20 public constant sBTC_IMPLEMENTATION = IERC20(0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6);\n\n IERC20 public constant SNX_WEIGHTED_POOL_ADDRESS = IERC20(0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B);\n bytes32 public constant SNX_WEIGHTED_POOL_ID = 0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027;\n IERC20 public constant SNX = IERC20(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F);\n IERC20 public constant WETH = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);\n IERC20 public constant SNX_IMPLEMENTATION = IERC20(0x639032d3900875a4cf4960aD6b9ee441657aA93C);\n // solhint-enable const-name-snakecase\n\n // This was removed from the StablePoolEncoder along with StablePool.\n uint256 private constant _STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT = 1;\n\n IVault private immutable _vault;\n IProtocolFeesCollector private immutable _protocolFeeCollector;\n\n constructor(IVault vault) {\n _vault = vault;\n _protocolFeeCollector = vault.getProtocolFeesCollector();\n }\n\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n * nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitBTCStablePool() external {\n IERC20[] memory tokens = new IERC20[](3);\n tokens[0] = wBTC;\n tokens[1] = renBTC;\n tokens[2] = sBTC;\n uint256 bptAmountIn = BTC_STABLE_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull sBTC out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of sBTC required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(sBTC, sBTC.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(BTC_STABLE_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining sBTC back into the Protocol Fee Collector.\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n * fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitSNXWeightedPool() external {\n IERC20[] memory tokens = new IERC20[](2);\n tokens[0] = SNX;\n tokens[1] = WETH;\n uint256 bptAmountIn = SNX_WEIGHTED_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull SNX out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of SNX required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(SNX, SNX.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(SNX_WEIGHTED_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining SNX back into the Protocol Fee Collector.\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n sweepDoubleEntrypointToken(snxEntrypoints);\n }\n\n function _withdrawFromProtocolFeeCollector(IERC20 token, uint256 amount) internal {\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _protocolFeeCollector.withdrawCollectedFees(tokens, amounts, address(_vault));\n }\n\n /**\n * @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\n */\n function sweepSNXsBTC() public {\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n\n sweepDoubleEntrypointToken(snxEntrypoints);\n\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n * token.\n */\n function sweepDoubleEntrypointToken(IERC20[] memory tokens) public {\n uint256[] memory amounts = new uint256[](tokens.length);\n amounts[0] = tokens[0].balanceOf(address(_vault));\n _vault.flashLoan(this, tokens, amounts, \"0x\");\n }\n\n /**\n * @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n * synth). We only need to repay the first loan as that will automatically all other loans.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory,\n bytes memory\n ) external override {\n _require(msg.sender == address(_vault), Errors.CALLER_NOT_VAULT);\n tokens[0].safeTransfer(address(_vault), amounts[0]);\n }\n}\n"},"contracts/relayer/TetuWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title TetuWrapping\n * @notice Allows users to wrap and unwrap Tetu tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract TetuWrapping is IBaseRelayerLibrary {\n function wrapTetu(\n ITetuSmartVault wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 underlying = IERC20(wrappedToken.underlying());\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlying, address(wrappedToken), amount, sender);\n\n wrappedToken.deposit(amount);\n uint256 receivedWrappedAmount = wrappedToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(wrappedToken, recipient, receivedWrappedAmount, outputReference);\n }\n\n function unwrapTetu(\n ITetuSmartVault wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrappedToken, amount, sender);\n\n IERC20 mainToken = IERC20(wrappedToken.underlying());\n wrappedToken.withdraw(amount);\n uint256 withdrawnMainAmount = mainToken.balanceOf(address(this));\n\n _transferAndSetChainedReference(mainToken, recipient, withdrawnMainAmount, outputReference);\n }\n}\n"},"contracts/relayer/UnbuttonWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title UnbuttonWrapping\n * @author @aalavandhan1984 (eng@fragments.org)\n * @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n * a non-rebasing static balance version using the Unbutton wrapper.\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n * The rebasing token to be wrapped is called the \"underlying\" token.\n * The wrapped non-rebasing token is called the \"wrapped\" token.\n * Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\n */\nabstract contract UnbuttonWrapping is IBaseRelayerLibrary {\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param uAmount The underling token amount to be deposited into the wrapper.\n /// @param outputReference Chained output reference.\n function wrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 uAmount,\n uint256 outputReference\n ) external payable {\n IERC20 underlyingToken = IERC20(wrapperToken.underlying());\n\n uAmount = _resolveAmountPullTokenAndApproveSpender(underlyingToken, address(wrapperToken), uAmount, sender);\n\n uint256 mintAmount = wrapperToken.depositFor(recipient, uAmount);\n\n _setChainedReference(outputReference, mintAmount);\n }\n\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n /// @param outputReference Chained output reference.\n function unwrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(wrapperToken, amount, sender);\n\n uint256 withdrawnUAmount = wrapperToken.burnTo(recipient, amount);\n\n _setChainedReference(outputReference, withdrawnUAmount);\n }\n}\n"},"contracts/relayer/VaultActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultActions\n * @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n * @dev Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token\n * transfers from the Vault.\n *\n * All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultActions is IBaseRelayerLibrary {\n using Math for uint256;\n\n /**\n * @dev In a relayer, \"chaining\" - passing values between otherwise independent operations in a multicall - is\n * achieved by passing reference structures between operations. Each reference has an index, corresponding to\n * an offset into the input or output array (e.g., 0 means the first element of the inputs or results), and\n * a key (computed from a hash of the index and some text), which is interpreted as a storage slot. Note that\n * the actual data of the reference is NOT stored in the reference structure, but rather at the storage slot\n * given by the key.\n *\n * The relayer uses masking on the unused MSB bits of all incoming and outgoing values to identify which are\n * references, and which are simply values that can be used directly. Incoming references are replaced with\n * their values before being forwarded to the underlying function. Likewise, outputs of underlying functions\n * that need to be chained are converted to references before being passed as inputs to the next function.\n * See `BaseRelayerLibrary`.\n */\n struct OutputReference {\n uint256 index;\n uint256 key;\n }\n\n function swap(\n IVault.SingleSwap memory singleSwap,\n IVault.FundManagement calldata funds,\n uint256 limit,\n uint256 deadline,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n if (_isChainedReference(singleSwap.amount)) {\n singleSwap.amount = _getChainedReferenceValue(singleSwap.amount);\n }\n\n uint256 result = getVault().swap{ value: value }(singleSwap, funds, limit, deadline);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function batchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] calldata assets,\n IVault.FundManagement calldata funds,\n int256[] calldata limits,\n uint256 deadline,\n uint256 value,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n for (uint256 i = 0; i < swaps.length; ++i) {\n uint256 amount = swaps[i].amount;\n if (_isChainedReference(amount)) {\n swaps[i].amount = _getChainedReferenceValue(amount);\n }\n }\n\n int256[] memory results = getVault().batchSwap{ value: value }(kind, swaps, assets, funds, limits, deadline);\n\n for (uint256 i = 0; i < outputReferences.length; ++i) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n // Batch swap return values are signed, as they are Vault deltas (positive values correspond to assets sent\n // to the Vault, and negative values are assets received from the Vault). To simplify the chained reference\n // value model, we simply store the absolute value.\n // This should be fine for most use cases, as the caller can reason about swap results via the `limits`\n // parameter.\n _setChainedReferenceValue(outputReferences[i].key, Math.abs(results[outputReferences[i].index]));\n }\n }\n\n function manageUserBalance(\n IVault.UserBalanceOp[] memory ops,\n uint256 value,\n OutputReference[] calldata outputReferences\n ) external payable {\n for (uint256 i = 0; i < ops.length; i++) {\n require(ops[i].sender == msg.sender || ops[i].sender == address(this), \"Incorrect sender\");\n\n uint256 amount = ops[i].amount;\n if (_isChainedReference(amount)) {\n ops[i].amount = _getChainedReferenceValue(amount);\n }\n }\n\n getVault().manageUserBalance{ value: value }(ops);\n\n // `manageUserBalance` does not return results, but there is no calculation of amounts as with swaps.\n // We can just use the original amounts.\n for (uint256 i = 0; i < outputReferences.length; ++i) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n _setChainedReferenceValue(outputReferences[i].key, ops[outputReferences[i].index].amount);\n }\n }\n\n enum PoolKind { WEIGHTED, LEGACY_STABLE, COMPOSABLE_STABLE, COMPOSABLE_STABLE_V2 }\n\n function joinPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // The output of a join will be the Pool's token contract, typically known as BPT (Balancer Pool Tokens).\n // Since the Vault is unaware of this (BPT tokens are minted directly to the recipient), we manually\n // measure this balance increase: but only if an output reference is provided.\n IERC20 bpt = IERC20(VaultHelpers.toPoolAddress(poolId));\n uint256 maybeInitialRecipientBPT = _isChainedReference(outputReference) ? bpt.balanceOf(recipient) : 0;\n\n request.userData = _doJoinPoolChainedReferenceReplacements(kind, request.userData);\n\n getVault().joinPool{ value: value }(poolId, sender, recipient, request);\n\n if (_isChainedReference(outputReference)) {\n // In this context, `maybeInitialRecipientBPT` is guaranteed to have been initialized, so we can safely read\n // from it. Note that we assume the recipient balance change has a positive sign (i.e. the recipient\n // received BPT).\n uint256 finalRecipientBPT = bpt.balanceOf(recipient);\n _setChainedReferenceValue(outputReference, finalRecipientBPT.sub(maybeInitialRecipientBPT));\n }\n }\n\n /**\n * @dev Compute the final userData for a join, depending on the PoolKind, performing replacements for chained\n * references as necessary.\n */\n function _doJoinPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedJoinChainedReferenceReplacements(userData);\n } else if (\n kind == PoolKind.LEGACY_STABLE ||\n kind == PoolKind.COMPOSABLE_STABLE ||\n kind == PoolKind.COMPOSABLE_STABLE_V2\n ) {\n return _doStableJoinChainedReferenceReplacements(userData);\n } else {\n revert(\"UNHANDLED_POOL_KIND\");\n }\n }\n\n function _doWeightedJoinChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.JoinKind kind = WeightedPoolUserData.joinKind(userData);\n\n if (kind == WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT) {\n return _doWeightedExactTokensInForBPTOutReplacements(userData);\n } else {\n // All other join kinds are 'given out' (i.e the parameter is a BPT amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n function _doWeightedExactTokensInForBPTOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256[] memory amountsIn, uint256 minBPTAmountOut) = WeightedPoolUserData.exactTokensInForBptOut(userData);\n\n // Save gas by only re-encoding the data if we actually performed a replacement\n return\n _replacedAmounts(amountsIn)\n ? abi.encode(WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT, amountsIn, minBPTAmountOut)\n : userData;\n }\n\n function _doStableJoinChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n // The only 'given in' join (in which the parameters are the amounts in) is EXACT_TOKENS_IN_FOR_BPT_OUT,\n // so that is the only one where we do replacements. Luckily all versions of Stable Pool share the same\n // enum value for it, so we can treat them all the same, and just use the latest version.\n\n // Note that ComposableStablePool versions V2 and up support a proportional join kind, which some previous\n // versions did not. While it is not rejected here, if passed to the Pool it will revert.\n\n StablePoolUserData.JoinKind kind = StablePoolUserData.joinKind(userData);\n\n if (kind == StablePoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT) {\n return _doStableExactTokensInForBPTOutReplacements(userData);\n } else {\n // All other join kinds are 'given out' (i.e the parameter is a BPT amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n function _doStableExactTokensInForBPTOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256[] memory amountsIn, uint256 minBPTAmountOut) = StablePoolUserData.exactTokensInForBptOut(userData);\n\n // Save gas by only re-encoding the data if we actually performed a replacement\n return\n _replacedAmounts(amountsIn)\n ? abi.encode(StablePoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT, amountsIn, minBPTAmountOut)\n : userData;\n }\n\n // Mutates amountsIn, and returns true if any replacements were made\n function _replacedAmounts(uint256[] memory amountsIn) private returns (bool) {\n bool madeReplacements = false;\n\n for (uint256 i = 0; i < amountsIn.length; ++i) {\n uint256 amount = amountsIn[i];\n if (_isChainedReference(amount)) {\n amountsIn[i] = _getChainedReferenceValue(amount);\n madeReplacements = true;\n }\n }\n\n return madeReplacements;\n }\n\n function exitPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address payable recipient,\n IVault.ExitPoolRequest memory request,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // To track the changes of internal balances, we need an array of token addresses.\n // We save this here to avoid having to recalculate after the exit.\n IERC20[] memory trackedTokens = new IERC20[](outputReferences.length);\n\n // Query initial balances for all tokens, and record them as chained references\n uint256[] memory initialRecipientBalances = new uint256[](outputReferences.length);\n for (uint256 i = 0; i < outputReferences.length; i++) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n IAsset asset = request.assets[outputReferences[i].index];\n if (request.toInternalBalance) {\n trackedTokens[i] = _asIERC20(asset);\n } else {\n initialRecipientBalances[i] = _isETH(asset) ? recipient.balance : _asIERC20(asset).balanceOf(recipient);\n }\n }\n if (request.toInternalBalance) {\n initialRecipientBalances = getVault().getInternalBalance(recipient, trackedTokens);\n }\n\n // Exit the Pool\n request.userData = _doExitPoolChainedReferenceReplacements(kind, request.userData);\n getVault().exitPool(poolId, sender, recipient, request);\n\n // Query final balances for all tokens of interest\n uint256[] memory finalRecipientTokenBalances = new uint256[](outputReferences.length);\n if (request.toInternalBalance) {\n finalRecipientTokenBalances = getVault().getInternalBalance(recipient, trackedTokens);\n } else {\n for (uint256 i = 0; i < outputReferences.length; i++) {\n IAsset asset = request.assets[outputReferences[i].index];\n finalRecipientTokenBalances[i] = _isETH(asset)\n ? recipient.balance\n : _asIERC20(asset).balanceOf(recipient);\n }\n }\n\n // Calculate deltas and save as chained references\n for (uint256 i = 0; i < outputReferences.length; i++) {\n _setChainedReferenceValue(\n outputReferences[i].key,\n finalRecipientTokenBalances[i].sub(initialRecipientBalances[i])\n );\n }\n }\n\n /**\n * @dev Compute the final userData for an exit, depending on the PoolKind, performing replacements for chained\n * references as necessary.\n */\n function _doExitPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedExitChainedReferenceReplacements(userData);\n } else {\n if (kind == PoolKind.LEGACY_STABLE) {\n return _doLegacyStableExitChainedReferenceReplacements(userData);\n } else if (kind == PoolKind.COMPOSABLE_STABLE) {\n return _doComposableStableExitChainedReferenceReplacements(userData);\n } else if (kind == PoolKind.COMPOSABLE_STABLE_V2) {\n return _doComposableStableV2ExitChainedReferenceReplacements(userData);\n } else {\n revert(\"UNHANDLED_POOL_KIND\");\n }\n }\n }\n\n function _doWeightedExitChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.ExitKind kind = WeightedPoolUserData.exitKind(userData);\n\n if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT) {\n return _doWeightedExactBptInForOneTokenOutReplacements(userData);\n } else if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT) {\n return _doWeightedExactBptInForTokensOutReplacements(userData);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n function _doWeightedExactBptInForOneTokenOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256 bptAmountIn, uint256 tokenIndex) = WeightedPoolUserData.exactBptInForTokenOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, bptAmountIn, tokenIndex);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n\n function _doWeightedExactBptInForTokensOutReplacements(bytes memory userData) private returns (bytes memory) {\n uint256 bptAmountIn = WeightedPoolUserData.exactBptInForTokensOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n\n // Stable Pool version-dependent recoding dispatch functions\n\n /*\n * While all Stable Pool versions fortuitously support the same join kinds (V2 and higher support one extra),\n * they do NOT all support the same exit kinds. Also, though the encoding of the data associated with the exit\n * is uniform across pool kinds for the same exit method, the ExitKind ID itself may have a different value.\n *\n * For instance, BPT_IN_FOR_EXACT_TOKENS_OUT is 2 in legacy Stable Pools, but 1 in Composable Stable Pools.\n * (See the reference comment and libraries below.)\n *\n * Accordingly, the three do[PoolKind]ExitChainedReferenceReplacements functions below (for LegacyStable,\n * ComposableStable, and CopmosableStableV2) extract the exitKind and pass it through to the shared\n * recoding functions.\n */\n\n function _doLegacyStableExitChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n uint8 exitKind = uint8(StablePoolUserData.exitKind(userData));\n\n if (exitKind == uint8(LegacyStablePoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT)) {\n return _doStableExactBptInForOneTokenOutReplacements(userData, exitKind);\n } else if (exitKind == uint8(LegacyStablePoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT)) {\n return _doStableExactBptInForTokensOutReplacements(userData, exitKind);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n // For the first deployment of ComposableStablePool\n function _doComposableStableExitChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n uint8 exitKind = uint8(StablePoolUserData.exitKind(userData));\n\n if (exitKind == uint8(ComposableStablePoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT)) {\n return _doStableExactBptInForOneTokenOutReplacements(userData, exitKind);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n // For ComposableStablePool V2 and V3\n function _doComposableStableV2ExitChainedReferenceReplacements(bytes memory userData)\n private\n returns (bytes memory)\n {\n uint8 exitKind = uint8(StablePoolUserData.exitKind(userData));\n\n if (exitKind == uint8(StablePoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT)) {\n return _doStableExactBptInForOneTokenOutReplacements(userData, exitKind);\n } else if (exitKind == uint8(StablePoolUserData.ExitKind.EXACT_BPT_IN_FOR_ALL_TOKENS_OUT)) {\n return _doStableExactBptInForTokensOutReplacements(userData, exitKind);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n // Shared Stable Exit recoding functions\n\n // The following two functions perform the actual recoding, which involves parsing and re-encoding the userData.\n // The encoding of the actual arguments is uniform across pool kinds, which allows these recoding functions to be\n // shared. However, the ExitKind ID itself can vary, so it must be passed in from each specific pool kind handler.\n\n function _doStableExactBptInForOneTokenOutReplacements(bytes memory userData, uint8 exitKind)\n private\n returns (bytes memory)\n {\n (uint256 bptAmountIn, uint256 tokenIndex) = StablePoolUserData.exactBptInForTokenOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(exitKind, bptAmountIn, tokenIndex);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n\n function _doStableExactBptInForTokensOutReplacements(bytes memory userData, uint8 exitKind)\n private\n returns (bytes memory)\n {\n uint256 bptAmountIn = StablePoolUserData.exactBptInForTokensOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(exitKind, bptAmountIn);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n}\n\n/*\n For reference:\n\n StablePoolUserData (applies to ComposableStablePool V2+):\n\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT, EXACT_BPT_IN_FOR_ALL_TOKENS_OUT }\n\n WeightedPoolUserData:\n\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n\n StablePhantomPools can only be exited proportionally when the pool is paused: and the pause window has expired.\n They have their own enum:\n\n enum ExitKindPhantom { EXACT_BPT_IN_FOR_TOKENS_OUT }\n*/\n\n// Applies to StablePool, MetaStablePool, StablePool V2\nlibrary LegacyStablePoolUserData {\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n}\n\n// Applies to the first deployment of ComposableStablePool (pre-Versioning)\nlibrary ComposableStablePoolUserData {\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n}\n"},"contracts/relayer/VaultPermit.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultPermit\n * @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultPermit is IBaseRelayerLibrary {\n function vaultPermit(\n IERC20Permit token,\n address owner,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(owner, address(getVault()), value, deadline, v, r, s);\n }\n\n function vaultPermitDAI(\n IERC20PermitDAI token,\n address holder,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(holder, address(getVault()), nonce, expiry, allowed, v, r, s);\n }\n}\n"},"contracts/relayer/YearnWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title YearnWrapping\n * @notice Allows users to wrap and unwrap Yearn tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract YearnWrapping is IBaseRelayerLibrary {\n function wrapYearn(\n IYearnTokenVault wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n IERC20 underlying = IERC20(wrappedToken.token());\n\n amount = _resolveAmountPullTokenAndApproveSpender(underlying, address(wrappedToken), amount, sender);\n\n uint256 receivedWrappedAmount = wrappedToken.deposit(amount, recipient);\n\n _setChainedReference(outputReference, receivedWrappedAmount);\n }\n\n function unwrapYearn(\n IYearnTokenVault wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n amount = _resolveAmountAndPullToken(IERC20(address(wrappedToken)), amount, sender);\n\n uint256 mainAmount = wrappedToken.withdraw(amount, recipient);\n\n _setChainedReference(outputReference, mainAmount);\n }\n}\n"},"contracts/test/MockAaveAMPLToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\n// https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol\";\n\nimport \"./MockUnbuttonERC20.sol\";\n\ncontract MockAaveAMPLToken is MockUnbuttonERC20, IAToken {\n constructor(\n address underlying_,\n string memory name_,\n string memory symbol_\n ) MockUnbuttonERC20(underlying_, name_, symbol_) { }\n\n function UNDERLYING_ASSET_ADDRESS() external view override returns (address) {\n return _underlying;\n }\n}\n"},"contracts/test/MockBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\n//import \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBaseRelayerLibrary.sol\";\n\nimport \"../relayer/BaseRelayerLibrary.sol\";\n\ncontract MockBaseRelayerLibrary is BaseRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(IVault vault, string memory version) BaseRelayerLibrary(vault, version) {}\n\n function isChainedReference(uint256 amount) public pure returns (bool) {\n return _isChainedReference(amount);\n }\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public payable {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n\n function bytesTunnel(bytes memory input) public pure returns (bytes memory) {\n return input;\n }\n}\n"},"contracts/test/MockBatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BatchRelayerLibrary.sol\";\n\ncontract MockBatchRelayerLibrary is BatchRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter,\n bool canCallUserCheckpoint\n ) BatchRelayerLibrary(vault, wstETH, minter, canCallUserCheckpoint, \"\") {}\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n}\n"},"contracts/test/MockCToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockCToken is TestToken, ICToken {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n address private immutable _underlying;\n uint256 private immutable _scaleFactor;\n\n uint256 private _exchangeRate;\n\n constructor(\n string memory name,\n string memory symbol,\n address underlyingAsset,\n uint256 exchangeRate\n ) TestToken(name, symbol, 8) { // cTokens always have 8 decimals\n _underlying = underlyingAsset;\n\n // Scale the exchange rate to 1e(18-8+underlyingDecimals).\n uint256 scaleFactor = 10**(uint256(10).add(ERC20(underlyingAsset).decimals()));\n _scaleFactor = scaleFactor;\n\n // Incoming exchange rate is scaled to 1e18.\n _exchangeRate = exchangeRate.mulDown(scaleFactor);\n }\n\n /// @inheritdoc ICToken\n function underlying() external view override returns (address) {\n return _underlying;\n }\n\n /// @inheritdoc ICToken\n function mint(uint256 mintAmount) external override returns (uint256) {\n uint256 amountToMint = toCTokenAmount(mintAmount);\n\n IERC20(_underlying).safeTransferFrom(msg.sender, address(this), mintAmount);\n\n _mint(msg.sender, amountToMint);\n\n return 0;\n }\n\n /// @inheritdoc ICToken\n function redeem(uint256 redeemTokens) external override returns (uint256) {\n _burn(msg.sender, redeemTokens);\n\n uint256 amountToReturn = fromCTokenAmount(redeemTokens);\n\n IERC20(_underlying).safeTransfer(msg.sender, amountToReturn);\n\n return 0;\n }\n\n /**\n * @notice Mint cTokens directly without depositing underlying assets.\n * @dev This is required for testing because Compound's `mint` function overrides `TestToken.mint`.\n */\n function mintTestTokens(address receiver, uint256 mintAmount) external {\n _mint(receiver, mintAmount);\n }\n\n /**\n * @notice Preview the amount of underlying returned by a withdrawal.\n * @param amount The number of cTokens to be redeemed.\n * @return The number of underlying tokens returned.\n */\n function fromCTokenAmount(uint256 amount) public view returns (uint256) {\n return amount.mulUp(_exchangeRate);\n }\n\n /**\n * @notice Preview the amount of cTokens returned by a deposit.\n * @param amount The number of underlying tokens to be deposited.\n * @return The number of cTokens returned.\n */\n function toCTokenAmount(uint256 amount) public view returns (uint256) {\n return amount.divDown(_exchangeRate);\n }\n\n /**\n * @notice Set the exchange rate for testing purposes.\n * @param newExchangeRate The number of underlying tokens per cToken, scaled to 1e18.\n */\n function setExchangeRate(uint256 newExchangeRate) external {\n _exchangeRate = newExchangeRate.mulDown(_scaleFactor);\n }\n}\n"},"contracts/test/MockEulerProtocol.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\ncontract MockEulerProtocol {\n using SafeERC20 for IERC20;\n\n function requestUnderlyingFromRelayer(\n address underlying,\n uint256 amount,\n address relayer\n ) public {\n IERC20(underlying).safeTransferFrom(relayer, (address(this)), amount);\n }\n\n function sendUnderlyingToRelayer(\n address underlying,\n uint256 amount,\n address relayer\n ) public {\n IERC20(underlying).safeTransfer(relayer, amount);\n }\n}\n"},"contracts/test/MockEulerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// Functionality required is onDeposit it needs to pull ERC20s out\n// of users wallet and transfer into Euler protocol. Similar\n// to on withdrawl. it needs to pull funds from EulerProtocol\n// and send back to users wallet (the underlying token)\n\nimport \"../relayer/interfaces/IMockEulerProtocol.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\n/**\n * @notice Allows users to to `deposit` into and `withdraw` from an eToken. The eToken\n * serves as a receipt Token.\n */\ncontract MockEulerToken is IEulerToken, TestToken {\n using FixedPoint for uint256;\n\n uint256 public exchangeRateMultiplier;\n //solhint-disable-next-line private-vars-leading-underscore\n uint256 private constant MAX_UINT256 = type(uint256).max;\n\n //solhint-disable-next-line var-name-mixedcase\n IMockEulerProtocol public immutable EULER_PROTOCOL;\n\n address private immutable _underlying;\n\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals,\n address underlying,\n IMockEulerProtocol eulerProtocol\n ) TestToken(name, symbol, decimals) {\n exchangeRateMultiplier = FixedPoint.ONE;\n _underlying = underlying;\n EULER_PROTOCOL = eulerProtocol;\n }\n\n /// @inheritdoc IEulerToken\n function convertBalanceToUnderlying(uint256 balance) public view override returns (uint256) {\n return balance.mulUp(exchangeRateMultiplier);\n }\n\n function setExchangeRateMultiplier(uint256 _exchangeRateMultiplier) external {\n exchangeRateMultiplier = _exchangeRateMultiplier;\n }\n\n /// @inheritdoc IEulerToken\n function convertUnderlyingToBalance(uint256 balance) public view override returns (uint256) {\n return balance.divDown(exchangeRateMultiplier);\n }\n\n /// @inheritdoc IEulerToken\n function underlyingAsset() external view override returns (address) {\n return _underlying;\n }\n\n /// @inheritdoc IEulerToken\n function deposit(uint256, uint256 amount) external override {\n // The Relayer only uses one account, so no subAccountID required\n // The subAccountID is set to zero in the relayer.\n // Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens\n\n // assumes Euler protocol has approval to move `amount` from users wallet\n // mints MockEulerTokens to msg.sender (which is the relayer)\n // the relayer has earlier used `_pullToken` to ensure it is the contract\n // which is calling `deposit` on an eToken.\n EULER_PROTOCOL.requestUnderlyingFromRelayer(_underlying, amount, msg.sender);\n _mint(msg.sender, convertUnderlyingToBalance(amount));\n }\n\n /// @inheritdoc IEulerToken\n function withdraw(uint256, uint256 amount) external override {\n uint256 wrappedAmount;\n\n if (amount == MAX_UINT256) {\n // MAX_UINT indicates that the sender's full balance of wrappedToken should be redeemed.\n wrappedAmount = balanceOf(msg.sender);\n amount = convertBalanceToUnderlying(wrappedAmount);\n } else {\n wrappedAmount = convertUnderlyingToBalance(amount);\n }\n\n EULER_PROTOCOL.sendUnderlyingToRelayer(_underlying, amount, msg.sender);\n _burn(msg.sender, wrappedAmount);\n }\n}\n"},"contracts/test/MockGearboxDieselToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockGearboxDieselToken is TestToken, IGearboxDieselToken {\n address private immutable _gearboxVaultAddress;\n\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals,\n address gearboxVaultAddress\n ) TestToken(name, symbol, decimals) {\n _gearboxVaultAddress = gearboxVaultAddress;\n }\n\n function owner() external view override returns (address) {\n return _gearboxVaultAddress;\n }\n}\n"},"contracts/test/MockGearboxVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\nimport \"./MockGearboxDieselToken.sol\";\n\ncontract MockGearboxVault is IGearboxVault {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n uint256 private immutable _rate = 1e27;\n MockGearboxDieselToken private _dieselToken;\n IERC20 private immutable _underlyingToken;\n\n constructor(\n address underlyingTokenAddress\n ) {\n _underlyingToken = IERC20(underlyingTokenAddress);\n }\n\n function setDieselToken(address dieselTokenAddress) external {\n _dieselToken = MockGearboxDieselToken(dieselTokenAddress);\n }\n\n function underlyingToken() external view override returns (address) {\n return address(_underlyingToken);\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function getDieselRate_RAY() external view override returns (uint256) {\n return _rate;\n }\n\n function fromDiesel(uint256 amountDiesel) external view override returns (uint256) {\n return _fromDiesel(amountDiesel);\n }\n\n function toDiesel(uint256 amountUnderlying) external view override returns (uint256) {\n return _toDiesel(amountUnderlying);\n }\n\n function addLiquidity(\n uint256 amount,\n address onBehalfOf,\n uint256\n ) external override {\n _underlyingToken.safeTransferFrom(msg.sender, address(this), amount);\n uint256 wrappedAmount = _toDiesel(amount);\n _dieselToken.mint(onBehalfOf, wrappedAmount);\n }\n\n function removeLiquidity(uint256 wrappedAmount, address to) external override {\n _dieselToken.burnWithoutAllowance(msg.sender, wrappedAmount);\n uint256 mainAmount = _fromDiesel(wrappedAmount);\n _underlyingToken.safeTransfer(to, mainAmount);\n }\n\n function _fromDiesel(uint256 amountDiesel) private view returns (uint256) {\n return amountDiesel.mulDown(_rate) / 10**9;\n }\n\n function _toDiesel(uint256 amountUnderlying) private view returns (uint256) {\n return (amountUnderlying * 10**9).divDown(_rate);\n }\n}\n"},"contracts/test/MockReaperVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\n//we're unable to implement IYearnTokenVault because it defines the decimals function, which collides with\n//the TestToken ERC20 implementation\ncontract MockReaperVault is TestToken {\n using SafeERC20 for IERC20;\n\n address public immutable token;\n uint256 private _pricePerFullShare;\n\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals,\n address underlyingAsset,\n uint256 fullSharePrice\n ) TestToken(name, symbol, decimals) {\n token = underlyingAsset;\n _pricePerFullShare = fullSharePrice;\n }\n\n function getPricePerFullShare() external view returns (uint256) {\n return _pricePerFullShare;\n }\n\n function setPricePerFullShare(uint256 _newPricePerFullShare) public {\n _pricePerFullShare = _newPricePerFullShare;\n }\n\n function deposit(uint256 _amount) public {\n IERC20(token).safeTransferFrom(msg.sender, address(this), _amount);\n\n uint256 amountToMint = _amount * 10**18 / _pricePerFullShare;\n\n _mint(msg.sender, amountToMint);\n }\n\n function withdraw(uint256 _shares) public {\n _burn(msg.sender, _shares);\n\n uint256 amountToReturn = _shares * _pricePerFullShare / 10**18;\n\n IERC20(token).safeTransfer(msg.sender, amountToReturn);\n }\n}"},"contracts/test/MockRecoveryRateProviderPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\";\n\ncontract MockRecoveryRateProviderPool is IRateProviderPool, BasePoolAuthorization, RecoveryMode {\n IVault private immutable _vault;\n bool private _recoveryMode;\n\n IRateProvider[] private _rateProviders;\n\n constructor(IVault vault, IRateProvider[] memory rateProviders)\n Authentication(bytes32(uint256(address(this))))\n BasePoolAuthorization(_DELEGATE_OWNER)\n RecoveryMode(vault)\n {\n _vault = vault;\n _rateProviders = rateProviders;\n }\n\n // IRateProviderPool\n\n function getRateProviders() external view override returns (IRateProvider[] memory) {\n return _rateProviders;\n }\n\n // BasePoolAuthorization\n\n function _getAuthorizer() internal view override returns (IAuthorizer) {\n return _vault.getAuthorizer();\n }\n\n // Recovery Mode\n\n function inRecoveryMode() public view override returns (bool) {\n return _recoveryMode;\n }\n\n function _setRecoveryMode(bool enabled) internal override {\n _recoveryMode = enabled;\n }\n\n function _doRecoveryModeExit(\n uint256[] memory,\n uint256,\n bytes memory\n ) internal override returns (uint256, uint256[] memory) {}\n}\n"},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\";\nimport \"./MockRecoveryRateProviderPool.sol\";\n\ncontract MockRecoveryRateProviderPoolFactory is BasePoolFactory {\n uint256 private constant _INITIAL_PAUSE_WINDOW_DURATION = 90 days;\n uint256 private constant _BUFFER_PERIOD_DURATION = 30 days;\n\n constructor(IVault _vault, IProtocolFeePercentagesProvider protocolFeeProvider)\n BasePoolFactory(\n _vault,\n protocolFeeProvider,\n _INITIAL_PAUSE_WINDOW_DURATION,\n _BUFFER_PERIOD_DURATION,\n type(MockRecoveryRateProviderPool).creationCode\n )\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function create(IRateProvider[] memory rateProviders, bytes32 salt) external returns (address) {\n return _create(abi.encode(getVault(), rateProviders), salt);\n }\n}\n"},"contracts/test/MockRevertingRateProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\ncontract MockRevertingRateProvider is IRateProvider {\n uint256 private _rate;\n\n bool private _revertOnGetRate;\n\n constructor() {\n _rate = FixedPoint.ONE;\n _revertOnGetRate = false;\n }\n\n function getRate() external view override returns (uint256) {\n if (_revertOnGetRate) {\n revert(\"getRate revert\");\n }\n\n return _rate;\n }\n\n function setRevertOnGetRate(bool revertOnGetRate) external {\n _revertOnGetRate = revertOnGetRate;\n }\n}\n"},"contracts/test/MockShareToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockShareToken is TestToken, IShareToken {\n ISilo private immutable _silo;\n address private immutable _asset;\n\n /**\n * @dev Token is always deployed for specific Silo and asset\n * @param name token name\n * @param symbol token symbol\n * @param silo Silo address at which tokens were deployed\n * @param asset Asset for which these tokens were deployed\n */\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals,\n address silo,\n address asset\n ) TestToken(name, symbol, decimals) {\n _silo = ISilo(silo);\n _asset = asset;\n }\n\n function asset() external view override returns (address) {\n return _asset;\n }\n\n function silo() external view override returns (ISilo) {\n return _silo;\n }\n}\n"},"contracts/test/MockSilo.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./MockShareToken.sol\";\n\ncontract MockBaseSilo is IBaseSilo {\n address private immutable _siloAsset;\n mapping(address => AssetStorage) internal _assetStorage;\n\n constructor(address siloAsset) {\n _siloAsset = siloAsset;\n }\n\n function assetStorage(address _asset) external view override returns (AssetStorage memory) {\n return _assetStorage[_asset];\n }\n\n function setAssetStorage(\n address interestBearingAsset,\n IShareToken collateralToken,\n IShareToken collateralOnlyToken,\n IShareToken debtToken,\n uint256 totalDeposits,\n uint256 collateralOnlyDeposits,\n uint256 totalBorrowAmount\n ) external {\n AssetStorage memory storageValue = AssetStorage(\n collateralToken,\n collateralOnlyToken,\n debtToken,\n totalDeposits,\n collateralOnlyDeposits,\n totalBorrowAmount\n );\n\n _assetStorage[interestBearingAsset] = storageValue;\n }\n}\n\ncontract MockSilo is ISilo, MockBaseSilo {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n uint256 public rate;\n\n constructor(address _siloAsset) MockBaseSilo(_siloAsset) {\n rate = FixedPoint.TWO;\n }\n\n function depositFor(\n address _asset,\n address _depositor,\n uint256 _amount,\n bool /*_collateralOnly*/\n ) external override returns (uint256 collateralAmount, uint256 collateralShare) {\n IERC20(_asset).safeTransferFrom(msg.sender, address(this), _amount);\n address shareTokenAddress = address(_assetStorage[_asset].collateralToken);\n uint256 shares = underlyingToShares(_amount);\n MockShareToken(shareTokenAddress).mint(_depositor, shares);\n return (_amount, shares);\n }\n\n function withdraw(\n address _asset,\n uint256 _amount,\n bool /*_collateralOnly*/\n ) external override returns (uint256 withdrawnAmount, uint256 withdrawnShare) {\n address shareTokenAddress = address(_assetStorage[_asset].collateralToken);\n uint256 burnedShare;\n // If _amount is set to the max value of a uint256 the whole deposited balance of a user is withdrawn\n if (_amount == type(uint256).max) {\n burnedShare = IShareToken(shareTokenAddress).balanceOf(msg.sender);\n _amount = sharesToUnderlying(burnedShare);\n } else {\n burnedShare = underlyingToShares(_amount);\n }\n MockShareToken(shareTokenAddress).burnWithoutAllowance(msg.sender, burnedShare);\n IERC20(_asset).safeTransfer(msg.sender, _amount);\n return (_amount, burnedShare);\n }\n\n function setRate(uint256 _rate) external {\n rate = _rate;\n }\n\n function sharesToUnderlying(uint256 _amount) public view returns (uint256) {\n return _amount.mulDown(rate);\n }\n\n function underlyingToShares(uint256 _amount) public view returns (uint256) {\n return _amount.divDown(rate);\n }\n}\n"},"contracts/test/MockStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\";\n\ncontract MockStaticATokenLM is ERC20Mock, IStaticATokenLM {\n // Mock event to log calls, taken from\n // https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/protocol/tokenization/StaticATokenLM.sol\n event Deposit(address depositor, address recipient, uint256 amount, uint16 referralCode, bool fromUnderlying);\n\n event Withdraw(address owner, address recipient, uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying);\n\n uint256 private constant _rate = 1e27;\n IERC20 private immutable _ASSET;\n IERC20 private immutable _ATOKEN;\n\n constructor(\n string memory name,\n string memory symbol,\n IERC20 underlyingAsset,\n IERC20 aToken\n ) ERC20Mock(name, symbol) {\n _ASSET = underlyingAsset;\n _ATOKEN = aToken;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external view override returns (IERC20) {\n return _ASSET;\n }\n\n function ATOKEN() external view override returns (IERC20) {\n return _ATOKEN;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external pure override returns (address) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function rate() public pure override returns (uint256) {\n return _rate;\n }\n\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external override returns (uint256) {\n emit Deposit(msg.sender, recipient, amount, referralCode, fromUnderlying);\n return amount;\n }\n\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external override returns (uint256, uint256) {\n emit Withdraw(msg.sender, recipient, amount, staticToDynamicAmount(amount), toUnderlying);\n return (amount, amount);\n }\n\n function staticToDynamicAmount(uint256 amount) public pure override returns (uint256) {\n return amount;\n }\n\n function dynamicToStaticAmount(uint256 amount) external pure override returns (uint256) {\n return amount;\n }\n\n function permit(\n address,\n address,\n uint256,\n uint256,\n uint8,\n bytes32,\n bytes32\n ) public pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getDomainSeparator() public pure override returns (bytes32) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function withdrawDynamicAmount(\n address,\n uint256,\n bool\n ) external pure override returns (uint256, uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function metaDeposit(\n address,\n address,\n uint256,\n uint16,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function metaWithdraw(\n address,\n address,\n uint256,\n uint256,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256, uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function dynamicBalanceOf(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function collectAndUpdateRewards() external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewardsOnBehalf(\n address,\n address,\n bool\n ) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewards(address, bool) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewardsToSelf(bool) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getTotalClaimableRewards() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getClaimableRewards(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getUnclaimedRewards(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getAccRewardsPerToken() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLifetimeRewardsClaimed() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLifetimeRewards() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLastRewardBlock() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function INCENTIVES_CONTROLLER() external pure override returns (address) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function REWARD_TOKEN() external pure override returns (IERC20) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/test/MockStETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockStETH is TestToken, IstETH {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) TestToken(name, symbol, decimals) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n event EthStaked(uint256 amount);\n\n function submit(address) external payable override returns (uint256) {\n _mint(msg.sender, msg.value);\n emit EthStaked(msg.value);\n return msg.value;\n }\n}\n"},"contracts/test/MockTetuShareValueHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\";\n\ncontract MockTetuShareValueHelper {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n // Since Tetu TokenRate is basically 1 + yield, 1 is a good default value when token is not fully initialized\n uint256 private immutable _defaultRate = FixedPoint.ONE;\n\n // Exposing these functions to make it easy to calculate rate on tests.\n // Important: This function does not belong to Tetu's token vault!\n function fromTetuAmount(uint256 wrappedAmount, ITetuSmartVault wrappedToken) external view returns (uint256) {\n return _fromTetuAmount(wrappedAmount, wrappedToken);\n }\n\n // Exposing these functions to make it easy to calculate rate on tests.\n // Important: This function does not belong to Tetu's token vault!\n function toTetuAmount(uint256 mainAmount, ITetuSmartVault wrappedToken) external view returns (uint256) {\n return _toTetuAmount(mainAmount, wrappedToken);\n }\n\n function _getTokenRate(ITetuSmartVault wrappedToken) internal view returns (uint256) {\n uint256 wrappedTokenTotalSupply = wrappedToken.totalSupply();\n if (wrappedTokenTotalSupply == 0) {\n return _defaultRate;\n } else {\n uint256 underlyingBalanceInVault = wrappedToken.underlyingBalanceInVault();\n uint256 strategyInvestedUnderlyingBalance = _getStrategyInvestedUnderlyingBalance(wrappedToken);\n uint256 balance = underlyingBalanceInVault.add(strategyInvestedUnderlyingBalance);\n // Notice that \"balance\" and \"wrappedTokenTotalSupply\" have the same value for decimals. divDown multiplies\n // by FixedPoint.ONE, so _getTokenRate returns 18 decimals\n return balance.divDown(wrappedTokenTotalSupply);\n }\n }\n\n function _fromTetuAmount(uint256 wrappedAmount, ITetuSmartVault wrappedToken) internal view returns (uint256) {\n uint256 rate = _getTokenRate(wrappedToken);\n return wrappedAmount.mulDown(rate);\n }\n\n function _toTetuAmount(uint256 mainAmount, ITetuSmartVault wrappedToken) internal view returns (uint256) {\n uint256 rate = _getTokenRate(wrappedToken);\n return mainAmount.divDown(rate);\n }\n\n function _getStrategyInvestedUnderlyingBalance(ITetuSmartVault wrappedToken) private view returns (uint256) {\n address tetuStrategy = wrappedToken.strategy();\n if (tetuStrategy == address(0)) {\n // strategy address can be 0x00 when not initialized in the token.\n return _defaultRate;\n } else {\n return ITetuStrategy(tetuStrategy).investedUnderlyingBalance();\n }\n }\n}\n"},"contracts/test/MockTetuSmartVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport \"./MockTetuStrategy.sol\";\nimport \"./MockTetuShareValueHelper.sol\";\n\ncontract MockTetuSmartVault is ITetuSmartVault, TestToken, MockTetuShareValueHelper {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n IERC20 public immutable underlyingAsset;\n uint256 private immutable _underlyingDecimals;\n uint256 private _underlyingBalanceInVault = 0;\n MockTetuStrategy private immutable _tetuStrategy;\n uint256 private _desiredRate;\n\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals,\n address _underlyingAsset,\n MockTetuStrategy tetuStrategy\n ) TestToken(name, symbol, decimals) {\n underlyingAsset = IERC20(_underlyingAsset);\n _underlyingDecimals = decimals;\n _tetuStrategy = tetuStrategy;\n }\n\n function getPricePerFullShare() external pure override returns (uint256) {\n revert(\"Should not call this\");\n }\n\n // Should pass rate with decimals from underlyingToken\n function setRate(uint256 newRate) public {\n // stores latest rate, so the balances are recalculated after deposit and withdraw\n _desiredRate = newRate;\n _setRate(newRate);\n }\n\n function underlyingBalanceInVault() external view override returns (uint256) {\n return _underlyingBalanceInVault;\n }\n\n function underlyingBalanceWithInvestmentForHolder(address) external view override returns (uint256) {\n return underlyingAsset.balanceOf(address(this));\n }\n\n function deposit(uint256 amount) external override {\n underlyingAsset.safeTransferFrom(msg.sender, address(this), amount);\n uint256 wrappedAmount = _toTetuAmount(amount, this);\n _mint(msg.sender, wrappedAmount);\n }\n\n function depositFor(uint256 , address) external pure override {\n _revert(Errors.SHOULD_NOT_HAPPEN);\n }\n\n function withdraw(uint256 numberOfShares) external override {\n _burn(msg.sender, numberOfShares);\n uint256 mainAmount = _fromTetuAmount(numberOfShares, this);\n underlyingAsset.safeTransfer(msg.sender, mainAmount);\n }\n\n function transferUnderlying(uint256 amount, address to) public {}\n\n function underlying() external view override returns (address) {\n return address(underlyingAsset);\n }\n\n function underlyingUnit() external view override returns (uint256) {\n return 10**_underlyingDecimals;\n }\n\n function strategy() external view override returns (address) {\n return address(_tetuStrategy);\n }\n\n function _burn(address account, uint256 amount) internal virtual override {\n super._burn(account, amount);\n // Since rate calculation depends on totalSupply, we need to recalculate parameters\n // that are base to rate calculation.\n _setRate(_desiredRate);\n }\n\n function _mint(address account, uint256 amount) internal virtual override {\n super._mint(account, amount);\n // Since rate calculation depends on totalSupply, we need to recalculate parameters\n // that are base to rate calculation.\n _setRate(_desiredRate);\n }\n\n function _setRate(uint256 newRate) private {\n uint256 totalSupply = this.totalSupply();\n // arbitrary number, just to make sure that both Vault and Invested values compose the rate.\n uint8 vaultInvestedRatio = 3;\n uint256 totalBalance = (newRate * totalSupply) / 10**_underlyingDecimals;\n _underlyingBalanceInVault = totalBalance / vaultInvestedRatio;\n _tetuStrategy.setInvestedUnderlyingBalance(totalBalance - _underlyingBalanceInVault);\n }\n}\n"},"contracts/test/MockTetuStrategy.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\";\n\ncontract MockTetuStrategy is ITetuStrategy {\n uint256 private _investedUnderlyingBalance = 0;\n\n function setInvestedUnderlyingBalance(uint256 investedUnderlyingBalance) public {\n _investedUnderlyingBalance = investedUnderlyingBalance;\n }\n\n function investedUnderlyingBalance() external override view returns (uint256) {\n return _investedUnderlyingBalance;\n }\n}"},"contracts/test/MockUnbuttonERC20.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\n// https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\ncontract MockUnbuttonERC20 is ERC20, IButtonWrapper {\n using SafeERC20 for IERC20;\n uint256 public constant INITIAL_DEPOSIT = 1_000;\n address internal _underlying;\n\n constructor(\n address underlying_,\n string memory name_,\n string memory symbol_\n ) ERC20(name_, symbol_) {\n _underlying = underlying_;\n }\n\n function initialize(uint256 initialRate) public {\n uint256 mintAmount = INITIAL_DEPOSIT * initialRate;\n IERC20(_underlying).safeTransferFrom(\n msg.sender,\n address(this),\n INITIAL_DEPOSIT\n );\n _mint(address(this), mintAmount);\n }\n\n function mint(uint256 amount) external override returns (uint256) {\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _deposit(msg.sender, msg.sender, uAmount, amount);\n return uAmount;\n }\n\n function mintFor(address to, uint256 amount) external override returns (uint256) {\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _deposit(msg.sender, to, uAmount, amount);\n return uAmount;\n }\n\n function burn(uint256 amount) external override returns (uint256) {\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, msg.sender, uAmount, amount);\n return uAmount;\n }\n\n function burnTo(address to, uint256 amount) external override returns (uint256) {\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, to, uAmount, amount);\n return uAmount;\n }\n\n function burnAll() external override returns (uint256) {\n uint256 amount = balanceOf(msg.sender);\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, msg.sender, uAmount, amount);\n return uAmount;\n }\n\n function burnAllTo(address to) external override returns (uint256) {\n uint256 amount = balanceOf(msg.sender);\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, to, uAmount, amount);\n return uAmount;\n }\n\n function deposit(uint256 uAmount) external override returns (uint256) {\n uint256 amount = _fromUnderlyingAmount(uAmount, _queryUnderlyingBalance(), totalSupply());\n _deposit(msg.sender, msg.sender, uAmount, amount);\n return amount;\n }\n\n function depositFor(address to, uint256 uAmount) external override returns (uint256) {\n uint256 amount = _fromUnderlyingAmount(uAmount, _queryUnderlyingBalance(), totalSupply());\n _deposit(msg.sender, to, uAmount, amount);\n return amount;\n }\n\n function withdraw(uint256 uAmount) external override returns (uint256) {\n uint256 amount = _fromUnderlyingAmount(uAmount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, msg.sender, uAmount, amount);\n return amount;\n }\n\n function withdrawTo(address to, uint256 uAmount) external override returns (uint256) {\n uint256 amount = _fromUnderlyingAmount(uAmount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, to, uAmount, amount);\n return amount;\n }\n\n function withdrawAll() external override returns (uint256) {\n uint256 amount = balanceOf(msg.sender);\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, msg.sender, uAmount, amount);\n return amount;\n }\n\n function withdrawAllTo(address to) external override returns (uint256) {\n uint256 amount = balanceOf(msg.sender);\n uint256 uAmount = _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n _withdraw(msg.sender, to, uAmount, amount);\n return amount;\n }\n\n function underlying() external view override returns (address) {\n return _underlying;\n }\n\n function totalUnderlying() external view override returns (uint256) {\n return _queryUnderlyingBalance();\n }\n\n function balanceOfUnderlying(address owner) external view override returns (uint256) {\n return _toUnderlyingAmount(balanceOf(owner), _queryUnderlyingBalance(), totalSupply());\n }\n\n function underlyingToWrapper(uint256 uAmount) external view override returns (uint256) {\n return _fromUnderlyingAmount(uAmount, _queryUnderlyingBalance(), totalSupply());\n }\n\n function wrapperToUnderlying(uint256 amount) external view override returns (uint256) {\n return _toUnderlyingAmount(amount, _queryUnderlyingBalance(), totalSupply());\n }\n\n function _deposit(\n address from,\n address to,\n uint256 uAmount,\n uint256 amount\n ) private {\n require(amount > 0, \"UnbuttonToken: too few unbutton tokens to mint\");\n\n IERC20(_underlying).safeTransferFrom(from, address(this), uAmount);\n\n _mint(to, amount);\n }\n\n function _withdraw(\n address from,\n address to,\n uint256 uAmount,\n uint256 amount\n ) private {\n require(amount > 0, \"UnbuttonToken: too few unbutton tokens to burn\");\n\n _burn(from, amount);\n\n IERC20(_underlying).safeTransfer(to, uAmount);\n }\n\n function _queryUnderlyingBalance() private view returns (uint256) {\n return IERC20(_underlying).balanceOf(address(this));\n }\n\n function _fromUnderlyingAmount(\n uint256 uAmount,\n uint256 totalUnderlying_,\n uint256 totalSupply\n ) private pure returns (uint256) {\n return (uAmount * totalSupply) / totalUnderlying_;\n }\n\n function _toUnderlyingAmount(\n uint256 amount,\n uint256 totalUnderlying_,\n uint256 totalSupply\n ) private pure returns (uint256) {\n return (amount * totalUnderlying_) / totalSupply;\n }\n}\n"},"contracts/test/MockWstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\ncontract MockWstETH is ERC20, IwstETH {\n using FixedPoint for uint256;\n using SafeERC20 for IERC20;\n\n IstETH public override stETH;\n uint256 public rate = 1.5e18;\n\n constructor(IstETH token) ERC20(\"Wrapped Staked Ether\", \"wstETH\") {\n stETH = token;\n }\n\n function wrap(uint256 _stETHAmount) external override returns (uint256) {\n IERC20(stETH).safeTransferFrom(msg.sender, address(this), _stETHAmount);\n uint256 wstETHAmount = getWstETHByStETH(_stETHAmount);\n _mint(msg.sender, wstETHAmount);\n return wstETHAmount;\n }\n\n function unwrap(uint256 _wstETHAmount) external override returns (uint256) {\n _burn(msg.sender, _wstETHAmount);\n uint256 stETHAmount = getStETHByWstETH(_wstETHAmount);\n IERC20(stETH).safeTransfer(msg.sender, stETHAmount);\n return stETHAmount;\n }\n\n receive() external payable {\n stETH.submit{ value: msg.value }(address(this));\n _mint(msg.sender, getWstETHByStETH(msg.value));\n }\n\n function getWstETHByStETH(uint256 _stETHAmount) public view override returns (uint256) {\n return _stETHAmount.divDown(rate);\n }\n\n function getStETHByWstETH(uint256 _wstETHAmount) public view override returns (uint256) {\n return _wstETHAmount.mulDown(rate);\n }\n\n function stEthPerToken() external view override returns (uint256) {\n return getStETHByWstETH(1 ether);\n }\n\n function tokensPerStEth() external view override returns (uint256) {\n return getWstETHByStETH(1 ether);\n }\n}\n"},"contracts/test/MockYearnTokenVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockYearnTokenVault is IYearnTokenVault, TestToken {\n using SafeERC20 for IERC20;\n using FixedPoint for uint256;\n\n uint256 private _rate = 1e18;\n IERC20 private immutable _underlyingToken;\n\n constructor (\n string memory name,\n string memory symbol,\n uint8 decimals,\n IERC20 underlyingAsset\n ) TestToken(name, symbol, decimals) {\n _underlyingToken = underlyingAsset;\n }\n\n function token() external view override returns (address) {\n return address(_underlyingToken);\n }\n\n function deposit(\n uint256 amount,\n address recipient\n ) external override returns (uint256) {\n _underlyingToken.safeTransferFrom(msg.sender, address(this), amount);\n uint256 wrappedAmount = _toYearn(amount);\n _mint(recipient, wrappedAmount);\n return wrappedAmount;\n }\n\n function withdraw(uint256 wrappedAmount, address recipient) external override returns (uint256) {\n _burn(msg.sender, wrappedAmount);\n uint256 mainAmount = _fromYearn(wrappedAmount);\n _underlyingToken.safeTransfer(recipient, mainAmount);\n return mainAmount;\n }\n\n function pricePerShare() external view override returns (uint256) {\n return _rate;\n }\n\n function setRate(uint256 newRate) external {\n _rate = newRate;\n }\n\n function fromYearn(uint256 wrappedAmount) external view returns (uint256) {\n return _fromYearn(wrappedAmount);\n }\n\n function toYearn(uint256 mainAmount) external view returns (uint256) {\n return _toYearn(mainAmount);\n }\n\n function _fromYearn(uint256 wrappedAmount) private view returns (uint256) {\n return wrappedAmount.divDown(_rate);\n }\n\n function _toYearn(uint256 mainAmount) private view returns (uint256) {\n return mainAmount.mulDown(_rate);\n }\n}\n"},"contracts/test/TestWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\n\ncontract TestWETH is IWETH {\n string public name = \"Wrapped Ether\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Deposit(address indexed dst, uint256 wad);\n event Withdrawal(address indexed src, uint256 wad);\n\n mapping(address => uint256) public override balanceOf;\n mapping(address => mapping(address => uint256)) public override allowance;\n\n receive() external payable {\n deposit();\n }\n\n function deposit() public payable override {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n\n function withdraw(uint256 wad) public override {\n require(balanceOf[msg.sender] >= wad, \"INSUFFICIENT_BALANCE\");\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n // For testing purposes - this creates WETH that cannot be redeemed for ETH via 'withdraw'\n function mint(address destinatary, uint256 amount) external {\n balanceOf[destinatary] += amount;\n emit Deposit(destinatary, amount);\n }\n\n function totalSupply() public view override returns (uint256) {\n return address(this).balance;\n }\n\n function approve(address guy, uint256 wad) public override returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint256 wad) public override returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(\n address src,\n address dst,\n uint256 wad\n ) public override returns (bool) {\n require(balanceOf[src] >= wad, \"INSUFFICIENT_BALANCE\");\n\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n require(allowance[src][msg.sender] >= wad, \"INSUFFICIENT_ALLOWANCE\");\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n emit Transfer(src, dst, wad);\n\n return true;\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":9999},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol:77:5: Warning: Function state mutability can be restricted to pure\n function _getChainId() private view returns (uint256 chainId) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3620,"file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","start":3433},"type":"Warning"}],"sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","exportedSymbols":{"IBalancerMinter":[134]},"id":135,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:0"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2,"nodeType":"ImportDirective","scope":135,"sourceUnit":1723,"src":"721:51:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"774:89:0","text":" @dev Base minter interface, applicable to Mainnet minter or L2 pseudo minters."},"fullyImplemented":false,"id":134,"linearizedBaseContracts":[134],"name":"IBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":11,"name":"Minted","nodeType":"EventDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11,"src":"909:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11,"src":"936:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9,"indexed":false,"mutability":"mutable","name":"minted","nodeType":"VariableDeclaration","scope":11,"src":"951:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"908:58:0"},"src":"896:71:0"},{"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"973:79:0","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":17,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[],"src":"1082:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17,"src":"1108:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1108:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1107:8:0"},"scope":134,"src":"1057:59:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18,"nodeType":"StructuredDocumentation","src":"1122:162:0","text":" @notice Mint everything which belongs to `msg.sender` and send to them\n @param gauge `LiquidityGauge` address to get mintable amount from"},"functionSelector":"6a627842","id":25,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":21,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":25,"src":"1303:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1303:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1302:15:0"},"returnParameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":25,"src":"1336:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:9:0"},"scope":134,"src":"1289:56:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":26,"nodeType":"StructuredDocumentation","src":"1351:151:0","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"397ada21","id":34,"implemented":false,"kind":"function","modifiers":[],"name":"mintMany","nodeType":"FunctionDefinition","parameters":{"id":30,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":34,"src":"1525:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"1525:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":28,"nodeType":"ArrayTypeName","src":"1525:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1524:27:0"},"returnParameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":34,"src":"1570:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:0"},"scope":134,"src":"1507:72:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":35,"nodeType":"StructuredDocumentation","src":"1585:256:0","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"7504a15d","id":44,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":44,"src":"1863:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"1863:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":44,"src":"1878:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1862:29:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":44,"src":"1910:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1909:9:0"},"scope":134,"src":"1846:73:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"1925:262:0","text":" @notice Mint tokens for `user` across multiple gauges\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauges List of `LiquidityGauge` addresses\n @param user Address to mint to"},"functionSelector":"3b9f7384","id":55,"implemented":false,"kind":"function","modifiers":[],"name":"mintManyFor","nodeType":"FunctionDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":48,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":55,"src":"2213:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"2213:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":47,"nodeType":"ArrayTypeName","src":"2213:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":50,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":55,"src":"2240:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":49,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2212:41:0"},"returnParameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":55,"src":"2272:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52,"name":"uint256","nodeType":"ElementaryTypeName","src":"2272:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2271:9:0"},"scope":134,"src":"2192:89:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"2287:84:0","text":" @notice The total number of tokens minted for `user` from `gauge`"},"functionSelector":"8b752bb0","id":65,"implemented":false,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","parameters":{"id":61,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":65,"src":"2392:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":65,"src":"2406:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"2406:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2391:29:0"},"returnParameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":65,"src":"2444:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint256","nodeType":"ElementaryTypeName","src":"2444:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2443:9:0"},"scope":134,"src":"2376:77:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":66,"nodeType":"StructuredDocumentation","src":"2459:81:0","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"3c543bc6","id":75,"implemented":false,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":75,"src":"2572:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"2572:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":75,"src":"2588:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"2588:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2571:30:0"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":75,"src":"2625:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":72,"name":"bool","nodeType":"ElementaryTypeName","src":"2625:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2624:6:0"},"scope":134,"src":"2545:86:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"2637:89:0","text":" @notice Set whether `minter` is approved to mint tokens on your behalf"},"functionSelector":"0de54ba0","id":83,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":81,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":83,"src":"2758:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77,"name":"address","nodeType":"ElementaryTypeName","src":"2758:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":83,"src":"2774:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":79,"name":"bool","nodeType":"ElementaryTypeName","src":"2774:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:31:0"},"returnParameters":{"id":82,"nodeType":"ParameterList","parameters":[],"src":"2797:0:0"},"scope":134,"src":"2731:67:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"2804:145:0","text":" @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n them."},"functionSelector":"c6542794","id":101,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","parameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":101,"src":"3003:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"3003:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":88,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":101,"src":"3027:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87,"name":"bool","nodeType":"ElementaryTypeName","src":"3027:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":101,"src":"3050:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89,"name":"address","nodeType":"ElementaryTypeName","src":"3050:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":92,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":101,"src":"3072:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91,"name":"uint256","nodeType":"ElementaryTypeName","src":"3072:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":94,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":101,"src":"3098:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":93,"name":"uint8","nodeType":"ElementaryTypeName","src":"3098:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":96,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":101,"src":"3115:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":95,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3115:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":98,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":101,"src":"3134:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":97,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3134:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2993:156:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[],"src":"3158:0:0"},"scope":134,"src":"2954:205:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"3379:81:0","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"a0990033","id":111,"implemented":false,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":111,"src":"3494:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":106,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":111,"src":"3510:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":105,"name":"address","nodeType":"ElementaryTypeName","src":"3510:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3493:30:0"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":111,"src":"3547:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":108,"name":"bool","nodeType":"ElementaryTypeName","src":"3547:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3546:6:0"},"scope":134,"src":"3465:88:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"3559:247:0","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"a51e1904","id":119,"implemented":false,"kind":"function","modifiers":[],"name":"mint_many","nodeType":"FunctionDefinition","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":119,"src":"3830:26:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"3830:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":115,"length":{"hexValue":"38","id":114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:0","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"3830:10:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"3829:28:0"},"returnParameters":{"id":118,"nodeType":"ParameterList","parameters":[],"src":"3866:0:0"},"scope":134,"src":"3811:56:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":120,"nodeType":"StructuredDocumentation","src":"3873:256:0","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"27f18ae3","id":127,"implemented":false,"kind":"function","modifiers":[],"name":"mint_for","nodeType":"FunctionDefinition","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":127,"src":"4152:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"4152:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":124,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":127,"src":"4167:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":123,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4151:29:0"},"returnParameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"4189:0:0"},"scope":134,"src":"4134:56:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"4196:88:0","text":" @notice Toggle whether `minter` is approved to mint tokens for `user`"},"functionSelector":"dd289d60","id":133,"implemented":false,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","parameters":{"id":131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":133,"src":"4318:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"4318:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4317:16:0"},"returnParameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"4342:0:0"},"scope":134,"src":"4289:54:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":135,"src":"864:3481:0"}],"src":"688:3658:0"},"id":0},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","exportedSymbols":{"IBalancerToken":[211]},"id":212,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":136,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:1"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":137,"nodeType":"ImportDirective","scope":212,"sourceUnit":1723,"src":"721:51:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":138,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"802:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":139,"nodeType":"InheritanceSpecifier","src":"802:6:1"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":211,"linearizedBaseContracts":[211,1722],"name":"IBalancerToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":146,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":146,"src":"829:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":146,"src":"841:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":142,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"828:28:1"},"returnParameters":{"id":145,"nodeType":"ParameterList","parameters":[],"src":"865:0:1"},"scope":211,"src":"815:51:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca15c873","id":153,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":153,"src":"900:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"899:14:1"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":153,"src":"937:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":150,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:9:1"},"scope":211,"src":"872:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9010d07c","id":162,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":155,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":162,"src":"975:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":154,"name":"bytes32","nodeType":"ElementaryTypeName","src":"975:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":157,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":162,"src":"989:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":156,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"974:29:1"},"returnParameters":{"id":161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":160,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":162,"src":"1027:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1027:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1026:9:1"},"scope":211,"src":"952:84:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":171,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":171,"src":"1059:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":163,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1059:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":171,"src":"1073:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1058:31:1"},"returnParameters":{"id":170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":171,"src":"1113:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":168,"name":"bool","nodeType":"ElementaryTypeName","src":"1113:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1112:6:1"},"scope":211,"src":"1042:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":178,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":173,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":178,"src":"1147:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1147:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1146:14:1"},"returnParameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":178,"src":"1184:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1184:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1183:9:1"},"scope":211,"src":"1125:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":185,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":180,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":185,"src":"1218:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1218:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":182,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":185,"src":"1232:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1217:31:1"},"returnParameters":{"id":184,"nodeType":"ParameterList","parameters":[],"src":"1257:0:1"},"scope":211,"src":"1199:59:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":192,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":192,"src":"1284:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":186,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1284:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":189,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":192,"src":"1298:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"1298:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:31:1"},"returnParameters":{"id":191,"nodeType":"ParameterList","parameters":[],"src":"1323:0:1"},"scope":211,"src":"1264:60:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a217fddf","id":197,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nodeType":"FunctionDefinition","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"1410:2:1"},"returnParameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":197,"src":"1436:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1436:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1435:9:1"},"scope":211,"src":"1383:62:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":202,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[],"src":"1524:2:1"},"returnParameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":202,"src":"1550:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1549:9:1"},"scope":211,"src":"1504:55:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7028e2cd","id":207,"implemented":false,"kind":"function","modifiers":[],"name":"SNAPSHOT_ROLE","nodeType":"FunctionDefinition","parameters":{"id":203,"nodeType":"ParameterList","parameters":[],"src":"1640:2:1"},"returnParameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":207,"src":"1666:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1666:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:9:1"},"scope":211,"src":"1618:57:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9711715a","id":210,"implemented":false,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"1698:2:1"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[],"src":"1709:0:1"},"scope":211,"src":"1681:29:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":212,"src":"774:938:1"}],"src":"688:1025:1"},"id":1},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","exportedSymbols":{"ILiquidityGauge":[268]},"id":269,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":213,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":268,"linearizedBaseContracts":[268],"name":"ILiquidityGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":217,"name":"RelativeWeightCapChanged","nodeType":"EventDefinition","parameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"indexed":false,"mutability":"mutable","name":"new_relative_weight_cap","nodeType":"VariableDeclaration","scope":217,"src":"1059:31:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1058:33:2"},"src":"1028:64:2"},{"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"1098:201:2","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":225,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":225,"src":"1332:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1331:14:2"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":225,"src":"1369:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":222,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:9:2"},"scope":268,"src":"1304:74:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":226,"nodeType":"StructuredDocumentation","src":"1384:130:2","text":" @notice Record a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":233,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":233,"src":"1544:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":227,"name":"address","nodeType":"ElementaryTypeName","src":"1544:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1543:14:2"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":233,"src":"1576:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":230,"name":"bool","nodeType":"ElementaryTypeName","src":"1576:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1575:6:2"},"scope":268,"src":"1519:63:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":234,"nodeType":"StructuredDocumentation","src":"1588:76:2","text":" @notice Returns true if gauge is killed; false otherwise."},"functionSelector":"9c868ac0","id":239,"implemented":false,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","parameters":{"id":235,"nodeType":"ParameterList","parameters":[],"src":"1687:2:2"},"returnParameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":239,"src":"1713:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":236,"name":"bool","nodeType":"ElementaryTypeName","src":"1713:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1712:6:2"},"scope":268,"src":"1669:50:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":240,"nodeType":"StructuredDocumentation","src":"1725:65:2","text":" @notice Kills the gauge so it cannot mint BAL."},"functionSelector":"ab8f0945","id":243,"implemented":false,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"1813:2:2"},"returnParameters":{"id":242,"nodeType":"ParameterList","parameters":[],"src":"1824:0:2"},"scope":268,"src":"1795:30:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":244,"nodeType":"StructuredDocumentation","src":"1831:70:2","text":" @notice Unkills the gauge so it can mint BAL again."},"functionSelector":"d34fb267","id":247,"implemented":false,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[],"src":"1926:2:2"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"1937:0:2"},"scope":268,"src":"1906:32:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":248,"nodeType":"StructuredDocumentation","src":"1944:221:2","text":" @notice Sets a new relative weight cap for the gauge.\n The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n @param relativeWeightCap New relative weight cap."},"functionSelector":"10d3eb04","id":253,"implemented":false,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":253,"src":"2200:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":249,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:27:2"},"returnParameters":{"id":252,"nodeType":"ParameterList","parameters":[],"src":"2235:0:2"},"scope":268,"src":"2170:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":254,"nodeType":"StructuredDocumentation","src":"2242:70:2","text":" @notice Gets the relative weight cap for the gauge."},"functionSelector":"83f5c39b","id":259,"implemented":false,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":255,"nodeType":"ParameterList","parameters":[],"src":"2346:2:2"},"returnParameters":{"id":258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":259,"src":"2372:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2371:9:2"},"scope":268,"src":"2317:64:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":260,"nodeType":"StructuredDocumentation","src":"2387:178:2","text":" @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n @param time Timestamp in the past or present."},"functionSelector":"14e956f5","id":267,"implemented":false,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":262,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":267,"src":"2603:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":261,"name":"uint256","nodeType":"ElementaryTypeName","src":"2603:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2602:14:2"},"returnParameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":265,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":267,"src":"2640:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":264,"name":"uint256","nodeType":"ElementaryTypeName","src":"2640:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2639:9:2"},"scope":268,"src":"2570:79:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":269,"src":"944:1707:2"}],"src":"688:1964:2"},"id":2},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","exportedSymbols":{"IRewardTokenDistributor":[344]},"id":345,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":270,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:3"},{"id":271,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:3"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":272,"nodeType":"ImportDirective","scope":345,"sourceUnit":1723,"src":"755:51:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":344,"linearizedBaseContracts":[344],"name":"IRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRewardTokenDistributor.Reward","id":285,"members":[{"constant":false,"id":274,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":285,"src":"1070:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":273,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1070:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":276,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":285,"src":"1092:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":275,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":278,"mutability":"mutable","name":"period_finish","nodeType":"VariableDeclaration","scope":285,"src":"1121:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":280,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":285,"src":"1152:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1152:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":282,"mutability":"mutable","name":"last_update","nodeType":"VariableDeclaration","scope":285,"src":"1174:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":284,"mutability":"mutable","name":"integral","nodeType":"VariableDeclaration","scope":285,"src":"1203:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":283,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Reward","nodeType":"StructDefinition","scope":344,"src":"1046:180:3","visibility":"public"},{"functionSelector":"54c49fe9","id":292,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":287,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":292,"src":"1255:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint256","nodeType":"ElementaryTypeName","src":"1255:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1254:15:3"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":292,"src":"1293:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":289,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1293:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1292:8:3"},"scope":344,"src":"1232:69:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"48e9c65e","id":299,"implemented":false,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","parameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":299,"src":"1328:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":293,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1328:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1327:14:3"},"returnParameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":299,"src":"1365:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$285_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":296,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":285,"src":"1365:6:3","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$285_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1364:15:3"},"scope":344,"src":"1307:73:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"84e9bd7e","id":304,"implemented":false,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":304,"src":"1409:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1408:14:3"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[],"src":"1431:0:3"},"scope":344,"src":"1386:46:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8de0d4d","id":311,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":311,"src":"1458:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":305,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1458:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":308,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":311,"src":"1478:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1457:41:3"},"returnParameters":{"id":310,"nodeType":"ParameterList","parameters":[],"src":"1507:0:3"},"scope":344,"src":"1438:70:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"058a3a24","id":318,"implemented":false,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":318,"src":"1546:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":312,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1546:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":318,"src":"1566:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1545:41:3"},"returnParameters":{"id":317,"nodeType":"ParameterList","parameters":[],"src":"1595:0:3"},"scope":344,"src":"1514:82:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93f7aa67","id":325,"implemented":false,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":325,"src":"1632:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":319,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1632:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":322,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":325,"src":"1652:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1631:36:3"},"returnParameters":{"id":324,"nodeType":"ParameterList","parameters":[],"src":"1676:0:3"},"scope":344,"src":"1602:75:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33fd6f74","id":334,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":334,"src":"1709:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":326,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":329,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":334,"src":"1730:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":328,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1708:35:3"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":334,"src":"1767:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":331,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1766:9:3"},"scope":344,"src":"1683:93:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"59b7e409","id":343,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":343,"src":"1814:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":335,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":343,"src":"1835:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1813:35:3"},"returnParameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":343,"src":"1867:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"1867:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1866:9:3"},"scope":344,"src":"1782:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":345,"src":"1006:872:3"}],"src":"688:1191:3"},"id":3},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","exportedSymbols":{"IStakingLiquidityGauge":[381]},"id":382,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":346,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:4"},{"id":347,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:4"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":348,"nodeType":"ImportDirective","scope":382,"sourceUnit":1723,"src":"755:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":349,"nodeType":"ImportDirective","scope":382,"sourceUnit":269,"src":"808:31:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":350,"nodeType":"ImportDirective","scope":382,"sourceUnit":345,"src":"840:39:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":351,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":344,"src":"1115:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$344","typeString":"contract IRewardTokenDistributor"}},"id":352,"nodeType":"InheritanceSpecifier","src":"1115:23:4"},{"baseName":{"id":353,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":268,"src":"1140:15:4","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$268","typeString":"contract ILiquidityGauge"}},"id":354,"nodeType":"InheritanceSpecifier","src":"1140:15:4"},{"baseName":{"id":355,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1157:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":356,"nodeType":"InheritanceSpecifier","src":"1157:6:4"}],"contractDependencies":[268,344,1722],"contractKind":"interface","fullyImplemented":false,"id":381,"linearizedBaseContracts":[381,1722,268,344],"name":"IStakingLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd6dc687","id":363,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":363,"src":"1190:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":363,"src":"1207:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:44:4"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[],"src":"1242:0:4"},"scope":381,"src":"1170:73:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":368,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":364,"nodeType":"ParameterList","parameters":[],"src":"1266:2:4"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":366,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":368,"src":"1292:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":365,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1292:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1291:8:4"},"scope":381,"src":"1249:51:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":375,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":375,"src":"1323:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":369,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":375,"src":"1338:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"1338:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1322:34:4"},"returnParameters":{"id":374,"nodeType":"ParameterList","parameters":[],"src":"1365:0:4"},"scope":381,"src":"1306:60:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":380,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":380,"src":"1390:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1389:15:4"},"returnParameters":{"id":379,"nodeType":"ParameterList","parameters":[],"src":"1413:0:4"},"scope":381,"src":"1372:42:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":382,"src":"1079:337:4"}],"src":"688:729:4"},"id":4},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","exportedSymbols":{"StablePoolUserData":[589]},"id":590,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":383,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":589,"linearizedBaseContracts":[589],"name":"StablePoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StablePoolUserData.JoinKind","id":388,"members":[{"id":384,"name":"INIT","nodeType":"EnumValue","src":"770:4:5"},{"id":385,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"776:27:5"},{"id":386,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"805:26:5"},{"id":387,"name":"ALL_TOKENS_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"833:31:5"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"754:112:5"},{"canonicalName":"StablePoolUserData.ExitKind","id":392,"members":[{"id":389,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"887:30:5"},{"id":390,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"919:27:5"},{"id":391,"name":"EXACT_BPT_IN_FOR_ALL_TOKENS_OUT","nodeType":"EnumValue","src":"948:31:5"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"871:110:5"},{"body":{"id":406,"nodeType":"Block","src":"1057:52:5","statements":[{"expression":{"arguments":[{"id":401,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"1085:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":402,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"1092:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"id":403,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1091:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}],"expression":{"id":399,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1074:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1074:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1074:28:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"functionReturnParameters":398,"id":405,"nodeType":"Return","src":"1067:35:5"}]},"id":407,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":394,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":407,"src":"1005:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":393,"name":"bytes","nodeType":"ElementaryTypeName","src":"1005:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1004:19:5"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":407,"src":"1047:8:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"},"typeName":{"id":396,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":388,"src":"1047:8:5","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"visibility":"internal"}],"src":"1046:10:5"},"scope":589,"src":"987:122:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":421,"nodeType":"Block","src":"1185:52:5","statements":[{"expression":{"arguments":[{"id":416,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"1213:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":417,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"1220:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"id":418,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1219:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}],"expression":{"id":414,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1202:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1202:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1202:28:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}},"functionReturnParameters":413,"id":420,"nodeType":"Return","src":"1195:35:5"}]},"id":422,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":409,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":422,"src":"1133:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":408,"name":"bytes","nodeType":"ElementaryTypeName","src":"1133:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1132:19:5"},"returnParameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":422,"src":"1175:8:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"},"typeName":{"id":411,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":392,"src":"1175:8:5","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1174:10:5"},"scope":589,"src":"1115:122:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":443,"nodeType":"Block","src":"1353:72:5","statements":[{"expression":{"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":430,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"1366:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":431,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1363:13:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":434,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":424,"src":"1390:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":435,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"1397:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1407:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":436,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:5","typeDescriptions":{}}},"id":438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1407:9:5","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1396:21:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":432,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1379:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1379:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1379:39:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$388_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory)"}},"src":"1363:55:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":442,"nodeType":"ExpressionStatement","src":"1363:55:5"}]},"id":444,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":444,"src":"1283:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":423,"name":"bytes","nodeType":"ElementaryTypeName","src":"1283:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1282:19:5"},"returnParameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":444,"src":"1325:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1325:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":427,"nodeType":"ArrayTypeName","src":"1325:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1324:28:5"},"scope":589,"src":"1257:168:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":470,"nodeType":"Block","src":"1586:98:5","statements":[{"expression":{"id":468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":454,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"1599:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":455,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"1610:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":456,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1596:30:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":459,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":446,"src":"1640:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":460,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"1647:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1657:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":461,"name":"uint256","nodeType":"ElementaryTypeName","src":"1657:7:5","typeDescriptions":{}}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1657:9:5","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1668:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1668:7:5","typeDescriptions":{}}}],"id":466,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1646:30:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":457,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1629:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1629:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1629:48:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$388_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1596:81:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"1596:81:5"}]},"id":471,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":446,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":471,"src":"1463:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":445,"name":"bytes","nodeType":"ElementaryTypeName","src":"1463:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1462:19:5"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":450,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":471,"src":"1529:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":449,"nodeType":"ArrayTypeName","src":"1529:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":452,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":471,"src":"1557:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"1557:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1528:53:5"},"scope":589,"src":"1431:253:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":495,"nodeType":"Block","src":"1805:94:5","statements":[{"expression":{"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":480,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"1818:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":481,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"1832:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":482,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1815:28:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":485,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"1857:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":486,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"1864:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"id":488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1874:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":487,"name":"uint256","nodeType":"ElementaryTypeName","src":"1874:7:5","typeDescriptions":{}}},{"id":490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1883:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:5","typeDescriptions":{}}}],"id":491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1863:28:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":483,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1846:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1846:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:46:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$388_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256,uint256)"}},"src":"1815:77:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":494,"nodeType":"ExpressionStatement","src":"1815:77:5"}]},"id":496,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":496,"src":"1721:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":472,"name":"bytes","nodeType":"ElementaryTypeName","src":"1721:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1720:19:5"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":476,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":496,"src":"1763:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":475,"name":"uint256","nodeType":"ElementaryTypeName","src":"1763:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":496,"src":"1785:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1762:42:5"},"scope":589,"src":"1690:209:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":515,"nodeType":"Block","src":"2004:73:5","statements":[{"expression":{"id":513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":503,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"2017:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":504,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2014:16:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":507,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":498,"src":"2044:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":508,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"2051:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"id":510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2061:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":509,"name":"uint256","nodeType":"ElementaryTypeName","src":"2061:7:5","typeDescriptions":{}}}],"id":511,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2050:19:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$388_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256))"}],"expression":{"id":505,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2033:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2033:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2033:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$388_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256)"}},"src":"2014:56:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"2014:56:5"}]},"id":516,"implemented":true,"kind":"function","modifiers":[],"name":"allTokensInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":498,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":516,"src":"1940:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":497,"name":"bytes","nodeType":"ElementaryTypeName","src":"1940:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1939:19:5"},"returnParameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":516,"src":"1982:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1982:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1981:22:5"},"scope":589,"src":"1905:172:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":540,"nodeType":"Block","src":"2211:93:5","statements":[{"expression":{"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":525,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"2224:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":526,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"2237:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":527,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2221:27:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":530,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"2262:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":531,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2269:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"id":533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2279:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":532,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:5","typeDescriptions":{}}},{"id":535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2288:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":534,"name":"uint256","nodeType":"ElementaryTypeName","src":"2288:7:5","typeDescriptions":{}}}],"id":536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2268:28:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":528,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2251:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2251:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2251:46:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$392_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256,uint256)"}},"src":"2221:76:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":539,"nodeType":"ExpressionStatement","src":"2221:76:5"}]},"id":541,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":518,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":541,"src":"2128:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":517,"name":"bytes","nodeType":"ElementaryTypeName","src":"2128:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2127:19:5"},"returnParameters":{"id":524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":521,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":541,"src":"2170:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2170:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":523,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":541,"src":"2191:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":522,"name":"uint256","nodeType":"ElementaryTypeName","src":"2191:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2169:41:5"},"scope":589,"src":"2097:207:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":560,"nodeType":"Block","src":"2405:72:5","statements":[{"expression":{"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":548,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":546,"src":"2418:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":549,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2415:15:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":552,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"2444:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":553,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2451:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"id":555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2461:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"2461:7:5","typeDescriptions":{}}}],"id":556,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2450:19:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256))"}],"expression":{"id":550,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2433:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2433:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2433:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$392_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256)"}},"src":"2415:55:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":559,"nodeType":"ExpressionStatement","src":"2415:55:5"}]},"id":561,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokensOut","nodeType":"FunctionDefinition","parameters":{"id":544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":543,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":561,"src":"2342:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":542,"name":"bytes","nodeType":"ElementaryTypeName","src":"2342:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2341:19:5"},"returnParameters":{"id":547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":546,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":561,"src":"2384:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":545,"name":"uint256","nodeType":"ElementaryTypeName","src":"2384:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2383:21:5"},"scope":589,"src":"2310:167:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":587,"nodeType":"Block","src":"2638:98:5","statements":[{"expression":{"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":571,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"2651:10:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":572,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"2663:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":573,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2648:30:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":576,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"2692:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":577,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"2699:8:5","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"baseExpression":{"id":579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2709:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2709:7:5","typeDescriptions":{}}},"id":580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2709:9:5","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2720:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2720:7:5","typeDescriptions":{}}}],"id":583,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2698:30:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$392_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":574,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2681:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2681:10:5","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2681:48:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$392_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2648:81:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":586,"nodeType":"ExpressionStatement","src":"2648:81:5"}]},"id":588,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":588,"src":"2515:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":562,"name":"bytes","nodeType":"ElementaryTypeName","src":"2515:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2514:19:5"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":567,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":588,"src":"2581:27:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":566,"nodeType":"ArrayTypeName","src":"2581:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":569,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":588,"src":"2610:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":568,"name":"uint256","nodeType":"ElementaryTypeName","src":"2610:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2580:53:5"},"scope":589,"src":"2483:253:5","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":590,"src":"721:2017:5"}],"src":"688:2051:5"},"id":5},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","exportedSymbols":{"BasePoolUserData":[639]},"id":640,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":591,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":639,"linearizedBaseContracts":[639],"name":"BasePoolUserData","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"09564cb1","id":594,"mutability":"constant","name":"RECOVERY_MODE_EXIT_KIND","nodeType":"VariableDeclaration","scope":639,"src":"963:51:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":592,"name":"uint8","nodeType":"ElementaryTypeName","src":"963:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"323535","id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1011:3:6","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"public"},{"body":{"id":616,"nodeType":"Block","src":"1154:163:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":601,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"1239:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1239:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1253:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1239:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":607,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"1269:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1276:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":608,"name":"uint8","nodeType":"ElementaryTypeName","src":"1276:5:6","typeDescriptions":{}}}],"id":610,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1275:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"expression":{"id":605,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1258:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1258:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1258:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":612,"name":"RECOVERY_MODE_EXIT_KIND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"1287:23:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1258:52:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1239:71:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":600,"id":615,"nodeType":"Return","src":"1232:78:6"}]},"id":617,"implemented":true,"kind":"function","modifiers":[],"name":"isRecoveryModeExitKind","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":617,"src":"1106:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":595,"name":"bytes","nodeType":"ElementaryTypeName","src":"1106:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1105:19:6"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":617,"src":"1148:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":598,"name":"bool","nodeType":"ElementaryTypeName","src":"1148:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1147:6:6"},"scope":639,"src":"1074:243:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":637,"nodeType":"Block","src":"1461:69:6","statements":[{"expression":{"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":624,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":622,"src":"1474:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":625,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1471:15:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":628,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"1500:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1507:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":629,"name":"uint8","nodeType":"ElementaryTypeName","src":"1507:5:6","typeDescriptions":{}}},{"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1514:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1514:7:6","typeDescriptions":{}}}],"id":633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1506:16:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint8),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint8),type(uint256))"}],"expression":{"id":626,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1489:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1489:10:6","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1489:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"1471:52:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"1471:52:6"}]},"id":638,"implemented":true,"kind":"function","modifiers":[],"name":"recoveryModeExit","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":638,"src":"1398:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":618,"name":"bytes","nodeType":"ElementaryTypeName","src":"1398:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1397:19:6"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":638,"src":"1440:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":621,"name":"uint256","nodeType":"ElementaryTypeName","src":"1440:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1439:21:6"},"scope":639,"src":"1372:158:6","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":640,"src":"721:811:6"}],"src":"688:845:6"},"id":6},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","exportedSymbols":{"IBasePoolFactory":[664]},"id":665,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":641,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:7"},{"id":642,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:7"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":643,"nodeType":"ImportDirective","scope":665,"sourceUnit":1503,"src":"755:55:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":644,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1502,"src":"842:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1502","typeString":"contract IAuthentication"}},"id":645,"nodeType":"InheritanceSpecifier","src":"842:15:7"}],"contractDependencies":[1502],"contractKind":"interface","fullyImplemented":false,"id":664,"linearizedBaseContracts":[664,1502],"name":"IBasePoolFactory","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":646,"nodeType":"StructuredDocumentation","src":"864:75:7","text":" @dev Returns true if `pool` was created by this factory."},"functionSelector":"6634b753","id":653,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nodeType":"FunctionDefinition","parameters":{"id":649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":648,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":653,"src":"971:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":647,"name":"address","nodeType":"ElementaryTypeName","src":"971:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"970:14:7"},"returnParameters":{"id":652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":653,"src":"1008:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":650,"name":"bool","nodeType":"ElementaryTypeName","src":"1008:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1007:6:7"},"scope":664,"src":"944:70:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"1020:76:7","text":" @dev Check whether the derived factory has been disabled."},"functionSelector":"6c57f5a9","id":659,"implemented":false,"kind":"function","modifiers":[],"name":"isDisabled","nodeType":"FunctionDefinition","parameters":{"id":655,"nodeType":"ParameterList","parameters":[],"src":"1120:2:7"},"returnParameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":659,"src":"1146:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":656,"name":"bool","nodeType":"ElementaryTypeName","src":"1146:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1145:6:7"},"scope":664,"src":"1101:51:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":660,"nodeType":"StructuredDocumentation","src":"1158:182:7","text":" @dev Disable the factory, preventing the creation of more pools. Already existing pools are unaffected.\n Once a factory is disabled, it cannot be re-enabled."},"functionSelector":"2f2770db","id":663,"implemented":false,"kind":"function","modifiers":[],"name":"disable","nodeType":"FunctionDefinition","parameters":{"id":661,"nodeType":"ParameterList","parameters":[],"src":"1361:2:7"},"returnParameters":{"id":662,"nodeType":"ParameterList","parameters":[],"src":"1372:0:7"},"scope":664,"src":"1345:28:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":665,"src":"812:563:7"}],"src":"688:688:7"},"id":7},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","exportedSymbols":{"IRateProvider":[673]},"id":674,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":666,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":673,"linearizedBaseContracts":[673],"name":"IRateProvider","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":667,"nodeType":"StructuredDocumentation","src":"751:191:8","text":" @dev Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying\n token. The meaning of this rate depends on the context."},"functionSelector":"679aefce","id":672,"implemented":false,"kind":"function","modifiers":[],"name":"getRate","nodeType":"FunctionDefinition","parameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"963:2:8"},"returnParameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":672,"src":"989:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"988:9:8"},"scope":673,"src":"947:51:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":674,"src":"721:279:8"}],"src":"688:313:8"},"id":8},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","exportedSymbols":{"IRateProviderPool":[685]},"id":686,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":675,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:9"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","file":"./IRateProvider.sol","id":676,"nodeType":"ImportDirective","scope":686,"sourceUnit":674,"src":"721:29:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"752:79:9","text":" @dev Interface for Pools that assign rate providers to their tokens."},"fullyImplemented":false,"id":685,"linearizedBaseContracts":[685],"name":"IRateProviderPool","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":678,"nodeType":"StructuredDocumentation","src":"866:155:9","text":" @dev Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider\n for that token."},"functionSelector":"238a2d59","id":684,"implemented":false,"kind":"function","modifiers":[],"name":"getRateProviders","nodeType":"FunctionDefinition","parameters":{"id":679,"nodeType":"ParameterList","parameters":[],"src":"1051:2:9"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":684,"src":"1077:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":680,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"1077:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":681,"nodeType":"ArrayTypeName","src":"1077:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1076:24:9"},"scope":685,"src":"1026:75:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":686,"src":"832:271:9"}],"src":"688:416:9"},"id":9},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","exportedSymbols":{"IRecoveryMode":[708]},"id":709,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":687,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:10"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":688,"nodeType":"StructuredDocumentation","src":"721:54:10","text":" @dev Interface for the RecoveryMode module."},"fullyImplemented":false,"id":708,"linearizedBaseContracts":[708],"name":"IRecoveryMode","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"806:70:10","text":" @dev Emitted when the Recovery Mode status changes."},"id":693,"name":"RecoveryModeStateChanged","nodeType":"EventDefinition","parameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"indexed":false,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":693,"src":"912:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":690,"name":"bool","nodeType":"ElementaryTypeName","src":"912:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"911:14:10"},"src":"881:45:10"},{"documentation":{"id":694,"nodeType":"StructuredDocumentation","src":"932:198:10","text":" @notice Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional\n exits with low computational complexity and no dependencies."},"functionSelector":"54a844ba","id":697,"implemented":false,"kind":"function","modifiers":[],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":695,"nodeType":"ParameterList","parameters":[],"src":"1162:2:10"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[],"src":"1173:0:10"},"scope":708,"src":"1135:39:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":698,"nodeType":"StructuredDocumentation","src":"1180:132:10","text":" @notice Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits."},"functionSelector":"b7b814fc","id":701,"implemented":false,"kind":"function","modifiers":[],"name":"disableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":699,"nodeType":"ParameterList","parameters":[],"src":"1345:2:10"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[],"src":"1356:0:10"},"scope":708,"src":"1317:40:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"1363:72:10","text":" @notice Returns true if the Pool is in Recovery Mode."},"functionSelector":"b35056b8","id":707,"implemented":false,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"1463:2:10"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":707,"src":"1489:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":704,"name":"bool","nodeType":"ElementaryTypeName","src":"1489:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1488:6:10"},"scope":708,"src":"1440:55:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":709,"src":"776:721:10"}],"src":"688:810:10"},"id":10},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","exportedSymbols":{"WeightedPoolUserData":[917]},"id":918,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":710,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:11"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":711,"nodeType":"ImportDirective","scope":918,"sourceUnit":1723,"src":"721:51:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":917,"linearizedBaseContracts":[917],"name":"WeightedPoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"WeightedPoolUserData.JoinKind","id":716,"members":[{"id":712,"name":"INIT","nodeType":"EnumValue","src":"946:4:11"},{"id":713,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"952:27:11"},{"id":714,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"981:26:11"},{"id":715,"name":"ALL_TOKENS_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"1009:31:11"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"930:112:11"},{"canonicalName":"WeightedPoolUserData.ExitKind","id":720,"members":[{"id":717,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"1063:30:11"},{"id":718,"name":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"EnumValue","src":"1095:27:11"},{"id":719,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"1124:27:11"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"1047:106:11"},{"body":{"id":734,"nodeType":"Block","src":"1229:52:11","statements":[{"expression":{"arguments":[{"id":729,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":730,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"1264:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"id":731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1263:10:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}],"expression":{"id":727,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1246:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1246:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1246:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"functionReturnParameters":726,"id":733,"nodeType":"Return","src":"1239:35:11"}]},"id":735,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":722,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":735,"src":"1177:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":721,"name":"bytes","nodeType":"ElementaryTypeName","src":"1177:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1176:19:11"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":735,"src":"1219:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":724,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":716,"src":"1219:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"src":"1218:10:11"},"scope":917,"src":"1159:122:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":749,"nodeType":"Block","src":"1357:52:11","statements":[{"expression":{"arguments":[{"id":744,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"1385:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":745,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"1392:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"id":746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1391:10:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}],"expression":{"id":742,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1374:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1374:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1374:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"functionReturnParameters":741,"id":748,"nodeType":"Return","src":"1367:35:11"}]},"id":750,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":737,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":750,"src":"1305:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":736,"name":"bytes","nodeType":"ElementaryTypeName","src":"1305:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1304:19:11"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":750,"src":"1347:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":739,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":720,"src":"1347:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1346:10:11"},"scope":917,"src":"1287:122:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":771,"nodeType":"Block","src":"1525:72:11","statements":[{"expression":{"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":758,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"1538:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":759,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1535:13:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":762,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"1562:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":763,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"1569:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1579:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":764,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:11","typeDescriptions":{}}},"id":766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1579:9:11","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1568:21:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":760,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1551:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1551:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1551:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$716_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory)"}},"src":"1535:55:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":770,"nodeType":"ExpressionStatement","src":"1535:55:11"}]},"id":772,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":772,"src":"1455:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":751,"name":"bytes","nodeType":"ElementaryTypeName","src":"1455:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1454:19:11"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":772,"src":"1497:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":754,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":755,"nodeType":"ArrayTypeName","src":"1497:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1496:28:11"},"scope":917,"src":"1429:168:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":798,"nodeType":"Block","src":"1758:98:11","statements":[{"expression":{"id":796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":782,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"1771:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":783,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"1782:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":784,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1768:30:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":787,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"1812:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":788,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"1819:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1829:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":789,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:11","typeDescriptions":{}}},"id":791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1829:9:11","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1840:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":792,"name":"uint256","nodeType":"ElementaryTypeName","src":"1840:7:11","typeDescriptions":{}}}],"id":794,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1818:30:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":785,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1801:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1801:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1801:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$716_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1768:81:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":797,"nodeType":"ExpressionStatement","src":"1768:81:11"}]},"id":799,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":799,"src":"1635:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"1635:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1634:19:11"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":778,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":799,"src":"1701:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":776,"name":"uint256","nodeType":"ElementaryTypeName","src":"1701:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":777,"nodeType":"ArrayTypeName","src":"1701:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":780,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":799,"src":"1729:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":779,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1700:53:11"},"scope":917,"src":"1603:253:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":823,"nodeType":"Block","src":"1977:94:11","statements":[{"expression":{"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":808,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"1990:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":809,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2004:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":810,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1987:28:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":813,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"2029:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":814,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"2036:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2046:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":815,"name":"uint256","nodeType":"ElementaryTypeName","src":"2046:7:11","typeDescriptions":{}}},{"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2055:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":817,"name":"uint256","nodeType":"ElementaryTypeName","src":"2055:7:11","typeDescriptions":{}}}],"id":819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2035:28:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":811,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2018:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2018:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2018:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$716_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256,uint256)"}},"src":"1987:77:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"ExpressionStatement","src":"1987:77:11"}]},"id":824,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":824,"src":"1893:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":800,"name":"bytes","nodeType":"ElementaryTypeName","src":"1893:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1892:19:11"},"returnParameters":{"id":807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":804,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":824,"src":"1935:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":803,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":824,"src":"1957:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":805,"name":"uint256","nodeType":"ElementaryTypeName","src":"1957:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:42:11"},"scope":917,"src":"1862:209:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":843,"nodeType":"Block","src":"2176:73:11","statements":[{"expression":{"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":831,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"2189:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":832,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2186:16:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":835,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"2216:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":836,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"2223:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2233:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":837,"name":"uint256","nodeType":"ElementaryTypeName","src":"2233:7:11","typeDescriptions":{}}}],"id":839,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2222:19:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$716_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}],"expression":{"id":833,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2205:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2205:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2205:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$716_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256)"}},"src":"2186:56:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":842,"nodeType":"ExpressionStatement","src":"2186:56:11"}]},"id":844,"implemented":true,"kind":"function","modifiers":[],"name":"allTokensInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":826,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":844,"src":"2112:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":825,"name":"bytes","nodeType":"ElementaryTypeName","src":"2112:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2111:19:11"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":844,"src":"2154:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2153:22:11"},"scope":917,"src":"2077:172:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":868,"nodeType":"Block","src":"2383:93:11","statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":853,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"2396:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":854,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"2409:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":855,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2393:27:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":858,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":846,"src":"2434:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":859,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"2441:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2451:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2451:7:11","typeDescriptions":{}}},{"id":863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2460:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":862,"name":"uint256","nodeType":"ElementaryTypeName","src":"2460:7:11","typeDescriptions":{}}}],"id":864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2440:28:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":856,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2423:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2423:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2423:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$720_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256,uint256)"}},"src":"2393:76:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":867,"nodeType":"ExpressionStatement","src":"2393:76:11"}]},"id":869,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":869,"src":"2300:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":845,"name":"bytes","nodeType":"ElementaryTypeName","src":"2300:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2299:19:11"},"returnParameters":{"id":852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":849,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":869,"src":"2342:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":851,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":869,"src":"2363:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2363:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2341:41:11"},"scope":917,"src":"2269:207:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":888,"nodeType":"Block","src":"2577:72:11","statements":[{"expression":{"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":876,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"2590:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":877,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2587:15:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":880,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"2616:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":881,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"2623:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2633:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:11","typeDescriptions":{}}}],"id":884,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2622:19:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}],"expression":{"id":878,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2605:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2605:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2605:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$720_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256)"}},"src":"2587:55:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":887,"nodeType":"ExpressionStatement","src":"2587:55:11"}]},"id":889,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokensOut","nodeType":"FunctionDefinition","parameters":{"id":872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":871,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":889,"src":"2514:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":870,"name":"bytes","nodeType":"ElementaryTypeName","src":"2514:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2513:19:11"},"returnParameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":889,"src":"2556:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2556:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2555:21:11"},"scope":917,"src":"2482:167:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":915,"nodeType":"Block","src":"2810:98:11","statements":[{"expression":{"id":913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":899,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"2823:10:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":900,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"2835:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":901,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2820:30:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":904,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"2864:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":905,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"2871:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"baseExpression":{"id":907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2881:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2881:7:11","typeDescriptions":{}}},"id":908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2881:9:11","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2892:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":909,"name":"uint256","nodeType":"ElementaryTypeName","src":"2892:7:11","typeDescriptions":{}}}],"id":911,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2870:30:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$720_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2853:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2853:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2853:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$720_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2820:81:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":914,"nodeType":"ExpressionStatement","src":"2820:81:11"}]},"id":916,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":916,"src":"2687:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":890,"name":"bytes","nodeType":"ElementaryTypeName","src":"2687:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2686:19:11"},"returnParameters":{"id":898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":895,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":916,"src":"2753:27:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2753:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":894,"nodeType":"ArrayTypeName","src":"2753:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":897,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":916,"src":"2782:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2782:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2752:53:11"},"scope":917,"src":"2655:253:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":918,"src":"774:2136:11"}],"src":"688:2223:11"},"id":11},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","exportedSymbols":{"Errors":[1491],"_require":[935,954],"_revert":[966,986]},"id":1492,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":919,"literals":["solidity",">=","0.7",".1","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:12"},{"body":{"id":934,"nodeType":"Block","src":"984:43:12","statements":[{"condition":{"id":928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"994:10:12","subExpression":{"id":927,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"995:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":933,"nodeType":"IfStatement","src":"990:34:12","trueBody":{"expression":{"arguments":[{"id":930,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"1014:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":929,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"1006:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":932,"nodeType":"ExpressionStatement","src":"1006:18:12"}}]},"documentation":{"id":920,"nodeType":"StructuredDocumentation","src":"741:184:12","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported.\n Uses the default 'BAL' prefix for the error code"},"id":935,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":935,"src":"944:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":921,"name":"bool","nodeType":"ElementaryTypeName","src":"944:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":935,"src":"960:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":923,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"943:35:12"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[],"src":"984:0:12"},"scope":1492,"src":"926:101:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":953,"nodeType":"Block","src":"1249:51:12","statements":[{"condition":{"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1259:10:12","subExpression":{"id":945,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":938,"src":"1260:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":952,"nodeType":"IfStatement","src":"1255:42:12","trueBody":{"expression":{"arguments":[{"id":948,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":940,"src":"1279:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":949,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":942,"src":"1290:6:12","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":947,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":986,"src":"1271:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":951,"nodeType":"ExpressionStatement","src":"1271:26:12"}}]},"documentation":{"id":936,"nodeType":"StructuredDocumentation","src":"1029:132:12","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported."},"id":954,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":938,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":954,"src":"1185:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":937,"name":"bool","nodeType":"ElementaryTypeName","src":"1185:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":940,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":954,"src":"1205:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":942,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":954,"src":"1228:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":941,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1228:6:12","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1179:64:12"},"returnParameters":{"id":944,"nodeType":"ParameterList","parameters":[],"src":"1249:0:12"},"scope":1492,"src":"1162:138:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":965,"nodeType":"Block","src":"1500:85:12","statements":[{"expression":{"arguments":[{"id":961,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"1514:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3078343234313463","id":962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:8:12","typeDescriptions":{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"},"value":"0x42414c"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"}],"id":960,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":986,"src":"1506:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":964,"nodeType":"ExpressionStatement","src":"1506:28:12"}]},"documentation":{"id":955,"nodeType":"StructuredDocumentation","src":"1302:156:12","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n Uses the default 'BAL' prefix for the error code"},"id":966,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":957,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":966,"src":"1476:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1475:19:12"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"1500:0:12"},"scope":1492,"src":"1459:126:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":985,"nodeType":"Block","src":"1748:3322:12","statements":[{"assignments":[975],"declarations":[{"constant":false,"id":975,"mutability":"mutable","name":"prefixUint","nodeType":"VariableDeclaration","scope":985,"src":"1754:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":974,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":983,"initialValue":{"arguments":[{"arguments":[{"id":980,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"1790:6:12","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1783:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":978,"name":"uint24","nodeType":"ElementaryTypeName","src":"1783:6:12","typeDescriptions":{}}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1783:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1775:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":976,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:12","typeDescriptions":{}}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1754:44:12"},{"AST":{"nodeType":"YulBlock","src":"2587:2481:12","statements":[{"nodeType":"YulVariableDeclaration","src":"2861:42:12","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2882:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2893:2:12","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2878:3:12"},"nodeType":"YulFunctionCall","src":"2878:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"2898:4:12","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2874:3:12"},"nodeType":"YulFunctionCall","src":"2874:29:12"},"variables":[{"name":"units","nodeType":"YulTypedName","src":"2865:5:12","type":""}]},{"nodeType":"YulAssignment","src":"2913:31:12","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2930:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2941:2:12","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2926:3:12"},"nodeType":"YulFunctionCall","src":"2926:18:12"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2913:9:12"}]},{"nodeType":"YulVariableDeclaration","src":"2953:43:12","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2975:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2986:2:12","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2971:3:12"},"nodeType":"YulFunctionCall","src":"2971:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"2991:4:12","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:12"},"nodeType":"YulFunctionCall","src":"2967:29:12"},"variables":[{"name":"tenths","nodeType":"YulTypedName","src":"2957:6:12","type":""}]},{"nodeType":"YulAssignment","src":"3006:31:12","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3023:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:12","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3019:3:12"},"nodeType":"YulFunctionCall","src":"3019:18:12"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3006:9:12"}]},{"nodeType":"YulVariableDeclaration","src":"3046:45:12","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3070:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:12","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3066:3:12"},"nodeType":"YulFunctionCall","src":"3066:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"3086:4:12","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3062:3:12"},"nodeType":"YulFunctionCall","src":"3062:29:12"},"variables":[{"name":"hundreds","nodeType":"YulTypedName","src":"3050:8:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3724:61:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3751:2:12","type":"","value":"24"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3759:4:12","type":"","value":"0x23"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3769:1:12","type":"","value":"8"},{"name":"prefixUint","nodeType":"YulIdentifier","src":"3772:10:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3765:3:12"},"nodeType":"YulFunctionCall","src":"3765:18:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3755:3:12"},"nodeType":"YulFunctionCall","src":"3755:29:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3747:3:12"},"nodeType":"YulFunctionCall","src":"3747:38:12"},"variables":[{"name":"formattedPrefix","nodeType":"YulTypedName","src":"3728:15:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3795:102:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3819:3:12","type":"","value":"200"},{"arguments":[{"name":"formattedPrefix","nodeType":"YulIdentifier","src":"3828:15:12"},{"arguments":[{"arguments":[{"name":"units","nodeType":"YulIdentifier","src":"3853:5:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3864:1:12","type":"","value":"8"},{"name":"tenths","nodeType":"YulIdentifier","src":"3867:6:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3860:3:12"},"nodeType":"YulFunctionCall","src":"3860:14:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3849:3:12"},"nodeType":"YulFunctionCall","src":"3849:26:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3881:2:12","type":"","value":"16"},{"name":"hundreds","nodeType":"YulIdentifier","src":"3885:8:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3877:3:12"},"nodeType":"YulFunctionCall","src":"3877:17:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3845:3:12"},"nodeType":"YulFunctionCall","src":"3845:50:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3824:3:12"},"nodeType":"YulFunctionCall","src":"3824:72:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3815:3:12"},"nodeType":"YulFunctionCall","src":"3815:82:12"},"variables":[{"name":"revertReason","nodeType":"YulTypedName","src":"3799:12:12","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4412:3:12","type":"","value":"0x0"},{"kind":"number","nodeType":"YulLiteral","src":"4417:66:12","type":"","value":"0x08c379a000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4405:6:12"},"nodeType":"YulFunctionCall","src":"4405:79:12"},"nodeType":"YulExpressionStatement","src":"4405:79:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4617:4:12","type":"","value":"0x04"},{"kind":"number","nodeType":"YulLiteral","src":"4623:66:12","type":"","value":"0x0000000000000000000000000000000000000000000000000000000000000020"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4610:6:12"},"nodeType":"YulFunctionCall","src":"4610:80:12"},"nodeType":"YulExpressionStatement","src":"4610:80:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4759:4:12","type":"","value":"0x24"},{"kind":"number","nodeType":"YulLiteral","src":"4765:1:12","type":"","value":"7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4752:6:12"},"nodeType":"YulFunctionCall","src":"4752:15:12"},"nodeType":"YulExpressionStatement","src":"4752:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4832:4:12","type":"","value":"0x44"},{"name":"revertReason","nodeType":"YulIdentifier","src":"4838:12:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4825:6:12"},"nodeType":"YulFunctionCall","src":"4825:26:12"},"nodeType":"YulExpressionStatement","src":"4825:26:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5055:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5058:3:12","type":"","value":"100"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5048:6:12"},"nodeType":"YulFunctionCall","src":"5048:14:12"},"nodeType":"YulExpressionStatement","src":"5048:14:12"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":969,"isOffset":false,"isSlot":false,"src":"2882:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"2913:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"2930:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"2975:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"3006:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"3023:9:12","valueSize":1},{"declaration":969,"isOffset":false,"isSlot":false,"src":"3070:9:12","valueSize":1},{"declaration":975,"isOffset":false,"isSlot":false,"src":"3772:10:12","valueSize":1}],"id":984,"nodeType":"InlineAssembly","src":"2578:2490:12"}]},"documentation":{"id":967,"nodeType":"StructuredDocumentation","src":"1587:104:12","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported."},"id":986,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":969,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":986,"src":"1709:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":971,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":986,"src":"1728:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":970,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1728:6:12","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1708:34:12"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[],"src":"1748:0:12"},"scope":1492,"src":"1692:3378:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1491,"linearizedBaseContracts":[1491],"name":"Errors","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":989,"mutability":"constant","name":"ADD_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"5105:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":987,"name":"uint256","nodeType":"ElementaryTypeName","src":"5105:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5146:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":992,"mutability":"constant","name":"SUB_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"5153:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":990,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5194:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":995,"mutability":"constant","name":"SUB_UNDERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"5201:43:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":993,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":998,"mutability":"constant","name":"MUL_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"5250:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":996,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1001,"mutability":"constant","name":"ZERO_DIVISION","nodeType":"VariableDeclaration","scope":1491,"src":"5298:43:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":999,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5340:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":1004,"mutability":"constant","name":"DIV_INTERNAL","nodeType":"VariableDeclaration","scope":1491,"src":"5347:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1002,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5388:1:12","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":1007,"mutability":"constant","name":"X_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1491,"src":"5395:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1005,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":1006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5439:1:12","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":1010,"mutability":"constant","name":"Y_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1491,"src":"5446:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1008,"name":"uint256","nodeType":"ElementaryTypeName","src":"5446:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":1009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5490:1:12","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":1013,"mutability":"constant","name":"PRODUCT_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1491,"src":"5497:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1011,"name":"uint256","nodeType":"ElementaryTypeName","src":"5497:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":1012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5547:1:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":1016,"mutability":"constant","name":"INVALID_EXPONENT","nodeType":"VariableDeclaration","scope":1491,"src":"5554:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1014,"name":"uint256","nodeType":"ElementaryTypeName","src":"5554:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5599:1:12","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":1019,"mutability":"constant","name":"OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1491,"src":"5620:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1017,"name":"uint256","nodeType":"ElementaryTypeName","src":"5620:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5662:3:12","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":1022,"mutability":"constant","name":"UNSORTED_ARRAY","nodeType":"VariableDeclaration","scope":1491,"src":"5671:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"5671:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313031","id":1021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5714:3:12","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"value":"101"},"visibility":"internal"},{"constant":true,"id":1025,"mutability":"constant","name":"UNSORTED_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"5723:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1023,"name":"uint256","nodeType":"ElementaryTypeName","src":"5723:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313032","id":1024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:3:12","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"value":"102"},"visibility":"internal"},{"constant":true,"id":1028,"mutability":"constant","name":"INPUT_LENGTH_MISMATCH","nodeType":"VariableDeclaration","scope":1491,"src":"5776:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1026,"name":"uint256","nodeType":"ElementaryTypeName","src":"5776:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313033","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5826:3:12","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"visibility":"internal"},{"constant":true,"id":1031,"mutability":"constant","name":"ZERO_TOKEN","nodeType":"VariableDeclaration","scope":1491,"src":"5835:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313034","id":1030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5874:3:12","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},"visibility":"internal"},{"constant":true,"id":1034,"mutability":"constant","name":"INSUFFICIENT_DATA","nodeType":"VariableDeclaration","scope":1491,"src":"5883:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313035","id":1033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5929:3:12","typeDescriptions":{"typeIdentifier":"t_rational_105_by_1","typeString":"int_const 105"},"value":"105"},"visibility":"internal"},{"constant":true,"id":1037,"mutability":"constant","name":"MIN_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"5959:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5998:3:12","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":1040,"mutability":"constant","name":"MAX_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"6007:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1038,"name":"uint256","nodeType":"ElementaryTypeName","src":"6007:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323031","id":1039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6046:3:12","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"value":"201"},"visibility":"internal"},{"constant":true,"id":1043,"mutability":"constant","name":"MAX_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1491,"src":"6055:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1041,"name":"uint256","nodeType":"ElementaryTypeName","src":"6055:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323032","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:3:12","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"value":"202"},"visibility":"internal"},{"constant":true,"id":1046,"mutability":"constant","name":"MIN_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1491,"src":"6116:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1044,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323033","id":1045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6168:3:12","typeDescriptions":{"typeIdentifier":"t_rational_203_by_1","typeString":"int_const 203"},"value":"203"},"visibility":"internal"},{"constant":true,"id":1049,"mutability":"constant","name":"MINIMUM_BPT","nodeType":"VariableDeclaration","scope":1491,"src":"6177:43:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1047,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323034","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6217:3:12","typeDescriptions":{"typeIdentifier":"t_rational_204_by_1","typeString":"int_const 204"},"value":"204"},"visibility":"internal"},{"constant":true,"id":1052,"mutability":"constant","name":"CALLER_NOT_VAULT","nodeType":"VariableDeclaration","scope":1491,"src":"6226:48:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323035","id":1051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:3:12","typeDescriptions":{"typeIdentifier":"t_rational_205_by_1","typeString":"int_const 205"},"value":"205"},"visibility":"internal"},{"constant":true,"id":1055,"mutability":"constant","name":"UNINITIALIZED","nodeType":"VariableDeclaration","scope":1491,"src":"6280:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"6280:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323036","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6322:3:12","typeDescriptions":{"typeIdentifier":"t_rational_206_by_1","typeString":"int_const 206"},"value":"206"},"visibility":"internal"},{"constant":true,"id":1058,"mutability":"constant","name":"BPT_IN_MAX_AMOUNT","nodeType":"VariableDeclaration","scope":1491,"src":"6331:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1056,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323037","id":1057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6377:3:12","typeDescriptions":{"typeIdentifier":"t_rational_207_by_1","typeString":"int_const 207"},"value":"207"},"visibility":"internal"},{"constant":true,"id":1061,"mutability":"constant","name":"BPT_OUT_MIN_AMOUNT","nodeType":"VariableDeclaration","scope":1491,"src":"6386:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1059,"name":"uint256","nodeType":"ElementaryTypeName","src":"6386:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323038","id":1060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6433:3:12","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"constant":true,"id":1064,"mutability":"constant","name":"EXPIRED_PERMIT","nodeType":"VariableDeclaration","scope":1491,"src":"6442:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1062,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323039","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6485:3:12","typeDescriptions":{"typeIdentifier":"t_rational_209_by_1","typeString":"int_const 209"},"value":"209"},"visibility":"internal"},{"constant":true,"id":1067,"mutability":"constant","name":"NOT_TWO_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"6494:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1065,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323130","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:3:12","typeDescriptions":{"typeIdentifier":"t_rational_210_by_1","typeString":"int_const 210"},"value":"210"},"visibility":"internal"},{"constant":true,"id":1070,"mutability":"constant","name":"DISABLED","nodeType":"VariableDeclaration","scope":1491,"src":"6546:40:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1068,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323131","id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6583:3:12","typeDescriptions":{"typeIdentifier":"t_rational_211_by_1","typeString":"int_const 211"},"value":"211"},"visibility":"internal"},{"constant":true,"id":1073,"mutability":"constant","name":"MIN_AMP","nodeType":"VariableDeclaration","scope":1491,"src":"6606:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1071,"name":"uint256","nodeType":"ElementaryTypeName","src":"6606:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:3:12","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":1076,"mutability":"constant","name":"MAX_AMP","nodeType":"VariableDeclaration","scope":1491,"src":"6651:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1074,"name":"uint256","nodeType":"ElementaryTypeName","src":"6651:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333031","id":1075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6687:3:12","typeDescriptions":{"typeIdentifier":"t_rational_301_by_1","typeString":"int_const 301"},"value":"301"},"visibility":"internal"},{"constant":true,"id":1079,"mutability":"constant","name":"MIN_WEIGHT","nodeType":"VariableDeclaration","scope":1491,"src":"6696:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1077,"name":"uint256","nodeType":"ElementaryTypeName","src":"6696:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333032","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6735:3:12","typeDescriptions":{"typeIdentifier":"t_rational_302_by_1","typeString":"int_const 302"},"value":"302"},"visibility":"internal"},{"constant":true,"id":1082,"mutability":"constant","name":"MAX_STABLE_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"6744:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1080,"name":"uint256","nodeType":"ElementaryTypeName","src":"6744:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333033","id":1081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6790:3:12","typeDescriptions":{"typeIdentifier":"t_rational_303_by_1","typeString":"int_const 303"},"value":"303"},"visibility":"internal"},{"constant":true,"id":1085,"mutability":"constant","name":"MAX_IN_RATIO","nodeType":"VariableDeclaration","scope":1491,"src":"6799:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333034","id":1084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6840:3:12","typeDescriptions":{"typeIdentifier":"t_rational_304_by_1","typeString":"int_const 304"},"value":"304"},"visibility":"internal"},{"constant":true,"id":1088,"mutability":"constant","name":"MAX_OUT_RATIO","nodeType":"VariableDeclaration","scope":1491,"src":"6849:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333035","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:3:12","typeDescriptions":{"typeIdentifier":"t_rational_305_by_1","typeString":"int_const 305"},"value":"305"},"visibility":"internal"},{"constant":true,"id":1091,"mutability":"constant","name":"MIN_BPT_IN_FOR_TOKEN_OUT","nodeType":"VariableDeclaration","scope":1491,"src":"6900:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1089,"name":"uint256","nodeType":"ElementaryTypeName","src":"6900:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333036","id":1090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:3:12","typeDescriptions":{"typeIdentifier":"t_rational_306_by_1","typeString":"int_const 306"},"value":"306"},"visibility":"internal"},{"constant":true,"id":1094,"mutability":"constant","name":"MAX_OUT_BPT_FOR_TOKEN_IN","nodeType":"VariableDeclaration","scope":1491,"src":"6962:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1092,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333037","id":1093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7015:3:12","typeDescriptions":{"typeIdentifier":"t_rational_307_by_1","typeString":"int_const 307"},"value":"307"},"visibility":"internal"},{"constant":true,"id":1097,"mutability":"constant","name":"NORMALIZED_WEIGHT_INVARIANT","nodeType":"VariableDeclaration","scope":1491,"src":"7024:59:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1095,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333038","id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7080:3:12","typeDescriptions":{"typeIdentifier":"t_rational_308_by_1","typeString":"int_const 308"},"value":"308"},"visibility":"internal"},{"constant":true,"id":1100,"mutability":"constant","name":"INVALID_TOKEN","nodeType":"VariableDeclaration","scope":1491,"src":"7089:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"7089:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333039","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7131:3:12","typeDescriptions":{"typeIdentifier":"t_rational_309_by_1","typeString":"int_const 309"},"value":"309"},"visibility":"internal"},{"constant":true,"id":1103,"mutability":"constant","name":"UNHANDLED_JOIN_KIND","nodeType":"VariableDeclaration","scope":1491,"src":"7140:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1101,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333130","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7188:3:12","typeDescriptions":{"typeIdentifier":"t_rational_310_by_1","typeString":"int_const 310"},"value":"310"},"visibility":"internal"},{"constant":true,"id":1106,"mutability":"constant","name":"ZERO_INVARIANT","nodeType":"VariableDeclaration","scope":1491,"src":"7197:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"7197:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333131","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7240:3:12","typeDescriptions":{"typeIdentifier":"t_rational_311_by_1","typeString":"int_const 311"},"value":"311"},"visibility":"internal"},{"constant":true,"id":1109,"mutability":"constant","name":"ORACLE_INVALID_SECONDS_QUERY","nodeType":"VariableDeclaration","scope":1491,"src":"7249:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7249:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333132","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7306:3:12","typeDescriptions":{"typeIdentifier":"t_rational_312_by_1","typeString":"int_const 312"},"value":"312"},"visibility":"internal"},{"constant":true,"id":1112,"mutability":"constant","name":"ORACLE_NOT_INITIALIZED","nodeType":"VariableDeclaration","scope":1491,"src":"7315:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1110,"name":"uint256","nodeType":"ElementaryTypeName","src":"7315:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333133","id":1111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:3:12","typeDescriptions":{"typeIdentifier":"t_rational_313_by_1","typeString":"int_const 313"},"value":"313"},"visibility":"internal"},{"constant":true,"id":1115,"mutability":"constant","name":"ORACLE_QUERY_TOO_OLD","nodeType":"VariableDeclaration","scope":1491,"src":"7375:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1113,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333134","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7424:3:12","typeDescriptions":{"typeIdentifier":"t_rational_314_by_1","typeString":"int_const 314"},"value":"314"},"visibility":"internal"},{"constant":true,"id":1118,"mutability":"constant","name":"ORACLE_INVALID_INDEX","nodeType":"VariableDeclaration","scope":1491,"src":"7433:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"7433:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333135","id":1117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7482:3:12","typeDescriptions":{"typeIdentifier":"t_rational_315_by_1","typeString":"int_const 315"},"value":"315"},"visibility":"internal"},{"constant":true,"id":1121,"mutability":"constant","name":"ORACLE_BAD_SECS","nodeType":"VariableDeclaration","scope":1491,"src":"7491:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1119,"name":"uint256","nodeType":"ElementaryTypeName","src":"7491:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333136","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7535:3:12","typeDescriptions":{"typeIdentifier":"t_rational_316_by_1","typeString":"int_const 316"},"value":"316"},"visibility":"internal"},{"constant":true,"id":1124,"mutability":"constant","name":"AMP_END_TIME_TOO_CLOSE","nodeType":"VariableDeclaration","scope":1491,"src":"7544:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1122,"name":"uint256","nodeType":"ElementaryTypeName","src":"7544:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333137","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:3:12","typeDescriptions":{"typeIdentifier":"t_rational_317_by_1","typeString":"int_const 317"},"value":"317"},"visibility":"internal"},{"constant":true,"id":1127,"mutability":"constant","name":"AMP_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1491,"src":"7604:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333138","id":1126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:3:12","typeDescriptions":{"typeIdentifier":"t_rational_318_by_1","typeString":"int_const 318"},"value":"318"},"visibility":"internal"},{"constant":true,"id":1130,"mutability":"constant","name":"AMP_RATE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"7660:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1128,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333139","id":1129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7706:3:12","typeDescriptions":{"typeIdentifier":"t_rational_319_by_1","typeString":"int_const 319"},"value":"319"},"visibility":"internal"},{"constant":true,"id":1133,"mutability":"constant","name":"AMP_NO_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1491,"src":"7715:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1131,"name":"uint256","nodeType":"ElementaryTypeName","src":"7715:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333230","id":1132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7765:3:12","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"320"},"visibility":"internal"},{"constant":true,"id":1136,"mutability":"constant","name":"STABLE_INVARIANT_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1491,"src":"7774:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1134,"name":"uint256","nodeType":"ElementaryTypeName","src":"7774:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333231","id":1135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7834:3:12","typeDescriptions":{"typeIdentifier":"t_rational_321_by_1","typeString":"int_const 321"},"value":"321"},"visibility":"internal"},{"constant":true,"id":1139,"mutability":"constant","name":"STABLE_GET_BALANCE_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1491,"src":"7843:65:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"7843:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333232","id":1138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7905:3:12","typeDescriptions":{"typeIdentifier":"t_rational_322_by_1","typeString":"int_const 322"},"value":"322"},"visibility":"internal"},{"constant":true,"id":1142,"mutability":"constant","name":"RELAYER_NOT_CONTRACT","nodeType":"VariableDeclaration","scope":1491,"src":"7914:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1140,"name":"uint256","nodeType":"ElementaryTypeName","src":"7914:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333233","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:3:12","typeDescriptions":{"typeIdentifier":"t_rational_323_by_1","typeString":"int_const 323"},"value":"323"},"visibility":"internal"},{"constant":true,"id":1145,"mutability":"constant","name":"BASE_POOL_RELAYER_NOT_CALLED","nodeType":"VariableDeclaration","scope":1491,"src":"7972:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1143,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333234","id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:3:12","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"324"},"visibility":"internal"},{"constant":true,"id":1148,"mutability":"constant","name":"REBALANCING_RELAYER_REENTERED","nodeType":"VariableDeclaration","scope":1491,"src":"8038:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1146,"name":"uint256","nodeType":"ElementaryTypeName","src":"8038:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333235","id":1147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8096:3:12","typeDescriptions":{"typeIdentifier":"t_rational_325_by_1","typeString":"int_const 325"},"value":"325"},"visibility":"internal"},{"constant":true,"id":1151,"mutability":"constant","name":"GRADUAL_UPDATE_TIME_TRAVEL","nodeType":"VariableDeclaration","scope":1491,"src":"8105:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1149,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333236","id":1150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8160:3:12","typeDescriptions":{"typeIdentifier":"t_rational_326_by_1","typeString":"int_const 326"},"value":"326"},"visibility":"internal"},{"constant":true,"id":1154,"mutability":"constant","name":"SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1491,"src":"8169:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1152,"name":"uint256","nodeType":"ElementaryTypeName","src":"8169:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333237","id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8212:3:12","typeDescriptions":{"typeIdentifier":"t_rational_327_by_1","typeString":"int_const 327"},"value":"327"},"visibility":"internal"},{"constant":true,"id":1157,"mutability":"constant","name":"CALLER_IS_NOT_LBP_OWNER","nodeType":"VariableDeclaration","scope":1491,"src":"8221:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1155,"name":"uint256","nodeType":"ElementaryTypeName","src":"8221:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333238","id":1156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8273:3:12","typeDescriptions":{"typeIdentifier":"t_rational_328_by_1","typeString":"int_const 328"},"value":"328"},"visibility":"internal"},{"constant":true,"id":1160,"mutability":"constant","name":"PRICE_RATE_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"8282:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"8282:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333239","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8330:3:12","typeDescriptions":{"typeIdentifier":"t_rational_329_by_1","typeString":"int_const 329"},"value":"329"},"visibility":"internal"},{"constant":true,"id":1163,"mutability":"constant","name":"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1491,"src":"8339:75:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1161,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333330","id":1162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:3:12","typeDescriptions":{"typeIdentifier":"t_rational_330_by_1","typeString":"int_const 330"},"value":"330"},"visibility":"internal"},{"constant":true,"id":1166,"mutability":"constant","name":"WEIGHT_CHANGE_TOO_FAST","nodeType":"VariableDeclaration","scope":1491,"src":"8420:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1164,"name":"uint256","nodeType":"ElementaryTypeName","src":"8420:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333331","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:3:12","typeDescriptions":{"typeIdentifier":"t_rational_331_by_1","typeString":"int_const 331"},"value":"331"},"visibility":"internal"},{"constant":true,"id":1169,"mutability":"constant","name":"LOWER_GREATER_THAN_UPPER_TARGET","nodeType":"VariableDeclaration","scope":1491,"src":"8480:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1167,"name":"uint256","nodeType":"ElementaryTypeName","src":"8480:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333332","id":1168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8540:3:12","typeDescriptions":{"typeIdentifier":"t_rational_332_by_1","typeString":"int_const 332"},"value":"332"},"visibility":"internal"},{"constant":true,"id":1172,"mutability":"constant","name":"UPPER_TARGET_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"8549:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1170,"name":"uint256","nodeType":"ElementaryTypeName","src":"8549:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333333","id":1171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8599:3:12","typeDescriptions":{"typeIdentifier":"t_rational_333_by_1","typeString":"int_const 333"},"value":"333"},"visibility":"internal"},{"constant":true,"id":1175,"mutability":"constant","name":"UNHANDLED_BY_LINEAR_POOL","nodeType":"VariableDeclaration","scope":1491,"src":"8608:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"8608:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333334","id":1174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:12","typeDescriptions":{"typeIdentifier":"t_rational_334_by_1","typeString":"int_const 334"},"value":"334"},"visibility":"internal"},{"constant":true,"id":1178,"mutability":"constant","name":"OUT_OF_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1491,"src":"8670:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1176,"name":"uint256","nodeType":"ElementaryTypeName","src":"8670:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333335","id":1177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8718:3:12","typeDescriptions":{"typeIdentifier":"t_rational_335_by_1","typeString":"int_const 335"},"value":"335"},"visibility":"internal"},{"constant":true,"id":1181,"mutability":"constant","name":"UNHANDLED_EXIT_KIND","nodeType":"VariableDeclaration","scope":1491,"src":"8727:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1179,"name":"uint256","nodeType":"ElementaryTypeName","src":"8727:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333336","id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:3:12","typeDescriptions":{"typeIdentifier":"t_rational_336_by_1","typeString":"int_const 336"},"value":"336"},"visibility":"internal"},{"constant":true,"id":1184,"mutability":"constant","name":"UNAUTHORIZED_EXIT","nodeType":"VariableDeclaration","scope":1491,"src":"8784:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1182,"name":"uint256","nodeType":"ElementaryTypeName","src":"8784:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333337","id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8830:3:12","typeDescriptions":{"typeIdentifier":"t_rational_337_by_1","typeString":"int_const 337"},"value":"337"},"visibility":"internal"},{"constant":true,"id":1187,"mutability":"constant","name":"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1491,"src":"8839:66:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1185,"name":"uint256","nodeType":"ElementaryTypeName","src":"8839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333338","id":1186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8902:3:12","typeDescriptions":{"typeIdentifier":"t_rational_338_by_1","typeString":"int_const 338"},"value":"338"},"visibility":"internal"},{"constant":true,"id":1190,"mutability":"constant","name":"UNHANDLED_BY_MANAGED_POOL","nodeType":"VariableDeclaration","scope":1491,"src":"8911:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1188,"name":"uint256","nodeType":"ElementaryTypeName","src":"8911:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333339","id":1189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8965:3:12","typeDescriptions":{"typeIdentifier":"t_rational_339_by_1","typeString":"int_const 339"},"value":"339"},"visibility":"internal"},{"constant":true,"id":1193,"mutability":"constant","name":"UNHANDLED_BY_PHANTOM_POOL","nodeType":"VariableDeclaration","scope":1491,"src":"8974:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1191,"name":"uint256","nodeType":"ElementaryTypeName","src":"8974:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333430","id":1192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:3:12","typeDescriptions":{"typeIdentifier":"t_rational_340_by_1","typeString":"int_const 340"},"value":"340"},"visibility":"internal"},{"constant":true,"id":1196,"mutability":"constant","name":"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER","nodeType":"VariableDeclaration","scope":1491,"src":"9037:65:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1194,"name":"uint256","nodeType":"ElementaryTypeName","src":"9037:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333431","id":1195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:3:12","typeDescriptions":{"typeIdentifier":"t_rational_341_by_1","typeString":"int_const 341"},"value":"341"},"visibility":"internal"},{"constant":true,"id":1199,"mutability":"constant","name":"INVALID_INITIALIZATION","nodeType":"VariableDeclaration","scope":1491,"src":"9108:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333432","id":1198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9159:3:12","typeDescriptions":{"typeIdentifier":"t_rational_342_by_1","typeString":"int_const 342"},"value":"342"},"visibility":"internal"},{"constant":true,"id":1202,"mutability":"constant","name":"OUT_OF_NEW_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1491,"src":"9168:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1200,"name":"uint256","nodeType":"ElementaryTypeName","src":"9168:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333433","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9220:3:12","typeDescriptions":{"typeIdentifier":"t_rational_343_by_1","typeString":"int_const 343"},"value":"343"},"visibility":"internal"},{"constant":true,"id":1205,"mutability":"constant","name":"FEATURE_DISABLED","nodeType":"VariableDeclaration","scope":1491,"src":"9229:48:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1203,"name":"uint256","nodeType":"ElementaryTypeName","src":"9229:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333434","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:3:12","typeDescriptions":{"typeIdentifier":"t_rational_344_by_1","typeString":"int_const 344"},"value":"344"},"visibility":"internal"},{"constant":true,"id":1208,"mutability":"constant","name":"UNINITIALIZED_POOL_CONTROLLER","nodeType":"VariableDeclaration","scope":1491,"src":"9283:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1206,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333435","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9341:3:12","typeDescriptions":{"typeIdentifier":"t_rational_345_by_1","typeString":"int_const 345"},"value":"345"},"visibility":"internal"},{"constant":true,"id":1211,"mutability":"constant","name":"SET_SWAP_FEE_DURING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1491,"src":"9350:62:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1209,"name":"uint256","nodeType":"ElementaryTypeName","src":"9350:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333436","id":1210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9409:3:12","typeDescriptions":{"typeIdentifier":"t_rational_346_by_1","typeString":"int_const 346"},"value":"346"},"visibility":"internal"},{"constant":true,"id":1214,"mutability":"constant","name":"SET_SWAP_FEE_PENDING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1491,"src":"9418:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1212,"name":"uint256","nodeType":"ElementaryTypeName","src":"9418:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333437","id":1213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9478:3:12","typeDescriptions":{"typeIdentifier":"t_rational_347_by_1","typeString":"int_const 347"},"value":"347"},"visibility":"internal"},{"constant":true,"id":1217,"mutability":"constant","name":"CHANGE_TOKENS_DURING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1491,"src":"9487:66:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1215,"name":"uint256","nodeType":"ElementaryTypeName","src":"9487:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333438","id":1216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9550:3:12","typeDescriptions":{"typeIdentifier":"t_rational_348_by_1","typeString":"int_const 348"},"value":"348"},"visibility":"internal"},{"constant":true,"id":1220,"mutability":"constant","name":"CHANGE_TOKENS_PENDING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1491,"src":"9559:67:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1218,"name":"uint256","nodeType":"ElementaryTypeName","src":"9559:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333439","id":1219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9623:3:12","typeDescriptions":{"typeIdentifier":"t_rational_349_by_1","typeString":"int_const 349"},"value":"349"},"visibility":"internal"},{"constant":true,"id":1223,"mutability":"constant","name":"MAX_WEIGHT","nodeType":"VariableDeclaration","scope":1491,"src":"9632:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"9632:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333530","id":1222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9671:3:12","typeDescriptions":{"typeIdentifier":"t_rational_350_by_1","typeString":"int_const 350"},"value":"350"},"visibility":"internal"},{"constant":true,"id":1226,"mutability":"constant","name":"UNAUTHORIZED_JOIN","nodeType":"VariableDeclaration","scope":1491,"src":"9680:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1224,"name":"uint256","nodeType":"ElementaryTypeName","src":"9680:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333531","id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9726:3:12","typeDescriptions":{"typeIdentifier":"t_rational_351_by_1","typeString":"int_const 351"},"value":"351"},"visibility":"internal"},{"constant":true,"id":1229,"mutability":"constant","name":"MAX_MANAGEMENT_AUM_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1491,"src":"9735:65:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1227,"name":"uint256","nodeType":"ElementaryTypeName","src":"9735:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333532","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:3:12","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"352"},"visibility":"internal"},{"constant":true,"id":1232,"mutability":"constant","name":"FRACTIONAL_TARGET","nodeType":"VariableDeclaration","scope":1491,"src":"9806:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1230,"name":"uint256","nodeType":"ElementaryTypeName","src":"9806:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333533","id":1231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9852:3:12","typeDescriptions":{"typeIdentifier":"t_rational_353_by_1","typeString":"int_const 353"},"value":"353"},"visibility":"internal"},{"constant":true,"id":1235,"mutability":"constant","name":"ADD_OR_REMOVE_BPT","nodeType":"VariableDeclaration","scope":1491,"src":"9861:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1233,"name":"uint256","nodeType":"ElementaryTypeName","src":"9861:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333534","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9907:3:12","typeDescriptions":{"typeIdentifier":"t_rational_354_by_1","typeString":"int_const 354"},"value":"354"},"visibility":"internal"},{"constant":true,"id":1238,"mutability":"constant","name":"INVALID_CIRCUIT_BREAKER_BOUNDS","nodeType":"VariableDeclaration","scope":1491,"src":"9916:62:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1236,"name":"uint256","nodeType":"ElementaryTypeName","src":"9916:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333535","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9975:3:12","typeDescriptions":{"typeIdentifier":"t_rational_355_by_1","typeString":"int_const 355"},"value":"355"},"visibility":"internal"},{"constant":true,"id":1241,"mutability":"constant","name":"CIRCUIT_BREAKER_TRIPPED","nodeType":"VariableDeclaration","scope":1491,"src":"9984:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1239,"name":"uint256","nodeType":"ElementaryTypeName","src":"9984:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333536","id":1240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:3:12","typeDescriptions":{"typeIdentifier":"t_rational_356_by_1","typeString":"int_const 356"},"value":"356"},"visibility":"internal"},{"constant":true,"id":1244,"mutability":"constant","name":"MALICIOUS_QUERY_REVERT","nodeType":"VariableDeclaration","scope":1491,"src":"10045:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1242,"name":"uint256","nodeType":"ElementaryTypeName","src":"10045:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333537","id":1243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10096:3:12","typeDescriptions":{"typeIdentifier":"t_rational_357_by_1","typeString":"int_const 357"},"value":"357"},"visibility":"internal"},{"constant":true,"id":1247,"mutability":"constant","name":"JOINS_EXITS_DISABLED","nodeType":"VariableDeclaration","scope":1491,"src":"10105:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"10105:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333538","id":1246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10154:3:12","typeDescriptions":{"typeIdentifier":"t_rational_358_by_1","typeString":"int_const 358"},"value":"358"},"visibility":"internal"},{"constant":true,"id":1250,"mutability":"constant","name":"REENTRANCY","nodeType":"VariableDeclaration","scope":1491,"src":"10175:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1248,"name":"uint256","nodeType":"ElementaryTypeName","src":"10175:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030","id":1249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10214:3:12","typeDescriptions":{"typeIdentifier":"t_rational_400_by_1","typeString":"int_const 400"},"value":"400"},"visibility":"internal"},{"constant":true,"id":1253,"mutability":"constant","name":"SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1491,"src":"10223:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1251,"name":"uint256","nodeType":"ElementaryTypeName","src":"10223:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343031","id":1252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10270:3:12","typeDescriptions":{"typeIdentifier":"t_rational_401_by_1","typeString":"int_const 401"},"value":"401"},"visibility":"internal"},{"constant":true,"id":1256,"mutability":"constant","name":"PAUSED","nodeType":"VariableDeclaration","scope":1491,"src":"10279:38:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1254,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343032","id":1255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10314:3:12","typeDescriptions":{"typeIdentifier":"t_rational_402_by_1","typeString":"int_const 402"},"value":"402"},"visibility":"internal"},{"constant":true,"id":1259,"mutability":"constant","name":"PAUSE_WINDOW_EXPIRED","nodeType":"VariableDeclaration","scope":1491,"src":"10323:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1257,"name":"uint256","nodeType":"ElementaryTypeName","src":"10323:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343033","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10372:3:12","typeDescriptions":{"typeIdentifier":"t_rational_403_by_1","typeString":"int_const 403"},"value":"403"},"visibility":"internal"},{"constant":true,"id":1262,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":1491,"src":"10381:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1260,"name":"uint256","nodeType":"ElementaryTypeName","src":"10381:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343034","id":1261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:3:12","typeDescriptions":{"typeIdentifier":"t_rational_404_by_1","typeString":"int_const 404"},"value":"404"},"visibility":"internal"},{"constant":true,"id":1265,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":1491,"src":"10444:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1263,"name":"uint256","nodeType":"ElementaryTypeName","src":"10444:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343035","id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10499:3:12","typeDescriptions":{"typeIdentifier":"t_rational_405_by_1","typeString":"int_const 405"},"value":"405"},"visibility":"internal"},{"constant":true,"id":1268,"mutability":"constant","name":"INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"10508:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1266,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343036","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:3:12","typeDescriptions":{"typeIdentifier":"t_rational_406_by_1","typeString":"int_const 406"},"value":"406"},"visibility":"internal"},{"constant":true,"id":1271,"mutability":"constant","name":"INSUFFICIENT_ALLOWANCE","nodeType":"VariableDeclaration","scope":1491,"src":"10566:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1269,"name":"uint256","nodeType":"ElementaryTypeName","src":"10566:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343037","id":1270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10617:3:12","typeDescriptions":{"typeIdentifier":"t_rational_407_by_1","typeString":"int_const 407"},"value":"407"},"visibility":"internal"},{"constant":true,"id":1274,"mutability":"constant","name":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10626:64:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1272,"name":"uint256","nodeType":"ElementaryTypeName","src":"10626:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343038","id":1273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10687:3:12","typeDescriptions":{"typeIdentifier":"t_rational_408_by_1","typeString":"int_const 408"},"value":"408"},"visibility":"internal"},{"constant":true,"id":1277,"mutability":"constant","name":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10696:62:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1275,"name":"uint256","nodeType":"ElementaryTypeName","src":"10696:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343039","id":1276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10755:3:12","typeDescriptions":{"typeIdentifier":"t_rational_409_by_1","typeString":"int_const 409"},"value":"409"},"visibility":"internal"},{"constant":true,"id":1280,"mutability":"constant","name":"ERC20_MINT_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10764:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"10764:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343130","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:3:12","typeDescriptions":{"typeIdentifier":"t_rational_410_by_1","typeString":"int_const 410"},"value":"410"},"visibility":"internal"},{"constant":true,"id":1283,"mutability":"constant","name":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10828:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1281,"name":"uint256","nodeType":"ElementaryTypeName","src":"10828:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343131","id":1282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10885:3:12","typeDescriptions":{"typeIdentifier":"t_rational_411_by_1","typeString":"int_const 411"},"value":"411"},"visibility":"internal"},{"constant":true,"id":1286,"mutability":"constant","name":"ERC20_APPROVE_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10894:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1284,"name":"uint256","nodeType":"ElementaryTypeName","src":"10894:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343132","id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10954:3:12","typeDescriptions":{"typeIdentifier":"t_rational_412_by_1","typeString":"int_const 412"},"value":"412"},"visibility":"internal"},{"constant":true,"id":1289,"mutability":"constant","name":"ERC20_APPROVE_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1491,"src":"10963:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"10963:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343133","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11021:3:12","typeDescriptions":{"typeIdentifier":"t_rational_413_by_1","typeString":"int_const 413"},"value":"413"},"visibility":"internal"},{"constant":true,"id":1292,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1491,"src":"11030:64:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"11030:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343134","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11091:3:12","typeDescriptions":{"typeIdentifier":"t_rational_414_by_1","typeString":"int_const 414"},"value":"414"},"visibility":"internal"},{"constant":true,"id":1295,"mutability":"constant","name":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"VariableDeclaration","scope":1491,"src":"11100:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"11100:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343135","id":1294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:3:12","typeDescriptions":{"typeIdentifier":"t_rational_415_by_1","typeString":"int_const 415"},"value":"415"},"visibility":"internal"},{"constant":true,"id":1298,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"11174:62:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1296,"name":"uint256","nodeType":"ElementaryTypeName","src":"11174:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343136","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11233:3:12","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"visibility":"internal"},{"constant":true,"id":1301,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1491,"src":"11242:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1299,"name":"uint256","nodeType":"ElementaryTypeName","src":"11242:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343137","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:3:12","typeDescriptions":{"typeIdentifier":"t_rational_417_by_1","typeString":"int_const 417"},"value":"417"},"visibility":"internal"},{"constant":true,"id":1304,"mutability":"constant","name":"SAFE_ERC20_CALL_FAILED","nodeType":"VariableDeclaration","scope":1491,"src":"11308:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343138","id":1303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11359:3:12","typeDescriptions":{"typeIdentifier":"t_rational_418_by_1","typeString":"int_const 418"},"value":"418"},"visibility":"internal"},{"constant":true,"id":1307,"mutability":"constant","name":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"11368:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"11368:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343139","id":1306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11425:3:12","typeDescriptions":{"typeIdentifier":"t_rational_419_by_1","typeString":"int_const 419"},"value":"419"},"visibility":"internal"},{"constant":true,"id":1310,"mutability":"constant","name":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"VariableDeclaration","scope":1491,"src":"11434:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1308,"name":"uint256","nodeType":"ElementaryTypeName","src":"11434:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343230","id":1309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11488:3:12","typeDescriptions":{"typeIdentifier":"t_rational_420_by_1","typeString":"int_const 420"},"value":"420"},"visibility":"internal"},{"constant":true,"id":1313,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"VariableDeclaration","scope":1491,"src":"11497:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1311,"name":"uint256","nodeType":"ElementaryTypeName","src":"11497:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343231","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11557:3:12","typeDescriptions":{"typeIdentifier":"t_rational_421_by_1","typeString":"int_const 421"},"value":"421"},"visibility":"internal"},{"constant":true,"id":1316,"mutability":"constant","name":"GRANT_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1491,"src":"11566:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1314,"name":"uint256","nodeType":"ElementaryTypeName","src":"11566:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343232","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11617:3:12","typeDescriptions":{"typeIdentifier":"t_rational_422_by_1","typeString":"int_const 422"},"value":"422"},"visibility":"internal"},{"constant":true,"id":1319,"mutability":"constant","name":"REVOKE_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1491,"src":"11626:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1317,"name":"uint256","nodeType":"ElementaryTypeName","src":"11626:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343233","id":1318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11678:3:12","typeDescriptions":{"typeIdentifier":"t_rational_423_by_1","typeString":"int_const 423"},"value":"423"},"visibility":"internal"},{"constant":true,"id":1322,"mutability":"constant","name":"RENOUNCE_SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1491,"src":"11687:59:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"11687:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343234","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11743:3:12","typeDescriptions":{"typeIdentifier":"t_rational_424_by_1","typeString":"int_const 424"},"value":"424"},"visibility":"internal"},{"constant":true,"id":1325,"mutability":"constant","name":"BUFFER_PERIOD_EXPIRED","nodeType":"VariableDeclaration","scope":1491,"src":"11752:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1323,"name":"uint256","nodeType":"ElementaryTypeName","src":"11752:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343235","id":1324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11802:3:12","typeDescriptions":{"typeIdentifier":"t_rational_425_by_1","typeString":"int_const 425"},"value":"425"},"visibility":"internal"},{"constant":true,"id":1328,"mutability":"constant","name":"CALLER_IS_NOT_OWNER","nodeType":"VariableDeclaration","scope":1491,"src":"11811:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1326,"name":"uint256","nodeType":"ElementaryTypeName","src":"11811:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343236","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11859:3:12","typeDescriptions":{"typeIdentifier":"t_rational_426_by_1","typeString":"int_const 426"},"value":"426"},"visibility":"internal"},{"constant":true,"id":1331,"mutability":"constant","name":"NEW_OWNER_IS_ZERO","nodeType":"VariableDeclaration","scope":1491,"src":"11868:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1329,"name":"uint256","nodeType":"ElementaryTypeName","src":"11868:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343237","id":1330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:3:12","typeDescriptions":{"typeIdentifier":"t_rational_427_by_1","typeString":"int_const 427"},"value":"427"},"visibility":"internal"},{"constant":true,"id":1334,"mutability":"constant","name":"CODE_DEPLOYMENT_FAILED","nodeType":"VariableDeclaration","scope":1491,"src":"11923:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"11923:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343238","id":1333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11974:3:12","typeDescriptions":{"typeIdentifier":"t_rational_428_by_1","typeString":"int_const 428"},"value":"428"},"visibility":"internal"},{"constant":true,"id":1337,"mutability":"constant","name":"CALL_TO_NON_CONTRACT","nodeType":"VariableDeclaration","scope":1491,"src":"11983:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"11983:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343239","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12032:3:12","typeDescriptions":{"typeIdentifier":"t_rational_429_by_1","typeString":"int_const 429"},"value":"429"},"visibility":"internal"},{"constant":true,"id":1340,"mutability":"constant","name":"LOW_LEVEL_CALL_FAILED","nodeType":"VariableDeclaration","scope":1491,"src":"12041:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1338,"name":"uint256","nodeType":"ElementaryTypeName","src":"12041:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343330","id":1339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12091:3:12","typeDescriptions":{"typeIdentifier":"t_rational_430_by_1","typeString":"int_const 430"},"value":"430"},"visibility":"internal"},{"constant":true,"id":1343,"mutability":"constant","name":"NOT_PAUSED","nodeType":"VariableDeclaration","scope":1491,"src":"12100:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1341,"name":"uint256","nodeType":"ElementaryTypeName","src":"12100:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343331","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12139:3:12","typeDescriptions":{"typeIdentifier":"t_rational_431_by_1","typeString":"int_const 431"},"value":"431"},"visibility":"internal"},{"constant":true,"id":1346,"mutability":"constant","name":"ADDRESS_ALREADY_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1491,"src":"12148:59:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1344,"name":"uint256","nodeType":"ElementaryTypeName","src":"12148:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343332","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12204:3:12","typeDescriptions":{"typeIdentifier":"t_rational_432_by_1","typeString":"int_const 432"},"value":"432"},"visibility":"internal"},{"constant":true,"id":1349,"mutability":"constant","name":"ADDRESS_NOT_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1491,"src":"12213:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1347,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343333","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12265:3:12","typeDescriptions":{"typeIdentifier":"t_rational_433_by_1","typeString":"int_const 433"},"value":"433"},"visibility":"internal"},{"constant":true,"id":1352,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"12274:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"12274:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343334","id":1351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12329:3:12","typeDescriptions":{"typeIdentifier":"t_rational_434_by_1","typeString":"int_const 434"},"value":"434"},"visibility":"internal"},{"constant":true,"id":1355,"mutability":"constant","name":"INVALID_OPERATION","nodeType":"VariableDeclaration","scope":1491,"src":"12338:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"12338:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343335","id":1354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12384:3:12","typeDescriptions":{"typeIdentifier":"t_rational_435_by_1","typeString":"int_const 435"},"value":"435"},"visibility":"internal"},{"constant":true,"id":1358,"mutability":"constant","name":"CODEC_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"12393:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1356,"name":"uint256","nodeType":"ElementaryTypeName","src":"12393:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343336","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12436:3:12","typeDescriptions":{"typeIdentifier":"t_rational_436_by_1","typeString":"int_const 436"},"value":"436"},"visibility":"internal"},{"constant":true,"id":1361,"mutability":"constant","name":"IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1491,"src":"12445:48:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1359,"name":"uint256","nodeType":"ElementaryTypeName","src":"12445:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343337","id":1360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12490:3:12","typeDescriptions":{"typeIdentifier":"t_rational_437_by_1","typeString":"int_const 437"},"value":"437"},"visibility":"internal"},{"constant":true,"id":1364,"mutability":"constant","name":"NOT_IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1491,"src":"12499:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1362,"name":"uint256","nodeType":"ElementaryTypeName","src":"12499:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343338","id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12548:3:12","typeDescriptions":{"typeIdentifier":"t_rational_438_by_1","typeString":"int_const 438"},"value":"438"},"visibility":"internal"},{"constant":true,"id":1367,"mutability":"constant","name":"INDUCED_FAILURE","nodeType":"VariableDeclaration","scope":1491,"src":"12557:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1365,"name":"uint256","nodeType":"ElementaryTypeName","src":"12557:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343339","id":1366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12601:3:12","typeDescriptions":{"typeIdentifier":"t_rational_439_by_1","typeString":"int_const 439"},"value":"439"},"visibility":"internal"},{"constant":true,"id":1370,"mutability":"constant","name":"EXPIRED_SIGNATURE","nodeType":"VariableDeclaration","scope":1491,"src":"12610:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1368,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343430","id":1369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:3:12","typeDescriptions":{"typeIdentifier":"t_rational_440_by_1","typeString":"int_const 440"},"value":"440"},"visibility":"internal"},{"constant":true,"id":1373,"mutability":"constant","name":"MALFORMED_SIGNATURE","nodeType":"VariableDeclaration","scope":1491,"src":"12665:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1371,"name":"uint256","nodeType":"ElementaryTypeName","src":"12665:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343431","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12713:3:12","typeDescriptions":{"typeIdentifier":"t_rational_441_by_1","typeString":"int_const 441"},"value":"441"},"visibility":"internal"},{"constant":true,"id":1376,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"VariableDeclaration","scope":1491,"src":"12722:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"12722:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343432","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12782:3:12","typeDescriptions":{"typeIdentifier":"t_rational_442_by_1","typeString":"int_const 442"},"value":"442"},"visibility":"internal"},{"constant":true,"id":1379,"mutability":"constant","name":"UNHANDLED_FEE_TYPE","nodeType":"VariableDeclaration","scope":1491,"src":"12791:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1377,"name":"uint256","nodeType":"ElementaryTypeName","src":"12791:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343433","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12838:3:12","typeDescriptions":{"typeIdentifier":"t_rational_443_by_1","typeString":"int_const 443"},"value":"443"},"visibility":"internal"},{"constant":true,"id":1382,"mutability":"constant","name":"BURN_FROM_ZERO","nodeType":"VariableDeclaration","scope":1491,"src":"12847:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1380,"name":"uint256","nodeType":"ElementaryTypeName","src":"12847:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343434","id":1381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12890:3:12","typeDescriptions":{"typeIdentifier":"t_rational_444_by_1","typeString":"int_const 444"},"value":"444"},"visibility":"internal"},{"constant":true,"id":1385,"mutability":"constant","name":"INVALID_POOL_ID","nodeType":"VariableDeclaration","scope":1491,"src":"12913:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1383,"name":"uint256","nodeType":"ElementaryTypeName","src":"12913:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12957:3:12","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"internal"},{"constant":true,"id":1388,"mutability":"constant","name":"CALLER_NOT_POOL","nodeType":"VariableDeclaration","scope":1491,"src":"12966:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"12966:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353031","id":1387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13010:3:12","typeDescriptions":{"typeIdentifier":"t_rational_501_by_1","typeString":"int_const 501"},"value":"501"},"visibility":"internal"},{"constant":true,"id":1391,"mutability":"constant","name":"SENDER_NOT_ASSET_MANAGER","nodeType":"VariableDeclaration","scope":1491,"src":"13019:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"13019:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353032","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13072:3:12","typeDescriptions":{"typeIdentifier":"t_rational_502_by_1","typeString":"int_const 502"},"value":"502"},"visibility":"internal"},{"constant":true,"id":1394,"mutability":"constant","name":"USER_DOESNT_ALLOW_RELAYER","nodeType":"VariableDeclaration","scope":1491,"src":"13081:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"13081:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353033","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13135:3:12","typeDescriptions":{"typeIdentifier":"t_rational_503_by_1","typeString":"int_const 503"},"value":"503"},"visibility":"internal"},{"constant":true,"id":1397,"mutability":"constant","name":"INVALID_SIGNATURE","nodeType":"VariableDeclaration","scope":1491,"src":"13144:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"13144:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353034","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13190:3:12","typeDescriptions":{"typeIdentifier":"t_rational_504_by_1","typeString":"int_const 504"},"value":"504"},"visibility":"internal"},{"constant":true,"id":1400,"mutability":"constant","name":"EXIT_BELOW_MIN","nodeType":"VariableDeclaration","scope":1491,"src":"13199:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"13199:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353035","id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13242:3:12","typeDescriptions":{"typeIdentifier":"t_rational_505_by_1","typeString":"int_const 505"},"value":"505"},"visibility":"internal"},{"constant":true,"id":1403,"mutability":"constant","name":"JOIN_ABOVE_MAX","nodeType":"VariableDeclaration","scope":1491,"src":"13251:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1401,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353036","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13294:3:12","typeDescriptions":{"typeIdentifier":"t_rational_506_by_1","typeString":"int_const 506"},"value":"506"},"visibility":"internal"},{"constant":true,"id":1406,"mutability":"constant","name":"SWAP_LIMIT","nodeType":"VariableDeclaration","scope":1491,"src":"13303:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"13303:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353037","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13342:3:12","typeDescriptions":{"typeIdentifier":"t_rational_507_by_1","typeString":"int_const 507"},"value":"507"},"visibility":"internal"},{"constant":true,"id":1409,"mutability":"constant","name":"SWAP_DEADLINE","nodeType":"VariableDeclaration","scope":1491,"src":"13351:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1407,"name":"uint256","nodeType":"ElementaryTypeName","src":"13351:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353038","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13393:3:12","typeDescriptions":{"typeIdentifier":"t_rational_508_by_1","typeString":"int_const 508"},"value":"508"},"visibility":"internal"},{"constant":true,"id":1412,"mutability":"constant","name":"CANNOT_SWAP_SAME_TOKEN","nodeType":"VariableDeclaration","scope":1491,"src":"13402:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"13402:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353039","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13453:3:12","typeDescriptions":{"typeIdentifier":"t_rational_509_by_1","typeString":"int_const 509"},"value":"509"},"visibility":"internal"},{"constant":true,"id":1415,"mutability":"constant","name":"UNKNOWN_AMOUNT_IN_FIRST_SWAP","nodeType":"VariableDeclaration","scope":1491,"src":"13462:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"13462:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353130","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13519:3:12","typeDescriptions":{"typeIdentifier":"t_rational_510_by_1","typeString":"int_const 510"},"value":"510"},"visibility":"internal"},{"constant":true,"id":1418,"mutability":"constant","name":"MALCONSTRUCTED_MULTIHOP_SWAP","nodeType":"VariableDeclaration","scope":1491,"src":"13528:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1416,"name":"uint256","nodeType":"ElementaryTypeName","src":"13528:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353131","id":1417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13585:3:12","typeDescriptions":{"typeIdentifier":"t_rational_511_by_1","typeString":"int_const 511"},"value":"511"},"visibility":"internal"},{"constant":true,"id":1421,"mutability":"constant","name":"INTERNAL_BALANCE_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"13594:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1419,"name":"uint256","nodeType":"ElementaryTypeName","src":"13594:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13648:3:12","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"internal"},{"constant":true,"id":1424,"mutability":"constant","name":"INSUFFICIENT_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"13657:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1422,"name":"uint256","nodeType":"ElementaryTypeName","src":"13657:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353133","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13715:3:12","typeDescriptions":{"typeIdentifier":"t_rational_513_by_1","typeString":"int_const 513"},"value":"513"},"visibility":"internal"},{"constant":true,"id":1427,"mutability":"constant","name":"INVALID_ETH_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"13724:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1425,"name":"uint256","nodeType":"ElementaryTypeName","src":"13724:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353134","id":1426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13781:3:12","typeDescriptions":{"typeIdentifier":"t_rational_514_by_1","typeString":"int_const 514"},"value":"514"},"visibility":"internal"},{"constant":true,"id":1430,"mutability":"constant","name":"INVALID_POST_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"13790:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1428,"name":"uint256","nodeType":"ElementaryTypeName","src":"13790:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353135","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13844:3:12","typeDescriptions":{"typeIdentifier":"t_rational_515_by_1","typeString":"int_const 515"},"value":"515"},"visibility":"internal"},{"constant":true,"id":1433,"mutability":"constant","name":"INSUFFICIENT_ETH","nodeType":"VariableDeclaration","scope":1491,"src":"13853:48:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"13853:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353136","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13898:3:12","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"516"},"visibility":"internal"},{"constant":true,"id":1436,"mutability":"constant","name":"UNALLOCATED_ETH","nodeType":"VariableDeclaration","scope":1491,"src":"13907:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"13907:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353137","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13951:3:12","typeDescriptions":{"typeIdentifier":"t_rational_517_by_1","typeString":"int_const 517"},"value":"517"},"visibility":"internal"},{"constant":true,"id":1439,"mutability":"constant","name":"ETH_TRANSFER","nodeType":"VariableDeclaration","scope":1491,"src":"13960:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"13960:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353138","id":1438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14001:3:12","typeDescriptions":{"typeIdentifier":"t_rational_518_by_1","typeString":"int_const 518"},"value":"518"},"visibility":"internal"},{"constant":true,"id":1442,"mutability":"constant","name":"CANNOT_USE_ETH_SENTINEL","nodeType":"VariableDeclaration","scope":1491,"src":"14010:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1440,"name":"uint256","nodeType":"ElementaryTypeName","src":"14010:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353139","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14062:3:12","typeDescriptions":{"typeIdentifier":"t_rational_519_by_1","typeString":"int_const 519"},"value":"519"},"visibility":"internal"},{"constant":true,"id":1445,"mutability":"constant","name":"TOKENS_MISMATCH","nodeType":"VariableDeclaration","scope":1491,"src":"14071:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1443,"name":"uint256","nodeType":"ElementaryTypeName","src":"14071:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353230","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14115:3:12","typeDescriptions":{"typeIdentifier":"t_rational_520_by_1","typeString":"int_const 520"},"value":"520"},"visibility":"internal"},{"constant":true,"id":1448,"mutability":"constant","name":"TOKEN_NOT_REGISTERED","nodeType":"VariableDeclaration","scope":1491,"src":"14124:52:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"14124:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353231","id":1447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14173:3:12","typeDescriptions":{"typeIdentifier":"t_rational_521_by_1","typeString":"int_const 521"},"value":"521"},"visibility":"internal"},{"constant":true,"id":1451,"mutability":"constant","name":"TOKEN_ALREADY_REGISTERED","nodeType":"VariableDeclaration","scope":1491,"src":"14182:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1449,"name":"uint256","nodeType":"ElementaryTypeName","src":"14182:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353232","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14235:3:12","typeDescriptions":{"typeIdentifier":"t_rational_522_by_1","typeString":"int_const 522"},"value":"522"},"visibility":"internal"},{"constant":true,"id":1454,"mutability":"constant","name":"TOKENS_ALREADY_SET","nodeType":"VariableDeclaration","scope":1491,"src":"14244:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1452,"name":"uint256","nodeType":"ElementaryTypeName","src":"14244:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353233","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14291:3:12","typeDescriptions":{"typeIdentifier":"t_rational_523_by_1","typeString":"int_const 523"},"value":"523"},"visibility":"internal"},{"constant":true,"id":1457,"mutability":"constant","name":"TOKENS_LENGTH_MUST_BE_2","nodeType":"VariableDeclaration","scope":1491,"src":"14300:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"14300:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353234","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14352:3:12","typeDescriptions":{"typeIdentifier":"t_rational_524_by_1","typeString":"int_const 524"},"value":"524"},"visibility":"internal"},{"constant":true,"id":1460,"mutability":"constant","name":"NONZERO_TOKEN_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"14361:53:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1458,"name":"uint256","nodeType":"ElementaryTypeName","src":"14361:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353235","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14411:3:12","typeDescriptions":{"typeIdentifier":"t_rational_525_by_1","typeString":"int_const 525"},"value":"525"},"visibility":"internal"},{"constant":true,"id":1463,"mutability":"constant","name":"BALANCE_TOTAL_OVERFLOW","nodeType":"VariableDeclaration","scope":1491,"src":"14420:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"14420:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353236","id":1462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14471:3:12","typeDescriptions":{"typeIdentifier":"t_rational_526_by_1","typeString":"int_const 526"},"value":"526"},"visibility":"internal"},{"constant":true,"id":1466,"mutability":"constant","name":"POOL_NO_TOKENS","nodeType":"VariableDeclaration","scope":1491,"src":"14480:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1464,"name":"uint256","nodeType":"ElementaryTypeName","src":"14480:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353237","id":1465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14523:3:12","typeDescriptions":{"typeIdentifier":"t_rational_527_by_1","typeString":"int_const 527"},"value":"527"},"visibility":"internal"},{"constant":true,"id":1469,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1491,"src":"14532:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"14532:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353238","id":1468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14592:3:12","typeDescriptions":{"typeIdentifier":"t_rational_528_by_1","typeString":"int_const 528"},"value":"528"},"visibility":"internal"},{"constant":true,"id":1472,"mutability":"constant","name":"SWAP_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"14614:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"14614:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363030","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14671:3:12","typeDescriptions":{"typeIdentifier":"t_rational_600_by_1","typeString":"int_const 600"},"value":"600"},"visibility":"internal"},{"constant":true,"id":1475,"mutability":"constant","name":"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"14680:66:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1473,"name":"uint256","nodeType":"ElementaryTypeName","src":"14680:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363031","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14743:3:12","typeDescriptions":{"typeIdentifier":"t_rational_601_by_1","typeString":"int_const 601"},"value":"601"},"visibility":"internal"},{"constant":true,"id":1478,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT","nodeType":"VariableDeclaration","scope":1491,"src":"14752:66:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1476,"name":"uint256","nodeType":"ElementaryTypeName","src":"14752:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363032","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14815:3:12","typeDescriptions":{"typeIdentifier":"t_rational_602_by_1","typeString":"int_const 602"},"value":"602"},"visibility":"internal"},{"constant":true,"id":1481,"mutability":"constant","name":"AUM_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"14824:59:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"14824:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363033","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14880:3:12","typeDescriptions":{"typeIdentifier":"t_rational_603_by_1","typeString":"int_const 603"},"value":"603"},"visibility":"internal"},{"constant":true,"id":1484,"mutability":"constant","name":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1491,"src":"14909:64:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1482,"name":"uint256","nodeType":"ElementaryTypeName","src":"14909:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373030","id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14970:3:12","typeDescriptions":{"typeIdentifier":"t_rational_700_by_1","typeString":"int_const 700"},"value":"700"},"visibility":"internal"},{"constant":true,"id":1487,"mutability":"constant","name":"UNIMPLEMENTED","nodeType":"VariableDeclaration","scope":1491,"src":"14992:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1485,"name":"uint256","nodeType":"ElementaryTypeName","src":"14992:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15034:3:12","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"visibility":"internal"},{"constant":true,"id":1490,"mutability":"constant","name":"SHOULD_NOT_HAPPEN","nodeType":"VariableDeclaration","scope":1491,"src":"15043:49:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"15043:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393939","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15089:3:12","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"visibility":"internal"}],"scope":1492,"src":"5072:10023:12"}],"src":"688:14408:12"},"id":12},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[1502]},"id":1503,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1493,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1502,"linearizedBaseContracts":[1502],"name":"IAuthentication","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1494,"nodeType":"StructuredDocumentation","src":"753:116:13","text":" @dev Returns the action identifier associated with the external function described by `selector`."},"functionSelector":"851c1bb3","id":1501,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1496,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":1501,"src":"895:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1495,"name":"bytes4","nodeType":"ElementaryTypeName","src":"895:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"894:17:13"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1501,"src":"935:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"934:9:13"},"scope":1502,"src":"874:70:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1503,"src":"721:225:13"}],"src":"688:259:13"},"id":13},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","exportedSymbols":{"ISignaturesValidator":[1520]},"id":1521,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1504,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:14"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1505,"nodeType":"StructuredDocumentation","src":"721:95:14","text":" @dev Interface for the SignatureValidator helper, used to support meta-transactions."},"fullyImplemented":false,"id":1520,"linearizedBaseContracts":[1520],"name":"ISignaturesValidator","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1506,"nodeType":"StructuredDocumentation","src":"854:60:14","text":" @dev Returns the EIP712 domain separator."},"functionSelector":"ed24911d","id":1511,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[],"src":"946:2:14"},"returnParameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1509,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1511,"src":"972:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"971:9:14"},"scope":1520,"src":"919:62:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1512,"nodeType":"StructuredDocumentation","src":"987:83:14","text":" @dev Returns the next nonce used by an address to sign messages."},"functionSelector":"90193b7c","id":1519,"implemented":false,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","parameters":{"id":1515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1514,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1519,"src":"1097:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1513,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1096:14:14"},"returnParameters":{"id":1518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1517,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1519,"src":"1134:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:9:14"},"scope":1520,"src":"1075:68:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1521,"src":"817:328:14"}],"src":"688:458:14"},"id":14},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","exportedSymbols":{"ITemporarilyPausable":[1539]},"id":1540,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1522,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"721:61:15","text":" @dev Interface for the TemporarilyPausable helper."},"fullyImplemented":false,"id":1539,"linearizedBaseContracts":[1539],"name":"ITemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1524,"nodeType":"StructuredDocumentation","src":"820:83:15","text":" @dev Emitted every time the pause state changes by `_setPaused`."},"id":1528,"name":"PausedStateChanged","nodeType":"EventDefinition","parameters":{"id":1527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1526,"indexed":false,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1528,"src":"933:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1525,"name":"bool","nodeType":"ElementaryTypeName","src":"933:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"932:13:15"},"src":"908:38:15"},{"documentation":{"id":1529,"nodeType":"StructuredDocumentation","src":"952:57:15","text":" @dev Returns the current paused state."},"functionSelector":"1c0de051","id":1538,"implemented":false,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","parameters":{"id":1530,"nodeType":"ParameterList","parameters":[],"src":"1037:2:15"},"returnParameters":{"id":1537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1532,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1538,"src":"1100:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1531,"name":"bool","nodeType":"ElementaryTypeName","src":"1100:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1534,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":1538,"src":"1125:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1125:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1536,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":1538,"src":"1165:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1535,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1086:116:15"},"scope":1539,"src":"1014:189:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1540,"src":"783:422:15"}],"src":"688:518:15"},"id":15},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","exportedSymbols":{"IVersion":[1549]},"id":1550,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1541,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1542,"nodeType":"StructuredDocumentation","src":"721:83:16","text":" @notice Simple interface to retrieve the version of a deployed contract."},"fullyImplemented":false,"id":1549,"linearizedBaseContracts":[1549],"name":"IVersion","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1543,"nodeType":"StructuredDocumentation","src":"830:122:16","text":" @dev Returns a JSON representation of the contract version containing name, version number and task ID."},"functionSelector":"54fd4d50","id":1548,"implemented":false,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","parameters":{"id":1544,"nodeType":"ParameterList","parameters":[],"src":"973:2:16"},"returnParameters":{"id":1547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1546,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1548,"src":"999:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1545,"name":"string","nodeType":"ElementaryTypeName","src":"999:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"998:15:16"},"scope":1549,"src":"957:57:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1550,"src":"805:211:16"}],"src":"688:329:16"},"id":16},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","exportedSymbols":{"IERC4626":[1629]},"id":1630,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1551,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:17"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":1552,"nodeType":"ImportDirective","scope":1630,"sourceUnit":1723,"src":"721:36:17","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1553,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"781:6:17","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":1554,"nodeType":"InheritanceSpecifier","src":"781:6:17"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":1629,"linearizedBaseContracts":[1629,1722],"name":"IERC4626","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1555,"nodeType":"StructuredDocumentation","src":"794:112:17","text":" @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`."},"id":1565,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":1564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1565,"src":"925:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1556,"name":"address","nodeType":"ElementaryTypeName","src":"925:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1559,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1565,"src":"949:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1558,"name":"address","nodeType":"ElementaryTypeName","src":"949:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1561,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1565,"src":"972:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1563,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1565,"src":"988:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1562,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:79:17"},"src":"911:93:17"},{"anonymous":false,"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"1010:146:17","text":" @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n and transferred those `assets` to `receiver`."},"id":1578,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1578,"src":"1185:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1567,"name":"address","nodeType":"ElementaryTypeName","src":"1185:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1570,"indexed":true,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1578,"src":"1217:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1569,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1572,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1578,"src":"1251:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1571,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1574,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1578,"src":"1282:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1573,"name":"uint256","nodeType":"ElementaryTypeName","src":"1282:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1576,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1578,"src":"1306:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1175:151:17"},"src":"1161:166:17"},{"documentation":{"id":1579,"nodeType":"StructuredDocumentation","src":"1333:118:17","text":" @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens."},"functionSelector":"6e553f65","id":1588,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1588,"src":"1473:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"1473:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1588,"src":"1489:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1582,"name":"address","nodeType":"ElementaryTypeName","src":"1489:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1472:34:17"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1586,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1588,"src":"1525:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1585,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1524:16:17"},"scope":1629,"src":"1456:85:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1589,"nodeType":"StructuredDocumentation","src":"1547:114:17","text":" @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`."},"functionSelector":"ba087652","id":1600,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1591,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1600,"src":"1691:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1590,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1600,"src":"1715:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"1715:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1600,"src":"1741:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1594,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1681:79:17"},"returnParameters":{"id":1599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1600,"src":"1779:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1778:16:17"},"scope":1629,"src":"1666:129:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"1801:124:17","text":" @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing."},"functionSelector":"38d52e0f","id":1606,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nodeType":"FunctionDefinition","parameters":{"id":1602,"nodeType":"ParameterList","parameters":[],"src":"1944:2:17"},"returnParameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1606,"src":"1970:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1603,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:9:17"},"scope":1629,"src":"1930:49:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1607,"nodeType":"StructuredDocumentation","src":"1985:92:17","text":" @dev Total amount of the underlying asset that is “managed” by Vault."},"functionSelector":"01e1d114","id":1612,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nodeType":"FunctionDefinition","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[],"src":"2102:2:17"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1612,"src":"2128:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1609,"name":"uint256","nodeType":"ElementaryTypeName","src":"2128:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2127:9:17"},"scope":1629,"src":"2082:55:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1613,"nodeType":"StructuredDocumentation","src":"2143:180:17","text":" @dev The amount of `assets` that the Vault would exchange for the amount\n of `shares` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"07a2d13a","id":1620,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nodeType":"FunctionDefinition","parameters":{"id":1616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1615,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1620,"src":"2353:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"2353:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:16:17"},"returnParameters":{"id":1619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1618,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1620,"src":"2392:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"2392:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2391:16:17"},"scope":1629,"src":"2328:80:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"2414:180:17","text":" @dev The amount of `shares` that the Vault would exchange for the amount\n of `assets` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"c6e6f592","id":1628,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nodeType":"FunctionDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1623,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1628,"src":"2624:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1622,"name":"uint256","nodeType":"ElementaryTypeName","src":"2624:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2623:16:17"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1628,"src":"2663:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:16:17"},"scope":1629,"src":"2599:80:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1630,"src":"759:1922:17"}],"src":"688:1994:17"},"id":17},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IWETH":[1644]},"id":1645,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1631,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:18"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":1632,"nodeType":"ImportDirective","scope":1645,"sourceUnit":1723,"src":"721:36:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1634,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"929:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":1635,"nodeType":"InheritanceSpecifier","src":"929:6:18"}],"contractDependencies":[1722],"contractKind":"interface","documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"759:150:18","text":" @dev Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":1644,"linearizedBaseContracts":[1644,1722],"name":"IWETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":1638,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1636,"nodeType":"ParameterList","parameters":[],"src":"958:2:18"},"returnParameters":{"id":1637,"nodeType":"ParameterList","parameters":[],"src":"977:0:18"},"scope":1644,"src":"942:36:18","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":1643,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":1641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1640,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1643,"src":"1002:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1639,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1001:16:18"},"returnParameters":{"id":1642,"nodeType":"ParameterList","parameters":[],"src":"1026:0:18"},"scope":1644,"src":"984:43:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1645,"src":"910:119:18"}],"src":"688:342:18"},"id":18},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[1722]},"id":1723,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1646,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:19"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1647,"nodeType":"StructuredDocumentation","src":"66:70:19","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":1722,"linearizedBaseContracts":[1722],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"160:66:19","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":1653,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1649,"nodeType":"ParameterList","parameters":[],"src":"251:2:19"},"returnParameters":{"id":1652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1651,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1653,"src":"277:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"276:9:19"},"scope":1722,"src":"231:55:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1654,"nodeType":"StructuredDocumentation","src":"292:72:19","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":1661,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":1657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":1661,"src":"388:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1655,"name":"address","nodeType":"ElementaryTypeName","src":"388:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:17:19"},"returnParameters":{"id":1660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1661,"src":"428:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:19"},"scope":1722,"src":"369:68:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"443:209:19","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1671,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1671,"src":"675:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1663,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1671,"src":"694:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:35:19"},"returnParameters":{"id":1670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1669,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1671,"src":"728:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1668,"name":"bool","nodeType":"ElementaryTypeName","src":"728:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"727:6:19"},"scope":1722,"src":"657:77:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1672,"nodeType":"StructuredDocumentation","src":"740:264:19","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1681,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1674,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1681,"src":"1028:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1676,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1681,"src":"1043:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1675,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:32:19"},"returnParameters":{"id":1680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1679,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1681,"src":"1083:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1678,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:19"},"scope":1722,"src":"1009:83:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"1098:642:19","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1691,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1691,"src":"1762:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1686,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1691,"src":"1779:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1685,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:33:19"},"returnParameters":{"id":1690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1691,"src":"1813:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1688,"name":"bool","nodeType":"ElementaryTypeName","src":"1813:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1812:6:19"},"scope":1722,"src":"1745:74:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1692,"nodeType":"StructuredDocumentation","src":"1825:296:19","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1703,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1694,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":1703,"src":"2157:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1693,"name":"address","nodeType":"ElementaryTypeName","src":"2157:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1696,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1703,"src":"2181:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1695,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1698,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1703,"src":"2208:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1697,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:81:19"},"returnParameters":{"id":1702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1701,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1703,"src":"2247:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1700,"name":"bool","nodeType":"ElementaryTypeName","src":"2247:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2246:6:19"},"scope":1722,"src":"2126:127:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":1704,"nodeType":"StructuredDocumentation","src":"2259:158:19","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":1712,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1706,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":1712,"src":"2437:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1705,"name":"address","nodeType":"ElementaryTypeName","src":"2437:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1708,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1712,"src":"2459:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1707,"name":"address","nodeType":"ElementaryTypeName","src":"2459:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1710,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1712,"src":"2479:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1709,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:57:19"},"src":"2422:72:19"},{"anonymous":false,"documentation":{"id":1713,"nodeType":"StructuredDocumentation","src":"2500:148:19","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":1721,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1715,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1721,"src":"2668:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1714,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1717,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1721,"src":"2691:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1716,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1719,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1721,"src":"2716:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"2716:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:63:19"},"src":"2653:78:19"}],"scope":1723,"src":"137:2596:19"}],"src":"33:2701:19"},"id":19},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[1758]},"id":1759,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1724,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:20"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"66:482:20","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":1758,"linearizedBaseContracts":[1758],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1726,"nodeType":"StructuredDocumentation","src":"578:788:20","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":1743,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1728,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1743,"src":"1396:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1727,"name":"address","nodeType":"ElementaryTypeName","src":"1396:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1730,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1743,"src":"1419:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1729,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1732,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1743,"src":"1444:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"1444:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1734,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":1743,"src":"1467:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1733,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1736,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":1743,"src":"1493:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1735,"name":"uint8","nodeType":"ElementaryTypeName","src":"1493:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1743,"src":"1510:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1737,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1510:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1740,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":1743,"src":"1529:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1529:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:158:20"},"returnParameters":{"id":1742,"nodeType":"ParameterList","parameters":[],"src":"1553:0:20"},"scope":1758,"src":"1371:183:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1744,"nodeType":"StructuredDocumentation","src":"1560:294:20","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":1751,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":1747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1746,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1751,"src":"1875:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1745,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1874:15:20"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1751,"src":"1913:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1748,"name":"uint256","nodeType":"ElementaryTypeName","src":"1913:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1912:9:20"},"scope":1758,"src":"1859:63:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"1928:128:20","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":1757,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":1753,"nodeType":"ParameterList","parameters":[],"src":"2139:2:20"},"returnParameters":{"id":1756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1755,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1757,"src":"2165:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2165:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2164:9:20"},"scope":1758,"src":"2114:60:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1759,"src":"549:1627:20"}],"src":"33:2144:20"},"id":20},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","exportedSymbols":{"IERC20PermitDAI":[1781]},"id":1782,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1760,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1781,"linearizedBaseContracts":[1781],"name":"IERC20PermitDAI","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1761,"nodeType":"StructuredDocumentation","src":"98:485:21","text":" @notice update allowance with a signed permit\n @param holder Token owner's address (Authorizer)\n @param spender Spender's address\n @param nonce The permit nonce\n @param expiry The time at which this expires (unix time)\n @param allowed Whether the spender is allowed or disallowed from spending\n @param v v of the signature\n @param r r of the signature\n @param s s of the signature"},"functionSelector":"8fcbaf0c","id":1780,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":1778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1763,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":1780,"src":"613:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1762,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1765,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1780,"src":"637:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1764,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1767,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":1780,"src":"662:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":1780,"src":"685:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1771,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":1780,"src":"709:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1770,"name":"bool","nodeType":"ElementaryTypeName","src":"709:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1773,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":1780,"src":"731:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1772,"name":"uint8","nodeType":"ElementaryTypeName","src":"731:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1780,"src":"748:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1774,"name":"bytes32","nodeType":"ElementaryTypeName","src":"748:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1777,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":1780,"src":"767:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"767:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"603:179:21"},"returnParameters":{"id":1779,"nodeType":"ParameterList","parameters":[],"src":"791:0:21"},"scope":1781,"src":"588:204:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1782,"src":"66:728:21"}],"src":"33:762:21"},"id":21},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol","exportedSymbols":{"IAToken":[1790]},"id":1791,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1783,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1790,"linearizedBaseContracts":[1790],"name":"IAToken","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1784,"nodeType":"StructuredDocumentation","src":"745:76:22","text":" @dev returns the address of the aToken's underlying asset"},"functionSelector":"b16a19de","id":1789,"implemented":false,"kind":"function","modifiers":[],"name":"UNDERLYING_ASSET_ADDRESS","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[],"src":"912:2:22"},"returnParameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1789,"src":"938:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1786,"name":"address","nodeType":"ElementaryTypeName","src":"938:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"937:9:22"},"scope":1790,"src":"879:68:22","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1791,"src":"721:228:22"}],"src":"688:262:22"},"id":22},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","exportedSymbols":{"IBALTokenHolder":[1818]},"id":1819,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1792,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:23"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":1793,"nodeType":"ImportDirective","scope":1819,"sourceUnit":1503,"src":"721:55:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1794,"nodeType":"ImportDirective","scope":1819,"sourceUnit":1723,"src":"777:51:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1795,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1502,"src":"859:15:23","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1502","typeString":"contract IAuthentication"}},"id":1796,"nodeType":"InheritanceSpecifier","src":"859:15:23"}],"contractDependencies":[1502],"contractKind":"interface","fullyImplemented":false,"id":1818,"linearizedBaseContracts":[1818,1502],"name":"IBALTokenHolder","nodeType":"ContractDefinition","nodes":[{"functionSelector":"17d7de7c","id":1801,"implemented":false,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","parameters":{"id":1797,"nodeType":"ParameterList","parameters":[],"src":"897:2:23"},"returnParameters":{"id":1800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1801,"src":"923:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1798,"name":"string","nodeType":"ElementaryTypeName","src":"923:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"922:15:23"},"scope":1818,"src":"881:57:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c1075329","id":1808,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFunds","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1808,"src":"967:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1802,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1808,"src":"986:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"966:35:23"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[],"src":"1010:0:23"},"scope":1818,"src":"944:67:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8b6ca32c","id":1817,"implemented":false,"kind":"function","modifiers":[],"name":"sweepTokens","nodeType":"FunctionDefinition","parameters":{"id":1815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1810,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":1817,"src":"1047:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":1809,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1047:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1812,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1817,"src":"1069:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1811,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1814,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1817,"src":"1096:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1096:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1037:79:23"},"returnParameters":{"id":1816,"nodeType":"ParameterList","parameters":[],"src":"1125:0:23"},"scope":1818,"src":"1017:109:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1819,"src":"830:298:23"}],"src":"688:441:23"},"id":23},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","exportedSymbols":{"IBALTokenHolderFactory":[1848]},"id":1849,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1820,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:24"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":1821,"nodeType":"ImportDirective","scope":1849,"sourceUnit":3865,"src":"721:29:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"../liquidity-mining/IBalancerToken.sol","id":1822,"nodeType":"ImportDirective","scope":1849,"sourceUnit":212,"src":"751:48:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"./IBALTokenHolder.sol","id":1823,"nodeType":"ImportDirective","scope":1849,"sourceUnit":1819,"src":"801:31:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1848,"linearizedBaseContracts":[1848],"name":"IBALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c0039699","id":1828,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":1824,"nodeType":"ParameterList","parameters":[],"src":"898:2:24"},"returnParameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1828,"src":"924:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":1825,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"924:14:24","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"923:16:24"},"scope":1848,"src":"873:67:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":1833,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[],"src":"963:2:24"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1833,"src":"989:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":1830,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"989:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"988:8:24"},"scope":1848,"src":"946:51:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36390717","id":1840,"implemented":false,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","parameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":1840,"src":"1032:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:16:24"},"returnParameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1838,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1840,"src":"1071:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1837,"name":"bool","nodeType":"ElementaryTypeName","src":"1071:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1070:6:24"},"scope":1848,"src":"1003:74:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b6a46b3b","id":1847,"implemented":false,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":1847,"src":"1099:18:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1841,"name":"string","nodeType":"ElementaryTypeName","src":"1099:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1098:20:24"},"returnParameters":{"id":1846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1845,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1847,"src":"1137:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$1818","typeString":"contract IBALTokenHolder"},"typeName":{"id":1844,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":1818,"src":"1137:15:24","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$1818","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1136:17:24"},"scope":1848,"src":"1083:71:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1849,"src":"834:322:24"}],"src":"688:469:24"},"id":24},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","exportedSymbols":{"IBalancerQueries":[1911]},"id":1912,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1850,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:25"},{"id":1851,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:25"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":1852,"nodeType":"ImportDirective","scope":1912,"sourceUnit":3865,"src":"755:29:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1853,"nodeType":"StructuredDocumentation","src":"786:945:25","text":" @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n result they would have if called on the Vault given the current state. Note that the results will be affected by\n other transactions interacting with the Pools involved.\n All query functions can be called both on-chain and off-chain.\n If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n calling them via STATICCALL will fail.\n If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n non-view functions.\n In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n structs for simplicity."},"fullyImplemented":false,"id":1911,"linearizedBaseContracts":[1911],"name":"IBalancerQueries","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e969f6b3","id":1862,"implemented":false,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","parameters":{"id":1858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1855,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":1862,"src":"1784:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":1854,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3715,"src":"1784:17:25","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":1857,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":1862,"src":"1821:34:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":1856,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"1821:21:25","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1783:73:25"},"returnParameters":{"id":1861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1862,"src":"1891:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"1891:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1890:9:25"},"scope":1911,"src":"1765:135:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f84d066e","id":1878,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":1873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1864,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":1878,"src":"1939:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":1863,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"1939:15:25","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":1867,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":1878,"src":"1969:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":1865,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"1969:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":1866,"nodeType":"ArrayTypeName","src":"1969:22:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1878,"src":"2014:22:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":1868,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2014:6:25","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":1869,"nodeType":"ArrayTypeName","src":"2014:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":1872,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":1878,"src":"2046:34:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":1871,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"2046:21:25","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1929:157:25"},"returnParameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":1878,"src":"2105:27:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":1874,"name":"int256","nodeType":"ElementaryTypeName","src":"2105:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1875,"nodeType":"ArrayTypeName","src":"2105:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"2104:29:25"},"scope":1911,"src":"1906:228:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9ebbf05d","id":1894,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":1887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":1894,"src":"2168:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2168:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1882,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":1894,"src":"2192:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1881,"name":"address","nodeType":"ElementaryTypeName","src":"2192:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1894,"src":"2216:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1883,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1886,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":1894,"src":"2243:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":1885,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3643,"src":"2243:22:25","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"2158:128:25"},"returnParameters":{"id":1893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1889,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":1894,"src":"2305:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1888,"name":"uint256","nodeType":"ElementaryTypeName","src":"2305:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1892,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":1894,"src":"2321:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1890,"name":"uint256","nodeType":"ElementaryTypeName","src":"2321:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1891,"nodeType":"ArrayTypeName","src":"2321:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2304:44:25"},"scope":1911,"src":"2140:209:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c7b2c52c","id":1910,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":1903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":1910,"src":"2383:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2383:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":1910,"src":"2407:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1900,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1910,"src":"2431:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1899,"name":"address","nodeType":"ElementaryTypeName","src":"2431:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1902,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":1910,"src":"2458:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":1901,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"2458:22:25","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"2373:128:25"},"returnParameters":{"id":1909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1905,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":1910,"src":"2520:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1908,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":1910,"src":"2535:27:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2535:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1907,"nodeType":"ArrayTypeName","src":"2535:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2519:44:25"},"scope":1911,"src":"2355:209:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1912,"src":"1732:834:25"}],"src":"688:1879:25"},"id":25},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","exportedSymbols":{"IBalancerRelayer":[1936]},"id":1937,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1913,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:26"},{"id":1914,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:26"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":1915,"nodeType":"ImportDirective","scope":1937,"sourceUnit":3865,"src":"755:29:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1916,"nodeType":"StructuredDocumentation","src":"786:102:26","text":" @title IBalancerRelayer\n @notice Allows safe multicall execution of a relayer's functions"},"fullyImplemented":false,"id":1936,"linearizedBaseContracts":[1936],"name":"IBalancerRelayer","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7678922e","id":1921,"implemented":false,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","parameters":{"id":1917,"nodeType":"ParameterList","parameters":[],"src":"941:2:26"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1919,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1921,"src":"967:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1918,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:9:26"},"scope":1936,"src":"922:54:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":1926,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":1922,"nodeType":"ParameterList","parameters":[],"src":"999:2:26"},"returnParameters":{"id":1925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1924,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1926,"src":"1025:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":1923,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1025:6:26","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1024:8:26"},"scope":1936,"src":"982:51:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ac9650d8","id":1935,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":1935,"src":"1058:21:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":1927,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":1928,"nodeType":"ArrayTypeName","src":"1058:7:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1057:23:26"},"returnParameters":{"id":1934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1933,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":1935,"src":"1107:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":1931,"name":"bytes","nodeType":"ElementaryTypeName","src":"1107:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":1932,"nodeType":"ArrayTypeName","src":"1107:7:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1106:24:26"},"scope":1936,"src":"1039:92:26","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1937,"src":"889:244:26"}],"src":"688:446:26"},"id":26},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol","exportedSymbols":{"IButtonWrapper":[2075]},"id":2076,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1938,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2075,"linearizedBaseContracts":[2075],"name":"IButtonWrapper","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1939,"nodeType":"StructuredDocumentation","src":"1229:234:27","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"a0712d68","id":1946,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1941,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1946,"src":"1482:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1482:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1481:16:27"},"returnParameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1946,"src":"1516:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1516:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1515:9:27"},"scope":2075,"src":"1468:57:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1947,"nodeType":"StructuredDocumentation","src":"1531:306:27","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"da1919b3","id":1956,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1949,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1956,"src":"1859:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1948,"name":"address","nodeType":"ElementaryTypeName","src":"1859:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1951,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1956,"src":"1871:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1950,"name":"uint256","nodeType":"ElementaryTypeName","src":"1871:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1858:28:27"},"returnParameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1956,"src":"1905:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:9:27"},"scope":2075,"src":"1842:72:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1957,"nodeType":"StructuredDocumentation","src":"1920:227:27","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"42966c68","id":1964,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":1960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1959,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1964,"src":"2166:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1958,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:16:27"},"returnParameters":{"id":1963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1962,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1964,"src":"2200:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1961,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:9:27"},"scope":2075,"src":"2152:57:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1965,"nodeType":"StructuredDocumentation","src":"2215:294:27","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"ea785a5e","id":1974,"implemented":false,"kind":"function","modifiers":[],"name":"burnTo","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1967,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1974,"src":"2530:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1966,"name":"address","nodeType":"ElementaryTypeName","src":"2530:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1969,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1974,"src":"2542:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1968,"name":"uint256","nodeType":"ElementaryTypeName","src":"2542:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2529:28:27"},"returnParameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1972,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1974,"src":"2576:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1971,"name":"uint256","nodeType":"ElementaryTypeName","src":"2576:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2575:9:27"},"scope":2075,"src":"2514:71:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1975,"nodeType":"StructuredDocumentation","src":"2591:171:27","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"9975038c","id":1980,"implemented":false,"kind":"function","modifiers":[],"name":"burnAll","nodeType":"FunctionDefinition","parameters":{"id":1976,"nodeType":"ParameterList","parameters":[],"src":"2783:2:27"},"returnParameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1980,"src":"2804:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2804:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2803:9:27"},"scope":2075,"src":"2767:46:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1981,"nodeType":"StructuredDocumentation","src":"2819:214:27","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"a4fa9568","id":1988,"implemented":false,"kind":"function","modifiers":[],"name":"burnAllTo","nodeType":"FunctionDefinition","parameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1983,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1988,"src":"3057:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1982,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3056:12:27"},"returnParameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1986,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1988,"src":"3087:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"3087:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3086:9:27"},"scope":2075,"src":"3038:58:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"3102:262:27","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"b6b55f25","id":1996,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":1996,"src":"3386:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3385:17:27"},"returnParameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1994,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1996,"src":"3421:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1993,"name":"uint256","nodeType":"ElementaryTypeName","src":"3421:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3420:9:27"},"scope":2075,"src":"3369:61:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1997,"nodeType":"StructuredDocumentation","src":"3436:305:27","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"2f4f21e2","id":2006,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":2002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1999,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2006,"src":"3766:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1998,"name":"address","nodeType":"ElementaryTypeName","src":"3766:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2001,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":2006,"src":"3778:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3765:29:27"},"returnParameters":{"id":2005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2004,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2006,"src":"3813:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2003,"name":"uint256","nodeType":"ElementaryTypeName","src":"3813:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3812:9:27"},"scope":2075,"src":"3746:76:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"3828:228:27","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"2e1a7d4d","id":2014,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2009,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":2014,"src":"4079:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2008,"name":"uint256","nodeType":"ElementaryTypeName","src":"4079:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4078:17:27"},"returnParameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2012,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2014,"src":"4114:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"4114:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4113:9:27"},"scope":2075,"src":"4061:62:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2015,"nodeType":"StructuredDocumentation","src":"4129:300:27","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"205c2878","id":2024,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawTo","nodeType":"FunctionDefinition","parameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2024,"src":"4454:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2016,"name":"address","nodeType":"ElementaryTypeName","src":"4454:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2019,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":2024,"src":"4466:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4466:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4453:29:27"},"returnParameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2022,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2024,"src":"4501:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"4501:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4500:9:27"},"scope":2075,"src":"4434:76:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"4516:164:27","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of wrapper tokens burnt."},"functionSelector":"853828b6","id":2030,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAll","nodeType":"FunctionDefinition","parameters":{"id":2026,"nodeType":"ParameterList","parameters":[],"src":"4705:2:27"},"returnParameters":{"id":2029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2028,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2030,"src":"4726:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2027,"name":"uint256","nodeType":"ElementaryTypeName","src":"4726:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4725:9:27"},"scope":2075,"src":"4685:50:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2031,"nodeType":"StructuredDocumentation","src":"4741:207:27","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of wrapper tokens burnt."},"functionSelector":"ca9add8f","id":2038,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAllTo","nodeType":"FunctionDefinition","parameters":{"id":2034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2033,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2038,"src":"4976:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"4976:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4975:12:27"},"returnParameters":{"id":2037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2036,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2038,"src":"5006:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2035,"name":"uint256","nodeType":"ElementaryTypeName","src":"5006:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5005:9:27"},"scope":2075,"src":"4953:62:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2039,"nodeType":"StructuredDocumentation","src":"5137:48:27","text":"@return The address of the underlying token."},"functionSelector":"6f307dc3","id":2044,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","parameters":{"id":2040,"nodeType":"ParameterList","parameters":[],"src":"5209:2:27"},"returnParameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2044,"src":"5235:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2041,"name":"address","nodeType":"ElementaryTypeName","src":"5235:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5234:9:27"},"scope":2075,"src":"5190:54:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2045,"nodeType":"StructuredDocumentation","src":"5250:69:27","text":"@return The total underlying tokens held by the wrapper contract."},"functionSelector":"c70920bc","id":2050,"implemented":false,"kind":"function","modifiers":[],"name":"totalUnderlying","nodeType":"FunctionDefinition","parameters":{"id":2046,"nodeType":"ParameterList","parameters":[],"src":"5348:2:27"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2050,"src":"5374:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2047,"name":"uint256","nodeType":"ElementaryTypeName","src":"5374:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5373:9:27"},"scope":2075,"src":"5324:59:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2051,"nodeType":"StructuredDocumentation","src":"5389:96:27","text":"@param who The account address.\n @return The underlying token balance of the account."},"functionSelector":"3af9e669","id":2058,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","parameters":{"id":2054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2053,"mutability":"mutable","name":"who","nodeType":"VariableDeclaration","scope":2058,"src":"5519:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2052,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5518:13:27"},"returnParameters":{"id":2057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2056,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2058,"src":"5555:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2055,"name":"uint256","nodeType":"ElementaryTypeName","src":"5555:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5554:9:27"},"scope":2075,"src":"5490:74:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2059,"nodeType":"StructuredDocumentation","src":"5570:110:27","text":"@param uAmount The amount of underlying tokens.\n @return The amount of wrapper tokens exchangeable."},"functionSelector":"ed0287c0","id":2066,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingToWrapper","nodeType":"FunctionDefinition","parameters":{"id":2062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2061,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":2066,"src":"5714:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2060,"name":"uint256","nodeType":"ElementaryTypeName","src":"5714:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5713:17:27"},"returnParameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2066,"src":"5754:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2063,"name":"uint256","nodeType":"ElementaryTypeName","src":"5754:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5753:9:27"},"scope":2075,"src":"5685:78:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2067,"nodeType":"StructuredDocumentation","src":"5769:109:27","text":"@param amount The amount of wrapper tokens.\n @return The amount of underlying tokens exchangeable."},"functionSelector":"aab3b7db","id":2074,"implemented":false,"kind":"function","modifiers":[],"name":"wrapperToUnderlying","nodeType":"FunctionDefinition","parameters":{"id":2070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2069,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2074,"src":"5912:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"5912:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5911:16:27"},"returnParameters":{"id":2073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2072,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2074,"src":"5951:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"5951:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5950:9:27"},"scope":2075,"src":"5883:77:27","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2076,"src":"1081:4881:27"}],"src":"688:5275:27"},"id":27},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol","exportedSymbols":{"ICToken":[2103]},"id":2104,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2077,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:28"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2078,"nodeType":"ImportDirective","scope":2104,"sourceUnit":1723,"src":"900:51:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2079,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"974:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2080,"nodeType":"InheritanceSpecifier","src":"974:6:28"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2103,"linearizedBaseContracts":[2103,1722],"name":"ICToken","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2081,"nodeType":"StructuredDocumentation","src":"1238:56:28","text":" @dev Underlying asset for this CToken"},"functionSelector":"6f307dc3","id":2086,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","parameters":{"id":2082,"nodeType":"ParameterList","parameters":[],"src":"1318:2:28"},"returnParameters":{"id":2085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2084,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2086,"src":"1344:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2083,"name":"address","nodeType":"ElementaryTypeName","src":"1344:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1343:9:28"},"scope":2103,"src":"1299:54:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2087,"nodeType":"StructuredDocumentation","src":"1359:354:28","text":" @notice Sender supplies assets into the market and receives cTokens in exchange\n @dev Accrues interest whether or not the operation succeeds, unless reverted\n @param mintAmount The amount of the underlying asset to supply\n @return uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)"},"functionSelector":"a0712d68","id":2094,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":2090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2089,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":2094,"src":"1732:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2088,"name":"uint256","nodeType":"ElementaryTypeName","src":"1732:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:20:28"},"returnParameters":{"id":2093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2092,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2094,"src":"1770:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2091,"name":"uint256","nodeType":"ElementaryTypeName","src":"1770:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1769:9:28"},"scope":2103,"src":"1718:61:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2095,"nodeType":"StructuredDocumentation","src":"1785:347:28","text":" @notice Sender redeems cTokens in exchange for the underlying asset\n @dev Accrues interest whether or not the operation succeeds, unless reverted\n @param redeemTokens The number of cTokens to redeem into underlying\n @return uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)"},"functionSelector":"db006a75","id":2102,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":2098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2097,"mutability":"mutable","name":"redeemTokens","nodeType":"VariableDeclaration","scope":2102,"src":"2153:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2153:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2152:22:28"},"returnParameters":{"id":2101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2100,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2102,"src":"2193:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2192:9:28"},"scope":2103,"src":"2137:65:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2104,"src":"953:1251:28"}],"src":"688:1517:28"},"id":28},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol","exportedSymbols":{"IEulerToken":[2147]},"id":2148,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2105,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:29"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2106,"nodeType":"ImportDirective","scope":2148,"sourceUnit":1723,"src":"713:51:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2107,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"791:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2108,"nodeType":"InheritanceSpecifier","src":"791:6:29"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2147,"linearizedBaseContracts":[2147,1722],"name":"IEulerToken","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2109,"nodeType":"StructuredDocumentation","src":"804:278:29","text":" @dev Convert an eToken balance to an underlying amount, taking into account current exchange rate\n @param balance eToken balance, in internal book-keeping units (18 decimals)\n @return Amount in underlying units, (same decimals as underlying token)"},"functionSelector":"010ad6d1","id":2116,"implemented":false,"kind":"function","modifiers":[],"name":"convertBalanceToUnderlying","nodeType":"FunctionDefinition","parameters":{"id":2112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2111,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":2116,"src":"1308:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1308:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1307:17:29"},"returnParameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2116,"src":"1348:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1347:9:29"},"scope":2147,"src":"1272:85:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2117,"nodeType":"StructuredDocumentation","src":"1363:286:29","text":" @dev Convert an underlying amount to an eToken balance, taking into account current exchange rate\n @param underlyingAmount Amount in underlying units (same decimals as underlying token)\n @return eToken balance, in internal book-keeping units (18 decimals)"},"functionSelector":"52eac8af","id":2124,"implemented":false,"kind":"function","modifiers":[],"name":"convertUnderlyingToBalance","nodeType":"FunctionDefinition","parameters":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"underlyingAmount","nodeType":"VariableDeclaration","scope":2124,"src":"1875:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1874:26:29"},"returnParameters":{"id":2123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2124,"src":"1924:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1924:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1923:9:29"},"scope":2147,"src":"1839:94:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2125,"nodeType":"StructuredDocumentation","src":"1939:112:29","text":" @dev Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens"},"functionSelector":"e2bbb158","id":2132,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2127,"mutability":"mutable","name":"subAccountId","nodeType":"VariableDeclaration","scope":2132,"src":"2073:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2126,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2129,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2132,"src":"2095:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2095:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2072:38:29"},"returnParameters":{"id":2131,"nodeType":"ParameterList","parameters":[],"src":"2119:0:29"},"scope":2147,"src":"2056:64:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2133,"nodeType":"StructuredDocumentation","src":"2126:108:29","text":" @dev Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens"},"functionSelector":"441a3e70","id":2140,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2135,"mutability":"mutable","name":"subAccountId","nodeType":"VariableDeclaration","scope":2140,"src":"2257:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2134,"name":"uint256","nodeType":"ElementaryTypeName","src":"2257:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2137,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2140,"src":"2279:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2136,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2256:38:29"},"returnParameters":{"id":2139,"nodeType":"ParameterList","parameters":[],"src":"2303:0:29"},"scope":2147,"src":"2239:65:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2141,"nodeType":"StructuredDocumentation","src":"2310:51:29","text":" @dev Address of underlying asset"},"functionSelector":"7158da7c","id":2146,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingAsset","nodeType":"FunctionDefinition","parameters":{"id":2142,"nodeType":"ParameterList","parameters":[],"src":"2390:2:29"},"returnParameters":{"id":2145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2144,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2146,"src":"2416:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2143,"name":"address","nodeType":"ElementaryTypeName","src":"2416:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2415:9:29"},"scope":2147,"src":"2366:59:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2148,"src":"766:1661:29"}],"src":"688:1740:29"},"id":29},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","exportedSymbols":{"IGearboxDieselToken":[2159],"IGearboxVault":[2206]},"id":2207,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2149,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:30"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2150,"nodeType":"ImportDirective","scope":2207,"sourceUnit":1723,"src":"721:51:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2151,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"807:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2152,"nodeType":"InheritanceSpecifier","src":"807:6:30"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2159,"linearizedBaseContracts":[2159,1722],"name":"IGearboxDieselToken","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2153,"nodeType":"StructuredDocumentation","src":"820:56:30","text":" @dev returns the address of the vault"},"functionSelector":"8da5cb5b","id":2158,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","parameters":{"id":2154,"nodeType":"ParameterList","parameters":[],"src":"895:2:30"},"returnParameters":{"id":2157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2156,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2158,"src":"921:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2155,"name":"address","nodeType":"ElementaryTypeName","src":"921:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"920:9:30"},"scope":2159,"src":"881:49:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2207,"src":"774:158:30"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2206,"linearizedBaseContracts":[2206],"name":"IGearboxVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2160,"nodeType":"StructuredDocumentation","src":"964:67:30","text":" @dev returns the address of the underlying asset"},"functionSelector":"2495a599","id":2165,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingToken","nodeType":"FunctionDefinition","parameters":{"id":2161,"nodeType":"ParameterList","parameters":[],"src":"1060:2:30"},"returnParameters":{"id":2164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2163,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2165,"src":"1086:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2162,"name":"address","nodeType":"ElementaryTypeName","src":"1086:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1085:9:30"},"scope":2206,"src":"1036:59:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2166,"nodeType":"StructuredDocumentation","src":"1101:106:30","text":" @dev returns a 27 decimal fixed point 'ray' value so a rate of 1 is represented as 1e27"},"functionSelector":"788c6bfe","id":2171,"implemented":false,"kind":"function","modifiers":[],"name":"getDieselRate_RAY","nodeType":"FunctionDefinition","parameters":{"id":2167,"nodeType":"ParameterList","parameters":[],"src":"1291:2:30"},"returnParameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2171,"src":"1317:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"1317:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1316:9:30"},"scope":2206,"src":"1265:61:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2172,"nodeType":"StructuredDocumentation","src":"1332:73:30","text":" @dev converts diesel token amount to main token amount"},"functionSelector":"5427c938","id":2179,"implemented":false,"kind":"function","modifiers":[],"name":"fromDiesel","nodeType":"FunctionDefinition","parameters":{"id":2175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2179,"src":"1430:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1429:9:30"},"returnParameters":{"id":2178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2177,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2179,"src":"1462:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:30"},"scope":2206,"src":"1410:61:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2180,"nodeType":"StructuredDocumentation","src":"1477:73:30","text":" @dev converts main token amount to diesel token amount"},"functionSelector":"4d778ad1","id":2187,"implemented":false,"kind":"function","modifiers":[],"name":"toDiesel","nodeType":"FunctionDefinition","parameters":{"id":2183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2182,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2187,"src":"1573:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1572:9:30"},"returnParameters":{"id":2186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2187,"src":"1605:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1604:9:30"},"scope":2206,"src":"1555:59:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2188,"nodeType":"StructuredDocumentation","src":"1620:140:30","text":" @dev Adds liquidity to pool and sends diesel (LP) tokens back to the liquidity provider\n The Referral code can be 0"},"functionSelector":"9aa5d462","id":2197,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","parameters":{"id":2195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2190,"mutability":"mutable","name":"underlyingAmount","nodeType":"VariableDeclaration","scope":2197,"src":"1796:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1796:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2192,"mutability":"mutable","name":"onBehalfOf","nodeType":"VariableDeclaration","scope":2197,"src":"1830:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2191,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2194,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2197,"src":"1858:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1858:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1786:98:30"},"returnParameters":{"id":2196,"nodeType":"ParameterList","parameters":[],"src":"1893:0:30"},"scope":2206,"src":"1765:129:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2198,"nodeType":"StructuredDocumentation","src":"1900:107:30","text":" @dev Removes liquidity from the pool and sends the underlying tokens to the `to` address"},"functionSelector":"05fe138b","id":2205,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidity","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2200,"mutability":"mutable","name":"dieselAmount","nodeType":"VariableDeclaration","scope":2205,"src":"2037:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2199,"name":"uint256","nodeType":"ElementaryTypeName","src":"2037:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2202,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2205,"src":"2059:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2201,"name":"address","nodeType":"ElementaryTypeName","src":"2059:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2036:34:30"},"returnParameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"2079:0:30"},"scope":2206,"src":"2012:68:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2207,"src":"934:1148:30"}],"src":"688:1395:30"},"id":30},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","exportedSymbols":{"IProtocolFeePercentagesProvider":[2287],"ProtocolFeeType":[2300]},"id":2301,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2208,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:31"},{"id":2209,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:31"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2210,"nodeType":"StructuredDocumentation","src":"755:271:31","text":" @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n preferred source nonetheless."},"fullyImplemented":false,"id":2287,"linearizedBaseContracts":[2287],"name":"IProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2218,"name":"ProtocolFeeTypeRegistered","nodeType":"EventDefinition","parameters":{"id":2217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2212,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2218,"src":"1256:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2211,"name":"uint256","nodeType":"ElementaryTypeName","src":"1256:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2214,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2218,"src":"1281:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2213,"name":"string","nodeType":"ElementaryTypeName","src":"1281:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2216,"indexed":false,"mutability":"mutable","name":"maximumPercentage","nodeType":"VariableDeclaration","scope":2218,"src":"1294:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1255:65:31"},"src":"1224:97:31"},{"anonymous":false,"id":2224,"name":"ProtocolFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2224,"src":"1795:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2219,"name":"uint256","nodeType":"ElementaryTypeName","src":"1795:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2222,"indexed":false,"mutability":"mutable","name":"percentage","nodeType":"VariableDeclaration","scope":2224,"src":"1820:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1794:45:31"},"src":"1760:80:31"},{"documentation":{"id":2225,"nodeType":"StructuredDocumentation","src":"1846:363:31","text":" @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n as well as configurable via `setFeeTypePercentage`.\n `feeType` can be any arbitrary value (that is not in use).\n It is not possible to de-register fee types, nor change their name or maximum value."},"functionSelector":"7268d6ce","id":2236,"implemented":false,"kind":"function","modifiers":[],"name":"registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":2234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2236,"src":"2248:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2226,"name":"uint256","nodeType":"ElementaryTypeName","src":"2248:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2229,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2236,"src":"2273:18:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2228,"name":"string","nodeType":"ElementaryTypeName","src":"2273:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2231,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":2236,"src":"2301:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"2301:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2233,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":2236,"src":"2331:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2232,"name":"uint256","nodeType":"ElementaryTypeName","src":"2331:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2238:119:31"},"returnParameters":{"id":2235,"nodeType":"ParameterList","parameters":[],"src":"2366:0:31"},"scope":2287,"src":"2214:153:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2237,"nodeType":"StructuredDocumentation","src":"2373:89:31","text":" @dev Returns true if `feeType` has been registered and can be queried."},"functionSelector":"868897a0","id":2244,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","parameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2244,"src":"2491:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2238,"name":"uint256","nodeType":"ElementaryTypeName","src":"2491:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2490:17:31"},"returnParameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2244,"src":"2531:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2241,"name":"bool","nodeType":"ElementaryTypeName","src":"2531:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2530:6:31"},"scope":2287,"src":"2467:70:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2245,"nodeType":"StructuredDocumentation","src":"2543:90:31","text":" @dev Returns true if `value` is a valid percentage value for `feeType`."},"functionSelector":"74735e0b","id":2254,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2247,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2254,"src":"2672:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2246,"name":"uint256","nodeType":"ElementaryTypeName","src":"2672:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2249,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2254,"src":"2689:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2248,"name":"uint256","nodeType":"ElementaryTypeName","src":"2689:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2671:32:31"},"returnParameters":{"id":2253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2252,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2254,"src":"2727:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2251,"name":"bool","nodeType":"ElementaryTypeName","src":"2727:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2726:6:31"},"scope":2287,"src":"2638:95:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2255,"nodeType":"StructuredDocumentation","src":"2739:570:31","text":" @dev Sets the percentage value for `feeType` to `newValue`.\n IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n `setFlashLoanFeePercentage`."},"functionSelector":"4d44f0e9","id":2262,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2257,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2262,"src":"3344:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2256,"name":"uint256","nodeType":"ElementaryTypeName","src":"3344:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2259,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":2262,"src":"3361:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3361:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3343:35:31"},"returnParameters":{"id":2261,"nodeType":"ParameterList","parameters":[],"src":"3387:0:31"},"scope":2287,"src":"3314:74:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"3394:224:31","text":" @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector."},"functionSelector":"1a7c3263","id":2270,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2270,"src":"3653:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2264,"name":"uint256","nodeType":"ElementaryTypeName","src":"3653:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3652:17:31"},"returnParameters":{"id":2269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2270,"src":"3693:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2267,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3692:9:31"},"scope":2287,"src":"3623:79:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2271,"nodeType":"StructuredDocumentation","src":"3708:58:31","text":" @dev Returns `feeType`'s maximum value."},"functionSelector":"5e2cae4c","id":2278,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2273,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2278,"src":"3808:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2272,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3807:17:31"},"returnParameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2278,"src":"3848:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2275,"name":"uint256","nodeType":"ElementaryTypeName","src":"3848:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3847:9:31"},"scope":2287,"src":"3771:86:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2279,"nodeType":"StructuredDocumentation","src":"3863:49:31","text":" @dev Returns `feeType`'s name."},"functionSelector":"b661eda1","id":2286,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeName","nodeType":"FunctionDefinition","parameters":{"id":2282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2281,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2286,"src":"3941:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2280,"name":"uint256","nodeType":"ElementaryTypeName","src":"3941:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3940:17:31"},"returnParameters":{"id":2285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2286,"src":"3981:13:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2283,"name":"string","nodeType":"ElementaryTypeName","src":"3981:6:31","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3980:15:31"},"scope":2287,"src":"3917:79:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2301,"src":"1027:2971:31"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2300,"linearizedBaseContracts":[2300],"name":"ProtocolFeeType","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2290,"mutability":"constant","name":"SWAP","nodeType":"VariableDeclaration","scope":2300,"src":"4334:34:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2288,"name":"uint256","nodeType":"ElementaryTypeName","src":"4334:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":2293,"mutability":"constant","name":"FLASH_LOAN","nodeType":"VariableDeclaration","scope":2300,"src":"4374:40:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2291,"name":"uint256","nodeType":"ElementaryTypeName","src":"4374:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4413:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":2296,"mutability":"constant","name":"YIELD","nodeType":"VariableDeclaration","scope":2300,"src":"4420:35:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2294,"name":"uint256","nodeType":"ElementaryTypeName","src":"4420:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4454:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":2299,"mutability":"constant","name":"AUM","nodeType":"VariableDeclaration","scope":2300,"src":"4461:33:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2297,"name":"uint256","nodeType":"ElementaryTypeName","src":"4461:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4493:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"}],"scope":2301,"src":"4000:551:31"}],"src":"688:3864:31"},"id":31},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","exportedSymbols":{"IProtocolFeeSplitter":[2426]},"id":2427,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2302,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:32"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2303,"nodeType":"ImportDirective","scope":2427,"sourceUnit":3865,"src":"721:29:32","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"./IProtocolFeesWithdrawer.sol","id":2304,"nodeType":"ImportDirective","scope":2427,"sourceUnit":2501,"src":"751:39:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2305,"nodeType":"StructuredDocumentation","src":"792:378:32","text":" @title ProtocolFeeSplitter\n @author Daoism Systems\n @notice Distributes protocol fees collected from a particular pool between a DAO fund recipient\n (e.g., the Balancer DAO treasury), and a beneficiary designated by the pool owner.\n @dev By default, all funds go to the DAO. To claim a share of the protocol fees, pool owners\n may call `setPoolBeneficiary`."},"fullyImplemented":false,"id":2426,"linearizedBaseContracts":[2426],"name":"IProtocolFeeSplitter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2317,"name":"FeesCollected","nodeType":"EventDefinition","parameters":{"id":2316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2307,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2317,"src":"1237:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1237:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2309,"indexed":true,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":2317,"src":"1269:27:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2308,"name":"address","nodeType":"ElementaryTypeName","src":"1269:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2311,"indexed":false,"mutability":"mutable","name":"poolEarned","nodeType":"VariableDeclaration","scope":2317,"src":"1306:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2310,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2313,"indexed":true,"mutability":"mutable","name":"daoFundsRecipient","nodeType":"VariableDeclaration","scope":2317,"src":"1334:33:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"1334:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2315,"indexed":false,"mutability":"mutable","name":"daoEarned","nodeType":"VariableDeclaration","scope":2317,"src":"1377:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1227:173:32"},"src":"1208:193:32"},{"anonymous":false,"id":2323,"name":"PoolRevenueShareChanged","nodeType":"EventDefinition","parameters":{"id":2322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2319,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2323,"src":"1437:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1437:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2321,"indexed":false,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":2323,"src":"1461:30:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2320,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1436:56:32"},"src":"1407:86:32"},{"anonymous":false,"id":2327,"name":"PoolRevenueShareCleared","nodeType":"EventDefinition","parameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2327,"src":"1528:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1528:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1527:24:32"},"src":"1498:54:32"},{"anonymous":false,"id":2333,"name":"PoolBeneficiaryChanged","nodeType":"EventDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2329,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2333,"src":"1586:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1586:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2331,"indexed":false,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":2333,"src":"1610:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2330,"name":"address","nodeType":"ElementaryTypeName","src":"1610:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1585:48:32"},"src":"1557:77:32"},{"anonymous":false,"id":2337,"name":"DefaultRevenueSharePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2335,"indexed":false,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":2337,"src":"1682:30:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2334,"name":"uint256","nodeType":"ElementaryTypeName","src":"1682:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1681:32:32"},"src":"1639:75:32"},{"anonymous":false,"id":2341,"name":"DAOFundsRecipientChanged","nodeType":"EventDefinition","parameters":{"id":2340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2339,"indexed":false,"mutability":"mutable","name":"newDaoFundsRecipient","nodeType":"VariableDeclaration","scope":2341,"src":"1750:28:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"1750:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1749:30:32"},"src":"1719:61:32"},{"documentation":{"id":2342,"nodeType":"StructuredDocumentation","src":"1810:121:32","text":" @notice Returns the DAO funds recipient that will receive any balance not due to the pool beneficiary."},"functionSelector":"89ee2f26","id":2347,"implemented":false,"kind":"function","modifiers":[],"name":"getDaoFundsRecipient","nodeType":"FunctionDefinition","parameters":{"id":2343,"nodeType":"ParameterList","parameters":[],"src":"1965:2:32"},"returnParameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2345,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2347,"src":"1991:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2344,"name":"address","nodeType":"ElementaryTypeName","src":"1991:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1990:9:32"},"scope":2426,"src":"1936:64:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2348,"nodeType":"StructuredDocumentation","src":"2006:208:32","text":" @notice Allows a authorized user to change the DAO funds recipient.\n @dev This is a permissioned function.\n @param newDaoFundsRecipient - address of the new DAO funds recipient."},"functionSelector":"4ca760eb","id":2353,"implemented":false,"kind":"function","modifiers":[],"name":"setDaoFundsRecipient","nodeType":"FunctionDefinition","parameters":{"id":2351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2350,"mutability":"mutable","name":"newDaoFundsRecipient","nodeType":"VariableDeclaration","scope":2353,"src":"2249:28:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2349,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2248:30:32"},"returnParameters":{"id":2352,"nodeType":"ParameterList","parameters":[],"src":"2287:0:32"},"scope":2426,"src":"2219:69:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2354,"nodeType":"StructuredDocumentation","src":"2294:293:32","text":" @notice Allows a pool owner to change the revenue share beneficiary for a given pool.\n @dev This is a permissioned function.\n @param poolId - the poolId of the pool where the beneficiary will change.\n @param newBeneficiary - address of the new beneficiary."},"functionSelector":"7ab74be4","id":2361,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolBeneficiary","nodeType":"FunctionDefinition","parameters":{"id":2359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2356,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2361,"src":"2620:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2620:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2358,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":2361,"src":"2636:22:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2357,"name":"address","nodeType":"ElementaryTypeName","src":"2636:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2619:40:32"},"returnParameters":{"id":2360,"nodeType":"ParameterList","parameters":[],"src":"2668:0:32"},"scope":2426,"src":"2592:77:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2362,"nodeType":"StructuredDocumentation","src":"2706:338:32","text":" @dev Returns the current protocol fee split configuration for a given pool.\n @param poolId - the poolId of a pool with accrued protocol fees.\n @return revenueSharePercentageOverride - the percentage of the split sent to the pool beneficiary.\n @return beneficiary - the address of the pool beneficiary."},"functionSelector":"d6c9cd58","id":2373,"implemented":false,"kind":"function","modifiers":[],"name":"getRevenueShareSettings","nodeType":"FunctionDefinition","parameters":{"id":2365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2364,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2373,"src":"3082:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3081:16:32"},"returnParameters":{"id":2372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":2373,"src":"3158:38:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2366,"name":"uint256","nodeType":"ElementaryTypeName","src":"3158:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2369,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":2373,"src":"3210:19:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2368,"name":"address","nodeType":"ElementaryTypeName","src":"3210:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2371,"mutability":"mutable","name":"overrideSet","nodeType":"VariableDeclaration","scope":2373,"src":"3243:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2370,"name":"bool","nodeType":"ElementaryTypeName","src":"3243:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3144:125:32"},"scope":2426,"src":"3049:221:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2374,"nodeType":"StructuredDocumentation","src":"3276:156:32","text":" @dev Returns the default revenue share percentage a pool will receive, unless overridden by a call\n to `setRevenueSharePercentage`."},"functionSelector":"644b3f1b","id":2379,"implemented":false,"kind":"function","modifiers":[],"name":"getDefaultRevenueSharePercentage","nodeType":"FunctionDefinition","parameters":{"id":2375,"nodeType":"ParameterList","parameters":[],"src":"3478:2:32"},"returnParameters":{"id":2378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2379,"src":"3504:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"3504:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3503:9:32"},"scope":2426,"src":"3437:76:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2380,"nodeType":"StructuredDocumentation","src":"3519:410:32","text":" @notice Allows an authorized user to change the default revenue share percentage.\n @dev Set the default revenue share percentage, applied to pools where no override has been set\n through `setRevenueSharePercentage`. Must be below the maximum allowed split.\n This is a permissioned function.\n @param defaultRevenueSharePercentage - new default revenue share percentage"},"functionSelector":"92b2b1f6","id":2385,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultRevenueSharePercentage","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2382,"mutability":"mutable","name":"defaultRevenueSharePercentage","nodeType":"VariableDeclaration","scope":2385,"src":"3976:37:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2381,"name":"uint256","nodeType":"ElementaryTypeName","src":"3976:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3975:39:32"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"4023:0:32"},"scope":2426,"src":"3934:90:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2386,"nodeType":"StructuredDocumentation","src":"4030:298:32","text":" @notice Allows an authorized user to change the revenueShare for a given pool.\n @dev This is a permissioned function.\n @param poolId - the poolId of the pool where the revenue share will change.\n @param revenueSharePercentage - the new revenue share percentage."},"functionSelector":"1cb594fc","id":2393,"implemented":false,"kind":"function","modifiers":[],"name":"setRevenueSharePercentage","nodeType":"FunctionDefinition","parameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2388,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2393,"src":"4368:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4368:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2390,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":2393,"src":"4384:30:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"4384:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4367:48:32"},"returnParameters":{"id":2392,"nodeType":"ParameterList","parameters":[],"src":"4424:0:32"},"scope":2426,"src":"4333:92:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2394,"nodeType":"StructuredDocumentation","src":"4431:225:32","text":" @notice Allows an authorized user to change the revenueShare for a given pool.\n @dev This is a permissioned function.\n @param poolId - the poolId of the pool where the revenue share will change."},"functionSelector":"3b0cf663","id":2399,"implemented":false,"kind":"function","modifiers":[],"name":"clearRevenueSharePercentage","nodeType":"FunctionDefinition","parameters":{"id":2397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2396,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2399,"src":"4698:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4698:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4697:16:32"},"returnParameters":{"id":2398,"nodeType":"ParameterList","parameters":[],"src":"4722:0:32"},"scope":2426,"src":"4661:62:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2400,"nodeType":"StructuredDocumentation","src":"4777:372:32","text":" @dev Returns the amount of fees that would be sent to each beneficiary in a call to `collectFees`.\n @param poolId - the poolId of a pool with accrued protocol fees.\n @return beneficiaryAmount - the BPT amount that would be sent to the pool beneficiary.\n @return daoAmount - the BPT amount that would be sent to the DAO funds recipient."},"functionSelector":"9d8669d3","id":2409,"implemented":false,"kind":"function","modifiers":[],"name":"getAmounts","nodeType":"FunctionDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2409,"src":"5174:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5174:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5173:16:32"},"returnParameters":{"id":2408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":2409,"src":"5213:25:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5213:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2407,"mutability":"mutable","name":"daoAmount","nodeType":"VariableDeclaration","scope":2409,"src":"5240:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2406,"name":"uint256","nodeType":"ElementaryTypeName","src":"5240:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5212:46:32"},"scope":2426,"src":"5154:105:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2410,"nodeType":"StructuredDocumentation","src":"5265:346:32","text":" @dev Permissionless function to collect and distribute any accrued protocol fees for the given pool.\n @param poolId - the poolId of a pool with accrued protocol fees.\n @return beneficiaryAmount - the BPT amount sent to the pool beneficiary.\n @return daoAmount - the BPT amount sent to the DAO funds recipient."},"functionSelector":"817db73b","id":2419,"implemented":false,"kind":"function","modifiers":[],"name":"collectFees","nodeType":"FunctionDefinition","parameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2419,"src":"5637:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5637:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5636:16:32"},"returnParameters":{"id":2418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2415,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":2419,"src":"5671:25:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2414,"name":"uint256","nodeType":"ElementaryTypeName","src":"5671:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2417,"mutability":"mutable","name":"daoAmount","nodeType":"VariableDeclaration","scope":2419,"src":"5698:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2416,"name":"uint256","nodeType":"ElementaryTypeName","src":"5698:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5670:46:32"},"scope":2426,"src":"5616:101:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2420,"nodeType":"StructuredDocumentation","src":"5744:121:32","text":" @notice Returns the `ProtocolFeesWithdrawer`, used to withdraw funds from the `ProtocolFeesCollector`."},"functionSelector":"4f4f4bc7","id":2425,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesWithdrawer","nodeType":"FunctionDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[],"src":"5904:2:32"},"returnParameters":{"id":2424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2425,"src":"5930:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":2422,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"5930:23:32","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"src":"5929:25:32"},"scope":2426,"src":"5870:85:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2427,"src":"1171:4786:32"}],"src":"688:5270:32"},"id":32},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","exportedSymbols":{"IProtocolFeesWithdrawer":[2500]},"id":2501,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2428,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:33"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"../vault/IProtocolFeesCollector.sol","id":2429,"nodeType":"ImportDirective","scope":2501,"sourceUnit":3400,"src":"721:45:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2430,"nodeType":"StructuredDocumentation","src":"768:321:33","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":false,"id":2500,"linearizedBaseContracts":[2500],"name":"IProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2434,"name":"TokenAllowlisted","nodeType":"EventDefinition","parameters":{"id":2433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2432,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2434,"src":"1153:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2431,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1153:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1152:14:33"},"src":"1130:37:33"},{"anonymous":false,"id":2438,"name":"TokenDenylisted","nodeType":"EventDefinition","parameters":{"id":2437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2436,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2438,"src":"1194:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2435,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1194:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1193:14:33"},"src":"1172:36:33"},{"documentation":{"id":2439,"nodeType":"StructuredDocumentation","src":"1214:77:33","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":2444,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":2440,"nodeType":"ParameterList","parameters":[],"src":"1329:2:33"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2442,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2444,"src":"1355:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":2441,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"1355:22:33","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"1354:24:33"},"scope":2500,"src":"1296:83:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2445,"nodeType":"StructuredDocumentation","src":"1385:110:33","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":2452,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","parameters":{"id":2448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2447,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2452,"src":"1529:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2446,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1529:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1528:14:33"},"returnParameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2452,"src":"1566:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2449,"name":"bool","nodeType":"ElementaryTypeName","src":"1566:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1565:6:33"},"scope":2500,"src":"1500:72:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2453,"nodeType":"StructuredDocumentation","src":"1578:174:33","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":2461,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","parameters":{"id":2457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2456,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2461,"src":"1787:24:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2454,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1787:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2455,"nodeType":"ArrayTypeName","src":"1787:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1786:26:33"},"returnParameters":{"id":2460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2459,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2461,"src":"1836:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2458,"name":"bool","nodeType":"ElementaryTypeName","src":"1836:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1835:6:33"},"scope":2500,"src":"1757:85:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2462,"nodeType":"StructuredDocumentation","src":"1848:77:33","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":2469,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2464,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2469,"src":"1958:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2463,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1957:15:33"},"returnParameters":{"id":2468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2467,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2469,"src":"1996:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2466,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1996:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1995:8:33"},"scope":2500,"src":"1930:74:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2470,"nodeType":"StructuredDocumentation","src":"2010:67:33","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":2475,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","parameters":{"id":2471,"nodeType":"ParameterList","parameters":[],"src":"2116:2:33"},"returnParameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2473,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2475,"src":"2142:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2142:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2141:9:33"},"scope":2500,"src":"2082:69:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2476,"nodeType":"StructuredDocumentation","src":"2157:356:33","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":2487,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2487,"src":"2558:24:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2477,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2558:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2478,"nodeType":"ArrayTypeName","src":"2558:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2482,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2487,"src":"2592:26:33","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2481,"nodeType":"ArrayTypeName","src":"2592:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2484,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2487,"src":"2628:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2483,"name":"address","nodeType":"ElementaryTypeName","src":"2628:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2548:103:33"},"returnParameters":{"id":2486,"nodeType":"ParameterList","parameters":[],"src":"2660:0:33"},"scope":2500,"src":"2518:143:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"2667:112:33","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":2493,"implemented":false,"kind":"function","modifiers":[],"name":"denylistToken","nodeType":"FunctionDefinition","parameters":{"id":2491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2493,"src":"2807:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2489,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2807:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2806:14:33"},"returnParameters":{"id":2492,"nodeType":"ParameterList","parameters":[],"src":"2829:0:33"},"scope":2500,"src":"2784:46:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2494,"nodeType":"StructuredDocumentation","src":"2836:110:33","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":2499,"implemented":false,"kind":"function","modifiers":[],"name":"allowlistToken","nodeType":"FunctionDefinition","parameters":{"id":2497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2496,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2499,"src":"2975:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2495,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2975:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2974:14:33"},"returnParameters":{"id":2498,"nodeType":"ParameterList","parameters":[],"src":"2997:0:33"},"scope":2500,"src":"2951:47:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2501,"src":"1090:1910:33"}],"src":"688:2313:33"},"id":33},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol","exportedSymbols":{"IProtocolIdRegistry":[2548],"ProtocolId":[2606]},"id":2607,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2502,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:34"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2503,"nodeType":"StructuredDocumentation","src":"713:247:34","text":" @dev Registry of protocol IDs for external integrations with Balancer. The IDs chosen are arbitrary and do not affect\n behavior of any Balancer contracts. They are used only to tag specific contracts (usually pools) at the data layer."},"fullyImplemented":false,"id":2548,"linearizedBaseContracts":[2548],"name":"IProtocolIdRegistry","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2509,"name":"ProtocolIdRegistered","nodeType":"EventDefinition","parameters":{"id":2508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2505,"indexed":true,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2509,"src":"1077:26:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"1077:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2507,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2509,"src":"1105:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2506,"name":"string","nodeType":"ElementaryTypeName","src":"1105:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1076:41:34"},"src":"1050:68:34"},{"anonymous":false,"id":2515,"name":"ProtocolIdRenamed","nodeType":"EventDefinition","parameters":{"id":2514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2511,"indexed":true,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2515,"src":"1206:26:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2513,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2515,"src":"1234:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2512,"name":"string","nodeType":"ElementaryTypeName","src":"1234:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1205:41:34"},"src":"1182:65:34"},{"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"1253:121:34","text":" @dev Registers an ID (and name) to differentiate among protocols. Protocol IDs cannot be deregistered."},"functionSelector":"7f5d9817","id":2523,"implemented":false,"kind":"function","modifiers":[],"name":"registerProtocolId","nodeType":"FunctionDefinition","parameters":{"id":2521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2518,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2523,"src":"1407:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2517,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2520,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2523,"src":"1427:18:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2519,"name":"string","nodeType":"ElementaryTypeName","src":"1427:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1406:40:34"},"returnParameters":{"id":2522,"nodeType":"ParameterList","parameters":[],"src":"1455:0:34"},"scope":2548,"src":"1379:77:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2524,"nodeType":"StructuredDocumentation","src":"1462:123:34","text":" @dev Changes the name of an existing protocol ID. Should only be used to update in the case of mistakes."},"functionSelector":"3585c4da","id":2531,"implemented":false,"kind":"function","modifiers":[],"name":"renameProtocolId","nodeType":"FunctionDefinition","parameters":{"id":2529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2526,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2531,"src":"1616:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1616:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2528,"mutability":"mutable","name":"newName","nodeType":"VariableDeclaration","scope":2531,"src":"1636:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2527,"name":"string","nodeType":"ElementaryTypeName","src":"1636:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1615:43:34"},"returnParameters":{"id":2530,"nodeType":"ParameterList","parameters":[],"src":"1667:0:34"},"scope":2548,"src":"1590:78:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2532,"nodeType":"StructuredDocumentation","src":"1674:92:34","text":" @dev Returns true if `protocolId` has been registered and can be queried."},"functionSelector":"3cae580a","id":2539,"implemented":false,"kind":"function","modifiers":[],"name":"isValidProtocolId","nodeType":"FunctionDefinition","parameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2534,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2539,"src":"1798:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1798:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1797:20:34"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2537,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2539,"src":"1841:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2536,"name":"bool","nodeType":"ElementaryTypeName","src":"1841:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1840:6:34"},"scope":2548,"src":"1771:76:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2540,"nodeType":"StructuredDocumentation","src":"1853:78:34","text":" @dev Returns the name associated with a given `protocolId`."},"functionSelector":"a2de1041","id":2547,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolName","nodeType":"FunctionDefinition","parameters":{"id":2543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":2547,"src":"1961:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2541,"name":"uint256","nodeType":"ElementaryTypeName","src":"1961:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1960:20:34"},"returnParameters":{"id":2546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2545,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2547,"src":"2004:13:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2544,"name":"string","nodeType":"ElementaryTypeName","src":"2004:6:34","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2003:15:34"},"scope":2548,"src":"1936:83:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2607,"src":"961:1060:34"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2606,"linearizedBaseContracts":[2606],"name":"ProtocolId","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2551,"mutability":"constant","name":"AAVE_V1","nodeType":"VariableDeclaration","scope":2606,"src":"2357:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2549,"name":"uint256","nodeType":"ElementaryTypeName","src":"2357:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2393:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":2554,"mutability":"constant","name":"AAVE_V2","nodeType":"VariableDeclaration","scope":2606,"src":"2400:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2400:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":2557,"mutability":"constant","name":"AAVE_V3","nodeType":"VariableDeclaration","scope":2606,"src":"2443:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2443:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2479:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":2560,"mutability":"constant","name":"AMPLEFORTH","nodeType":"VariableDeclaration","scope":2606,"src":"2486:40:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"2486:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:34","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":2563,"mutability":"constant","name":"BEEFY","nodeType":"VariableDeclaration","scope":2606,"src":"2532:35:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2561,"name":"uint256","nodeType":"ElementaryTypeName","src":"2532:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":2562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2566:1:34","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":2566,"mutability":"constant","name":"EULER","nodeType":"VariableDeclaration","scope":2606,"src":"2573:35:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2564,"name":"uint256","nodeType":"ElementaryTypeName","src":"2573:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":2565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2607:1:34","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":2569,"mutability":"constant","name":"GEARBOX","nodeType":"VariableDeclaration","scope":2606,"src":"2614:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2614:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2650:1:34","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":2572,"mutability":"constant","name":"IDLE","nodeType":"VariableDeclaration","scope":2606,"src":"2657:34:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2657:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2690:1:34","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":2575,"mutability":"constant","name":"MORPHO","nodeType":"VariableDeclaration","scope":2606,"src":"2697:36:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"2697:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2732:1:34","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":2578,"mutability":"constant","name":"RADIANT","nodeType":"VariableDeclaration","scope":2606,"src":"2739:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2576,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":2577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2775:1:34","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":2581,"mutability":"constant","name":"REAPER","nodeType":"VariableDeclaration","scope":2606,"src":"2782:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2579,"name":"uint256","nodeType":"ElementaryTypeName","src":"2782:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":2580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2817:2:34","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"constant":true,"id":2584,"mutability":"constant","name":"SILO","nodeType":"VariableDeclaration","scope":2606,"src":"2825:35:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"2825:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3131","id":2583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2858:2:34","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"visibility":"internal"},{"constant":true,"id":2587,"mutability":"constant","name":"STARGATE","nodeType":"VariableDeclaration","scope":2606,"src":"2866:39:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3132","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2903:2:34","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"internal"},{"constant":true,"id":2590,"mutability":"constant","name":"STURDY","nodeType":"VariableDeclaration","scope":2606,"src":"2911:37:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2588,"name":"uint256","nodeType":"ElementaryTypeName","src":"2911:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3133","id":2589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2946:2:34","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"visibility":"internal"},{"constant":true,"id":2593,"mutability":"constant","name":"TESSERA","nodeType":"VariableDeclaration","scope":2606,"src":"2954:38:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"2954:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3134","id":2592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2990:2:34","typeDescriptions":{"typeIdentifier":"t_rational_14_by_1","typeString":"int_const 14"},"value":"14"},"visibility":"internal"},{"constant":true,"id":2596,"mutability":"constant","name":"TETU","nodeType":"VariableDeclaration","scope":2606,"src":"2998:35:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3135","id":2595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3031:2:34","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"visibility":"internal"},{"constant":true,"id":2599,"mutability":"constant","name":"YEARN","nodeType":"VariableDeclaration","scope":2606,"src":"3039:36:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2597,"name":"uint256","nodeType":"ElementaryTypeName","src":"3039:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3073:2:34","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"constant":true,"id":2602,"mutability":"constant","name":"MIDAS","nodeType":"VariableDeclaration","scope":2606,"src":"3081:36:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2600,"name":"uint256","nodeType":"ElementaryTypeName","src":"3081:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3137","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:2:34","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"17"},"visibility":"internal"},{"constant":true,"id":2605,"mutability":"constant","name":"AGAVE","nodeType":"VariableDeclaration","scope":2606,"src":"3123:36:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2603,"name":"uint256","nodeType":"ElementaryTypeName","src":"3123:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3138","id":2604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3157:2:34","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"internal"}],"scope":2607,"src":"2023:1193:34"}],"src":"688:2529:34"},"id":34},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol","exportedSymbols":{"IReaperTokenVault":[2642]},"id":2643,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2608,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:35"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2609,"nodeType":"ImportDirective","scope":2643,"sourceUnit":1723,"src":"721:51:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2610,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1232:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2611,"nodeType":"InheritanceSpecifier","src":"1232:6:35"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2642,"linearizedBaseContracts":[2642,1722],"name":"IReaperTokenVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2612,"nodeType":"StructuredDocumentation","src":"1245:87:35","text":" @dev returns the address of the vault's underlying asset (mainToken)"},"functionSelector":"fc0c546a","id":2617,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":2613,"nodeType":"ParameterList","parameters":[],"src":"1351:2:35"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2615,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2617,"src":"1377:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2614,"name":"address","nodeType":"ElementaryTypeName","src":"1377:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1376:9:35"},"scope":2642,"src":"1337:49:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"1392:126:35","text":" @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18"},"functionSelector":"77c7b8fc","id":2623,"implemented":false,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":2619,"nodeType":"ParameterList","parameters":[],"src":"1552:2:35"},"returnParameters":{"id":2622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2621,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2623,"src":"1578:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1578:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1577:9:35"},"scope":2642,"src":"1523:64:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2624,"nodeType":"StructuredDocumentation","src":"1593:227:35","text":" @notice Deposits `_amount` `token`, issuing shares to the caller.\n If Panic is activated, deposits will not be accepted and this call will fail.\n @param _amount The quantity of tokens to deposit.*"},"functionSelector":"b6b55f25","id":2629,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":2629,"src":"1842:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1842:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1841:17:35"},"returnParameters":{"id":2628,"nodeType":"ParameterList","parameters":[],"src":"1867:0:35"},"scope":2642,"src":"1825:43:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2630,"nodeType":"StructuredDocumentation","src":"1874:154:35","text":" @notice Withdraws the calling account's tokens from this Vault,\n redeeming amount `_shares` for an appropriate amount of tokens.*"},"functionSelector":"2e1a7d4d","id":2635,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2632,"mutability":"mutable","name":"_shares","nodeType":"VariableDeclaration","scope":2635,"src":"2051:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:17:35"},"returnParameters":{"id":2634,"nodeType":"ParameterList","parameters":[],"src":"2076:0:35"},"scope":2642,"src":"2033:44:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2636,"nodeType":"StructuredDocumentation","src":"2083:145:35","text":" @dev returns the number of decimals for this vault token.\n For reaper single-strat vaults, the decimals are fixed to 18."},"functionSelector":"313ce567","id":2641,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[],"src":"2250:2:35"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2639,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2641,"src":"2276:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2638,"name":"uint8","nodeType":"ElementaryTypeName","src":"2276:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2275:7:35"},"scope":2642,"src":"2233:50:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2643,"src":"1201:1084:35"}],"src":"688:1598:35"},"id":35},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","exportedSymbols":{"IShareToken":[2661]},"id":2662,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2644,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:36"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2645,"nodeType":"ImportDirective","scope":2662,"sourceUnit":1723,"src":"721:51:36","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","file":"./ISilo.sol","id":2646,"nodeType":"ImportDirective","scope":2662,"sourceUnit":2721,"src":"774:21:36","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2647,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"822:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2648,"nodeType":"InheritanceSpecifier","src":"822:6:36"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2661,"linearizedBaseContracts":[2661,1722],"name":"IShareToken","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2649,"nodeType":"StructuredDocumentation","src":"835:52:36","text":" @dev returns the underlying asset"},"functionSelector":"38d52e0f","id":2654,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[],"src":"906:2:36"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2654,"src":"932:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2651,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:9:36"},"scope":2661,"src":"892:49:36","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2655,"nodeType":"StructuredDocumentation","src":"947:55:36","text":" @dev returns the address of the silo"},"functionSelector":"eb3beb29","id":2660,"implemented":false,"kind":"function","modifiers":[],"name":"silo","nodeType":"FunctionDefinition","parameters":{"id":2656,"nodeType":"ParameterList","parameters":[],"src":"1020:2:36"},"returnParameters":{"id":2659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2660,"src":"1046:5:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"},"typeName":{"id":2657,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"1046:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"visibility":"internal"}],"src":"1045:7:36"},"scope":2661,"src":"1007:46:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2662,"src":"797:258:36"}],"src":"688:368:36"},"id":36},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","exportedSymbols":{"IBaseSilo":[2687],"ISilo":[2720]},"id":2721,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2663,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:37"},{"id":2664,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:37"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","file":"./IShareToken.sol","id":2665,"nodeType":"ImportDirective","scope":2721,"sourceUnit":2662,"src":"755:27:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2687,"linearizedBaseContracts":[2687],"name":"IBaseSilo","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBaseSilo.AssetStorage","id":2678,"members":[{"constant":false,"id":2667,"mutability":"mutable","name":"collateralToken","nodeType":"VariableDeclaration","scope":2678,"src":"984:27:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":2666,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"984:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":2669,"mutability":"mutable","name":"collateralOnlyToken","nodeType":"VariableDeclaration","scope":2678,"src":"1096:31:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":2668,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1096:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":2671,"mutability":"mutable","name":"debtToken","nodeType":"VariableDeclaration","scope":2678,"src":"1207:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":2670,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1207:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":2673,"mutability":"mutable","name":"totalDeposits","nodeType":"VariableDeclaration","scope":2678,"src":"1416:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2672,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2675,"mutability":"mutable","name":"collateralOnlyDeposits","nodeType":"VariableDeclaration","scope":2678,"src":"1637:30:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2677,"mutability":"mutable","name":"totalBorrowAmount","nodeType":"VariableDeclaration","scope":2678,"src":"1762:25:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2676,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AssetStorage","nodeType":"StructDefinition","scope":2687,"src":"888:906:37","visibility":"public"},{"documentation":{"id":2679,"nodeType":"StructuredDocumentation","src":"1800:161:37","text":" @dev returns the asset storage struct\n @dev AssetStorage struct contains necessary information for calculating shareToken exchange rates"},"functionSelector":"bf273041","id":2686,"implemented":false,"kind":"function","modifiers":[],"name":"assetStorage","nodeType":"FunctionDefinition","parameters":{"id":2682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2681,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":2686,"src":"1988:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2680,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1987:16:37"},"returnParameters":{"id":2685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2686,"src":"2027:19:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_memory_ptr","typeString":"struct IBaseSilo.AssetStorage"},"typeName":{"id":2683,"name":"AssetStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":2678,"src":"2027:12:37","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage_ptr","typeString":"struct IBaseSilo.AssetStorage"}},"visibility":"internal"}],"src":"2026:21:37"},"scope":2687,"src":"1966:82:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2721,"src":"784:1266:37"},{"abstract":false,"baseContracts":[{"baseName":{"id":2688,"name":"IBaseSilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2687,"src":"2071:9:37","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseSilo_$2687","typeString":"contract IBaseSilo"}},"id":2689,"nodeType":"InheritanceSpecifier","src":"2071:9:37"}],"contractDependencies":[2687],"contractKind":"interface","fullyImplemented":false,"id":2720,"linearizedBaseContracts":[2720,2687],"name":"ISilo","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2690,"nodeType":"StructuredDocumentation","src":"2087:474:37","text":" @dev Deposits funds into the Silo\n @param _asset The address of the token to deposit\n @param _depositor The address of the recipient of collateral tokens\n @param _amount The amount of the token to deposit\n @param _collateralOnly: True means your shareToken is protected (cannot be swapped for interest)\n @return collateralAmount deposited amount\n @return collateralShare user collateral shares based on deposited amount"},"functionSelector":"fbf178db","id":2705,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":2699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2692,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":2705,"src":"2595:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2691,"name":"address","nodeType":"ElementaryTypeName","src":"2595:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2694,"mutability":"mutable","name":"_depositor","nodeType":"VariableDeclaration","scope":2705,"src":"2619:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2693,"name":"address","nodeType":"ElementaryTypeName","src":"2619:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2696,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":2705,"src":"2647:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"2647:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"_collateralOnly","nodeType":"VariableDeclaration","scope":2705,"src":"2672:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2697,"name":"bool","nodeType":"ElementaryTypeName","src":"2672:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2585:113:37"},"returnParameters":{"id":2704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"collateralAmount","nodeType":"VariableDeclaration","scope":2705,"src":"2717:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2700,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2703,"mutability":"mutable","name":"collateralShare","nodeType":"VariableDeclaration","scope":2705,"src":"2743:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2716:51:37"},"scope":2720,"src":"2566:202:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2706,"nodeType":"StructuredDocumentation","src":"2774:428:37","text":" @dev Withdraw `_amount` of `_asset` tokens from the Silo to `msg.sender`\n @param _asset The address of the token to withdraw\n @param _amount The amount of the token to withdraw\n @param _collateralOnly True if withdrawing collateral only deposit\n @return withdrawnAmount withdrawn amount that was transferred to user\n @return withdrawnShare burned share based on `withdrawnAmount`"},"functionSelector":"ead5d359","id":2719,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2708,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":2719,"src":"3234:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2707,"name":"address","nodeType":"ElementaryTypeName","src":"3234:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2710,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":2719,"src":"3258:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2709,"name":"uint256","nodeType":"ElementaryTypeName","src":"3258:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2712,"mutability":"mutable","name":"_collateralOnly","nodeType":"VariableDeclaration","scope":2719,"src":"3283:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2711,"name":"bool","nodeType":"ElementaryTypeName","src":"3283:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3224:85:37"},"returnParameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2715,"mutability":"mutable","name":"withdrawnAmount","nodeType":"VariableDeclaration","scope":2719,"src":"3328:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"3328:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2717,"mutability":"mutable","name":"withdrawnShare","nodeType":"VariableDeclaration","scope":2719,"src":"3353:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2716,"name":"uint256","nodeType":"ElementaryTypeName","src":"3353:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3327:49:37"},"scope":2720,"src":"3207:170:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2721,"src":"2052:1327:37"}],"src":"688:2692:37"},"id":37},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","exportedSymbols":{"IStaticATokenLM":[2967]},"id":2968,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2722,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"45:31:38"},{"id":2723,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"77:33:38"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2724,"nodeType":"ImportDirective","scope":2968,"sourceUnit":1723,"src":"112:51:38","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2725,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"375:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2726,"nodeType":"InheritanceSpecifier","src":"375:6:38"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":2967,"linearizedBaseContracts":[2967,1722],"name":"IStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IStaticATokenLM.SignatureParams","id":2733,"members":[{"constant":false,"id":2728,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2733,"src":"421:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2727,"name":"uint8","nodeType":"ElementaryTypeName","src":"421:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2730,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2733,"src":"438:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"438:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2732,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2733,"src":"457:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"457:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SignatureParams","nodeType":"StructDefinition","scope":2967,"src":"388:85:38","visibility":"public"},{"documentation":{"id":2734,"nodeType":"StructuredDocumentation","src":"479:722:38","text":" @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n @param recipient The address that will receive the static aTokens\n @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @return uint256 The amount of StaticAToken minted, static balance*"},"functionSelector":"2f2cab87","id":2747,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2747,"src":"1232:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2747,"src":"1259:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2740,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2747,"src":"1283:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2739,"name":"uint16","nodeType":"ElementaryTypeName","src":"1283:6:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2742,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2747,"src":"1312:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2741,"name":"bool","nodeType":"ElementaryTypeName","src":"1312:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1222:115:38"},"returnParameters":{"id":2746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2745,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2747,"src":"1356:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:9:38"},"scope":2967,"src":"1206:159:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2748,"nodeType":"StructuredDocumentation","src":"1371:628:38","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in static balance of StaticAToken\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"ead5d359","id":2761,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2750,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2761,"src":"2031:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2749,"name":"address","nodeType":"ElementaryTypeName","src":"2031:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2752,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2761,"src":"2058:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2751,"name":"uint256","nodeType":"ElementaryTypeName","src":"2058:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2754,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2761,"src":"2082:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2753,"name":"bool","nodeType":"ElementaryTypeName","src":"2082:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2021:84:38"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2757,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2761,"src":"2124:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2756,"name":"uint256","nodeType":"ElementaryTypeName","src":"2124:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2759,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2761,"src":"2133:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2758,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2123:18:38"},"scope":2967,"src":"2004:138:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2762,"nodeType":"StructuredDocumentation","src":"2148:640:38","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"288587ce","id":2775,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2775,"src":"2833:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2763,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2775,"src":"2860:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2765,"name":"uint256","nodeType":"ElementaryTypeName","src":"2860:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2775,"src":"2884:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2767,"name":"bool","nodeType":"ElementaryTypeName","src":"2884:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2823:84:38"},"returnParameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2775,"src":"2926:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2770,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2773,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2775,"src":"2935:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2935:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2925:18:38"},"scope":2967,"src":"2793:151:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2776,"nodeType":"StructuredDocumentation","src":"2950:453:38","text":" @notice Implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param"},"functionSelector":"d505accf","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2778,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2793,"src":"3433:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2780,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2793,"src":"3456:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2779,"name":"address","nodeType":"ElementaryTypeName","src":"3456:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2782,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2793,"src":"3481:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2781,"name":"uint256","nodeType":"ElementaryTypeName","src":"3481:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2784,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2793,"src":"3504:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2783,"name":"uint256","nodeType":"ElementaryTypeName","src":"3504:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2793,"src":"3530:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2785,"name":"uint8","nodeType":"ElementaryTypeName","src":"3530:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2793,"src":"3547:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2787,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3547:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2790,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2793,"src":"3566:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3566:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3423:158:38"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[],"src":"3590:0:38"},"scope":2967,"src":"3408:183:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"3597:1002:38","text":" @notice Allows to deposit on Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param depositor Address from which the funds to deposit are going to be pulled\n @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n @param value The amount to deposit\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return uint256 The amount of StaticAToken minted, static balance"},"functionSelector":"c485852b","id":2813,"implemented":false,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","parameters":{"id":2809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":2813,"src":"4634:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"4634:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2813,"src":"4661:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"4661:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2813,"src":"4688:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"4688:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2802,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2813,"src":"4711:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2801,"name":"uint16","nodeType":"ElementaryTypeName","src":"4711:6:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2804,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2813,"src":"4740:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2803,"name":"bool","nodeType":"ElementaryTypeName","src":"4740:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2813,"src":"4769:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"4769:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2808,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2813,"src":"4795:34:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2807,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2733,"src":"4795:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"4624:211:38"},"returnParameters":{"id":2812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2811,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2813,"src":"4854:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2810,"name":"uint256","nodeType":"ElementaryTypeName","src":"4854:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:9:38"},"scope":2967,"src":"4604:259:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2814,"nodeType":"StructuredDocumentation","src":"4869:981:38","text":" @notice Allows to withdraw from Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner Address owning the staticATokens\n @param recipient Address that will receive the underlying withdrawn from Aave\n @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance"},"functionSelector":"60266557","id":2835,"implemented":false,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","parameters":{"id":2829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2816,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2835,"src":"5886:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2815,"name":"address","nodeType":"ElementaryTypeName","src":"5886:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2818,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2835,"src":"5909:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2817,"name":"address","nodeType":"ElementaryTypeName","src":"5909:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2820,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":2835,"src":"5936:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2819,"name":"uint256","nodeType":"ElementaryTypeName","src":"5936:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":2835,"src":"5966:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2821,"name":"uint256","nodeType":"ElementaryTypeName","src":"5966:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2824,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2835,"src":"5997:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2823,"name":"bool","nodeType":"ElementaryTypeName","src":"5997:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2826,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2835,"src":"6024:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6024:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2828,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2835,"src":"6050:34:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2827,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2733,"src":"6050:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"5876:214:38"},"returnParameters":{"id":2834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2835,"src":"6109:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2830,"name":"uint256","nodeType":"ElementaryTypeName","src":"6109:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2833,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2835,"src":"6118:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2832,"name":"uint256","nodeType":"ElementaryTypeName","src":"6118:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6108:18:38"},"scope":2967,"src":"5855:272:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2836,"nodeType":"StructuredDocumentation","src":"6133:206:38","text":" @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n @param account The address of the user\n @return uint256 The aToken balance*"},"functionSelector":"44b68c3f","id":2843,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":2839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2838,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2843,"src":"6370:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"6370:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:17:38"},"returnParameters":{"id":2842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2841,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2843,"src":"6410:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2840,"name":"uint256","nodeType":"ElementaryTypeName","src":"6410:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6409:9:38"},"scope":2967,"src":"6344:75:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"6425:250:38","text":" @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n using the current liquidity index on Aave\n @param amount The amount to convert from\n @return uint256 The dynamic amount*"},"functionSelector":"f57d0b40","id":2851,"implemented":false,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2851,"src":"6711:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2845,"name":"uint256","nodeType":"ElementaryTypeName","src":"6711:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6710:16:38"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2851,"src":"6750:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"6750:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6749:9:38"},"scope":2967,"src":"6680:79:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2852,"nodeType":"StructuredDocumentation","src":"6765:285:38","text":" @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n scaled balance, function of the principal and the liquidity index\n @param amount The amount to convert from\n @return uint256 The static (scaled) amount*"},"functionSelector":"36a5a6d6","id":2859,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","parameters":{"id":2855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2854,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2859,"src":"7086:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2853,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7085:16:38"},"returnParameters":{"id":2858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2857,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2859,"src":"7125:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2856,"name":"uint256","nodeType":"ElementaryTypeName","src":"7125:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7124:9:38"},"scope":2967,"src":"7055:79:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2860,"nodeType":"StructuredDocumentation","src":"7140:210:38","text":" @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n as it can be considered as an ever-increasing exchange rate\n @return The liquidity index*"},"functionSelector":"2c4e722e","id":2865,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":2861,"nodeType":"ParameterList","parameters":[],"src":"7368:2:38"},"returnParameters":{"id":2864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2863,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2865,"src":"7394:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2862,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7393:9:38"},"scope":2967,"src":"7355:48:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2866,"nodeType":"StructuredDocumentation","src":"7409:172:38","text":" @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n @return bytes32 The domain separator*"},"functionSelector":"ed24911d","id":2871,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2867,"nodeType":"ParameterList","parameters":[],"src":"7613:2:38"},"returnParameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2869,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2871,"src":"7639:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7639:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7638:9:38"},"scope":2967,"src":"7586:62:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2872,"nodeType":"StructuredDocumentation","src":"7654:114:38","text":" @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards."},"functionSelector":"3eb2eba6","id":2875,"implemented":false,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","parameters":{"id":2873,"nodeType":"ParameterList","parameters":[],"src":"7805:2:38"},"returnParameters":{"id":2874,"nodeType":"ParameterList","parameters":[],"src":"7816:0:38"},"scope":2967,"src":"7773:44:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2876,"nodeType":"StructuredDocumentation","src":"7823:375:38","text":" @notice Claim rewards on behalf of a user and send them to a receiver\n @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n @param onBehalfOf The address to claim on behalf of\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"dd05aa12","id":2885,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2878,"mutability":"mutable","name":"onBehalfOf","nodeType":"VariableDeclaration","scope":2885,"src":"8242:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2877,"name":"address","nodeType":"ElementaryTypeName","src":"8242:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2880,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2885,"src":"8270:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2879,"name":"address","nodeType":"ElementaryTypeName","src":"8270:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2885,"src":"8296:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2881,"name":"bool","nodeType":"ElementaryTypeName","src":"8296:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8232:86:38"},"returnParameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"8327:0:38"},"scope":2967,"src":"8203:125:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2886,"nodeType":"StructuredDocumentation","src":"8334:213:38","text":" @notice Claim rewards and send them to a receiver\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"491c011a","id":2893,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":2891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2888,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2893,"src":"8574:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2887,"name":"address","nodeType":"ElementaryTypeName","src":"8574:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2890,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2893,"src":"8592:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2889,"name":"bool","nodeType":"ElementaryTypeName","src":"8592:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8573:36:38"},"returnParameters":{"id":2892,"nodeType":"ParameterList","parameters":[],"src":"8618:0:38"},"scope":2967,"src":"8552:67:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2894,"nodeType":"StructuredDocumentation","src":"8625:127:38","text":" @notice Claim rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"45c1ace7","id":2899,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","parameters":{"id":2897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2896,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2899,"src":"8785:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2895,"name":"bool","nodeType":"ElementaryTypeName","src":"8785:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8784:18:38"},"returnParameters":{"id":2898,"nodeType":"ParameterList","parameters":[],"src":"8811:0:38"},"scope":2967,"src":"8757:55:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2900,"nodeType":"StructuredDocumentation","src":"8818:161:38","text":" @notice Get the total claimable rewards of the contract.\n @return The current balance + pending rewards from the `_incentivesController`"},"functionSelector":"7f372cff","id":2905,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2901,"nodeType":"ParameterList","parameters":[],"src":"9017:2:38"},"returnParameters":{"id":2904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2903,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2905,"src":"9043:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2902,"name":"uint256","nodeType":"ElementaryTypeName","src":"9043:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9042:9:38"},"scope":2967,"src":"8984:68:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2906,"nodeType":"StructuredDocumentation","src":"9058:173:38","text":" @notice Get the total claimable rewards for a user in WAD\n @param user The address of the user\n @return The claimable amount of rewards in WAD"},"functionSelector":"308e401e","id":2913,"implemented":false,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2913,"src":"9265:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2907,"name":"address","nodeType":"ElementaryTypeName","src":"9265:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9264:14:38"},"returnParameters":{"id":2912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2913,"src":"9302:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2910,"name":"uint256","nodeType":"ElementaryTypeName","src":"9302:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9301:9:38"},"scope":2967,"src":"9236:75:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2914,"nodeType":"StructuredDocumentation","src":"9317:163:38","text":" @notice The unclaimed rewards for a user in WAD\n @param user The address of the user\n @return The unclaimed amount of rewards in WAD"},"functionSelector":"69a69e29","id":2921,"implemented":false,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","parameters":{"id":2917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2921,"src":"9514:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2915,"name":"address","nodeType":"ElementaryTypeName","src":"9514:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9513:14:38"},"returnParameters":{"id":2920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2919,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2921,"src":"9551:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2918,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:9:38"},"scope":2967,"src":"9485:75:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a135a55e","id":2926,"implemented":false,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","parameters":{"id":2922,"nodeType":"ParameterList","parameters":[],"src":"9596:2:38"},"returnParameters":{"id":2925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2924,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2926,"src":"9622:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"9622:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9621:9:38"},"scope":2967,"src":"9566:65:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"31a5cfa4","id":2931,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","parameters":{"id":2927,"nodeType":"ParameterList","parameters":[],"src":"9671:2:38"},"returnParameters":{"id":2930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2929,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2931,"src":"9697:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2928,"name":"uint256","nodeType":"ElementaryTypeName","src":"9697:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9696:9:38"},"scope":2967,"src":"9637:69:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b3a59022","id":2936,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","parameters":{"id":2932,"nodeType":"ParameterList","parameters":[],"src":"9739:2:38"},"returnParameters":{"id":2935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2934,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2936,"src":"9765:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2933,"name":"uint256","nodeType":"ElementaryTypeName","src":"9765:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9764:9:38"},"scope":2967,"src":"9712:62:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf62bee6","id":2941,"implemented":false,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[],"src":"9807:2:38"},"returnParameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2941,"src":"9833:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2938,"name":"uint256","nodeType":"ElementaryTypeName","src":"9833:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9832:9:38"},"scope":2967,"src":"9780:62:38","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b4dcfc77","id":2946,"implemented":false,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","parameters":{"id":2942,"nodeType":"ParameterList","parameters":[],"src":"9922:2:38"},"returnParameters":{"id":2945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2944,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2946,"src":"9943:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2943,"name":"address","nodeType":"ElementaryTypeName","src":"9943:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9942:9:38"},"scope":2967,"src":"9901:51:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"10d0ab22","id":2951,"implemented":false,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","parameters":{"id":2947,"nodeType":"ParameterList","parameters":[],"src":"10041:2:38"},"returnParameters":{"id":2950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2949,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2951,"src":"10062:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2948,"name":"address","nodeType":"ElementaryTypeName","src":"10062:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10061:9:38"},"scope":2967,"src":"10011:60:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"51c0e061","id":2956,"implemented":false,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","parameters":{"id":2952,"nodeType":"ParameterList","parameters":[],"src":"10145:2:38"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2956,"src":"10166:6:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2953,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"10166:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10165:8:38"},"scope":2967,"src":"10130:44:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4800d97f","id":2961,"implemented":false,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","parameters":{"id":2957,"nodeType":"ParameterList","parameters":[],"src":"10247:2:38"},"returnParameters":{"id":2960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2959,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2961,"src":"10268:6:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2958,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"10268:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10267:8:38"},"scope":2967,"src":"10233:43:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"99248ea7","id":2966,"implemented":false,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","parameters":{"id":2962,"nodeType":"ParameterList","parameters":[],"src":"10356:2:38"},"returnParameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2964,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2966,"src":"10377:6:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":2963,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"10377:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10376:8:38"},"scope":2967,"src":"10335:50:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2968,"src":"346:10041:38"}],"src":"45:10343:38"},"id":38},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","exportedSymbols":{"ITetuSmartVault":[3022]},"id":3023,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2969,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:39"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2970,"nodeType":"ImportDirective","scope":3023,"sourceUnit":1723,"src":"721:51:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2971,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"803:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":2972,"nodeType":"InheritanceSpecifier","src":"803:6:39"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":3022,"linearizedBaseContracts":[3022,1722],"name":"ITetuSmartVault","nodeType":"ContractDefinition","nodes":[{"functionSelector":"b6b55f25","id":2977,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2974,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2977,"src":"833:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2973,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:16:39"},"returnParameters":{"id":2976,"nodeType":"ParameterList","parameters":[],"src":"857:0:39"},"scope":3022,"src":"816:42:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"36efd16f","id":2984,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2979,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2984,"src":"884:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2978,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2981,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":2984,"src":"900:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2980,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:32:39"},"returnParameters":{"id":2983,"nodeType":"ParameterList","parameters":[],"src":"924:0:39"},"scope":3022,"src":"864:61:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c2baf356","id":2989,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingBalanceInVault","nodeType":"FunctionDefinition","parameters":{"id":2985,"nodeType":"ParameterList","parameters":[],"src":"964:2:39"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2989,"src":"990:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2986,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"989:9:39"},"scope":3022,"src":"931:68:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":2994,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2991,"mutability":"mutable","name":"numberOfShares","nodeType":"VariableDeclaration","scope":2994,"src":"1023:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2990,"name":"uint256","nodeType":"ElementaryTypeName","src":"1023:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1022:24:39"},"returnParameters":{"id":2993,"nodeType":"ParameterList","parameters":[],"src":"1055:0:39"},"scope":3022,"src":"1005:51:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8cb1d67f","id":3001,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingBalanceWithInvestmentForHolder","nodeType":"FunctionDefinition","parameters":{"id":2997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2996,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":3001,"src":"1112:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2995,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1111:16:39"},"returnParameters":{"id":3000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3001,"src":"1151:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1150:9:39"},"scope":3022,"src":"1062:98:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6f307dc3","id":3006,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","parameters":{"id":3002,"nodeType":"ParameterList","parameters":[],"src":"1185:2:39"},"returnParameters":{"id":3005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3004,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3006,"src":"1211:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3003,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1210:9:39"},"scope":3022,"src":"1166:54:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"53ceb01c","id":3011,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingUnit","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[],"src":"1249:2:39"},"returnParameters":{"id":3010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3009,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3011,"src":"1275:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3008,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:9:39"},"scope":3022,"src":"1226:58:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"77c7b8fc","id":3016,"implemented":false,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":3012,"nodeType":"ParameterList","parameters":[],"src":"1319:2:39"},"returnParameters":{"id":3015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3014,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3016,"src":"1345:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"1345:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1344:9:39"},"scope":3022,"src":"1290:64:39","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a8c62e76","id":3021,"implemented":false,"kind":"function","modifiers":[],"name":"strategy","nodeType":"FunctionDefinition","parameters":{"id":3017,"nodeType":"ParameterList","parameters":[],"src":"1377:2:39"},"returnParameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3019,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3021,"src":"1403:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3018,"name":"address","nodeType":"ElementaryTypeName","src":"1403:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1402:9:39"},"scope":3022,"src":"1360:52:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3023,"src":"774:640:39"}],"src":"688:727:39"},"id":39},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol","exportedSymbols":{"ITetuStrategy":[3030]},"id":3031,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3024,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:40"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3030,"linearizedBaseContracts":[3030],"name":"ITetuStrategy","nodeType":"ContractDefinition","nodes":[{"functionSelector":"45d01e4a","id":3029,"implemented":false,"kind":"function","modifiers":[],"name":"investedUnderlyingBalance","nodeType":"FunctionDefinition","parameters":{"id":3025,"nodeType":"ParameterList","parameters":[],"src":"785:2:40"},"returnParameters":{"id":3028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3029,"src":"811:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3026,"name":"uint256","nodeType":"ElementaryTypeName","src":"811:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"810:9:40"},"scope":3030,"src":"751:69:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3031,"src":"721:101:40"}],"src":"688:135:40"},"id":40},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol","exportedSymbols":{"IUnbuttonToken":[3039]},"id":3040,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3032,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:41"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3033,"nodeType":"ImportDirective","scope":3040,"sourceUnit":1723,"src":"721:51:41","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol","file":"./IButtonWrapper.sol","id":3034,"nodeType":"ImportDirective","scope":3040,"sourceUnit":2076,"src":"774:30:41","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3035,"name":"IButtonWrapper","nodeType":"UserDefinedTypeName","referencedDeclaration":2075,"src":"956:14:41","typeDescriptions":{"typeIdentifier":"t_contract$_IButtonWrapper_$2075","typeString":"contract IButtonWrapper"}},"id":3036,"nodeType":"InheritanceSpecifier","src":"956:14:41"},{"baseName":{"id":3037,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"972:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3038,"nodeType":"InheritanceSpecifier","src":"972:6:41"}],"contractDependencies":[1722,2075],"contractKind":"interface","fullyImplemented":false,"id":3039,"linearizedBaseContracts":[3039,1722,2075],"name":"IUnbuttonToken","nodeType":"ContractDefinition","nodes":[],"scope":3040,"src":"928:107:41"}],"src":"688:348:41"},"id":41},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol","exportedSymbols":{"IYearnTokenVault":[3077]},"id":3078,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3041,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:42"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3042,"nodeType":"ImportDirective","scope":3078,"sourceUnit":1723,"src":"713:51:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3043,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"796:6:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3044,"nodeType":"InheritanceSpecifier","src":"796:6:42"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":3077,"linearizedBaseContracts":[3077,1722],"name":"IYearnTokenVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"809:87:42","text":" @dev returns the address of the vault's underlying asset (mainToken)"},"functionSelector":"fc0c546a","id":3050,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":3046,"nodeType":"ParameterList","parameters":[],"src":"915:2:42"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3048,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3050,"src":"941:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3047,"name":"address","nodeType":"ElementaryTypeName","src":"941:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"940:9:42"},"scope":3077,"src":"901:49:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3051,"nodeType":"StructuredDocumentation","src":"956:189:42","text":" @dev returns the price for a single Vault share (ie yvDAI). The pricePerShare is represented\n in the same decimals as the underlying asset (ie: 6 decimals for USDC)"},"functionSelector":"99530b06","id":3056,"implemented":false,"kind":"function","modifiers":[],"name":"pricePerShare","nodeType":"FunctionDefinition","parameters":{"id":3052,"nodeType":"ParameterList","parameters":[],"src":"1172:2:42"},"returnParameters":{"id":3055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3056,"src":"1198:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3053,"name":"uint256","nodeType":"ElementaryTypeName","src":"1198:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1197:9:42"},"scope":3077,"src":"1150:57:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3057,"nodeType":"StructuredDocumentation","src":"1213:408:42","text":" @notice Deposits `_amount` `token`, issuing shares to `recipient`.\n If the Vault is in Emergency Shutdown, deposits will not be accepted and this call will fail.\n @param _amount The quantity of tokens to deposit, defaults to all.\n @param recipient The address to issue the shares in this Vault to. Defaults to the caller's address.\n @return The issued Vault shares."},"functionSelector":"6e553f65","id":3066,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3059,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":3066,"src":"1643:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1643:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3061,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3066,"src":"1660:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3060,"name":"address","nodeType":"ElementaryTypeName","src":"1660:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1642:36:42"},"returnParameters":{"id":3065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3066,"src":"1697:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3063,"name":"uint256","nodeType":"ElementaryTypeName","src":"1697:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1696:9:42"},"scope":3077,"src":"1626:80:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3067,"nodeType":"StructuredDocumentation","src":"1712:517:42","text":" @notice Withdraws the calling account's tokens from this Vault,\n redeeming amount `_shares` for an appropriate amount of tokens.\n See note on `setWithdrawalQueue` for further details of withdrawal ordering and behavior.\n @param maxShares How many shares to try and redeem for tokens, defaults to all.\n @param recipient The address to issue the shares in this Vault to. Defaults to the caller's address.\n @return redeemed: The quantity of tokens redeemed for `_shares`."},"functionSelector":"00f714ce","id":3076,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":3072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3069,"mutability":"mutable","name":"maxShares","nodeType":"VariableDeclaration","scope":3076,"src":"2252:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3068,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3071,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3076,"src":"2271:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3070,"name":"address","nodeType":"ElementaryTypeName","src":"2271:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2251:38:42"},"returnParameters":{"id":3075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3074,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3076,"src":"2308:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2307:9:42"},"scope":3077,"src":"2234:83:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3078,"src":"766:1553:42"}],"src":"688:1632:42"},"id":42},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","exportedSymbols":{"IstETH":[3090]},"id":3091,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3079,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:43"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3080,"nodeType":"ImportDirective","scope":3091,"sourceUnit":1723,"src":"721:51:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3081,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"964:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3082,"nodeType":"InheritanceSpecifier","src":"964:6:43"}],"contractDependencies":[1722],"contractKind":"interface","fullyImplemented":false,"id":3090,"linearizedBaseContracts":[3090,1722],"name":"IstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a1903eab","id":3089,"implemented":false,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","parameters":{"id":3085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3084,"mutability":"mutable","name":"referral","nodeType":"VariableDeclaration","scope":3089,"src":"993:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3083,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:18:43"},"returnParameters":{"id":3088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3087,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3089,"src":"1037:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3086,"name":"uint256","nodeType":"ElementaryTypeName","src":"1037:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1036:9:43"},"scope":3090,"src":"977:69:43","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3091,"src":"944:104:43"}],"src":"688:361:43"},"id":43},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","exportedSymbols":{"IwstETH":[3147]},"id":3148,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3092,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:44"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3093,"nodeType":"ImportDirective","scope":3148,"sourceUnit":1723,"src":"721:51:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"./IstETH.sol","id":3094,"nodeType":"ImportDirective","scope":3148,"sourceUnit":3091,"src":"774:22:44","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3096,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1803:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3097,"nodeType":"InheritanceSpecifier","src":"1803:6:44"}],"contractDependencies":[1722],"contractKind":"interface","documentation":{"id":3095,"nodeType":"StructuredDocumentation","src":"970:811:44","text":" @title StETH token wrapper with static balances.\n @dev It's an ERC20 token that represents the account's share of the total\n supply of stETH tokens. WstETH token's balance only changes on transfers,\n unlike StETH that is also changed when oracles report staking rewards and\n penalties. It's a \"power user\" token for DeFi protocols which don't\n support rebasable tokens.\n The contract is also a trustless wrapper that accepts stETH tokens and mints\n wstETH in return. Then the user unwraps, the contract burns user's wstETH\n and sends user locked stETH in return.\n The contract provides the staking shortcut: user can send ETH with regular\n transfer and get wstETH in return. The contract will send ETH to Lido submit\n method, staking it and wrapping the received stETH."},"fullyImplemented":false,"id":3147,"linearizedBaseContracts":[3147,1722],"name":"IwstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c1fe3e48","id":3102,"implemented":false,"kind":"function","modifiers":[],"name":"stETH","nodeType":"FunctionDefinition","parameters":{"id":3098,"nodeType":"ParameterList","parameters":[],"src":"1830:2:44"},"returnParameters":{"id":3101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3100,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3102,"src":"1851:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},"typeName":{"id":3099,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"1851:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1850:8:44"},"scope":3147,"src":"1816:43:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3103,"nodeType":"StructuredDocumentation","src":"1865:477:44","text":" @notice Exchanges stETH to wstETH\n @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n @dev Requirements:\n - `_stETHAmount` must be non-zero\n - msg.sender must approve at least `_stETHAmount` stETH to this\n contract.\n - msg.sender must have at least `_stETHAmount` of stETH.\n User should first approve _stETHAmount to the WstETH contract\n @return Amount of wstETH user receives after wrap"},"functionSelector":"ea598cb0","id":3110,"implemented":false,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","parameters":{"id":3106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":3110,"src":"2361:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"2361:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2360:22:44"},"returnParameters":{"id":3109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3108,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3110,"src":"2401:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3107,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2400:9:44"},"scope":3147,"src":"2347:63:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3111,"nodeType":"StructuredDocumentation","src":"2416:319:44","text":" @notice Exchanges wstETH to stETH\n @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n @dev Requirements:\n - `_wstETHAmount` must be non-zero\n - msg.sender must have at least `_wstETHAmount` wstETH.\n @return Amount of stETH user receives after unwrap"},"functionSelector":"de0e9a3e","id":3118,"implemented":false,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","parameters":{"id":3114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3113,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":3118,"src":"2756:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3112,"name":"uint256","nodeType":"ElementaryTypeName","src":"2756:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2755:23:44"},"returnParameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3118,"src":"2797:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"2797:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2796:9:44"},"scope":3147,"src":"2740:66:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3119,"nodeType":"StructuredDocumentation","src":"2812:175:44","text":" @notice Get amount of wstETH for a given amount of stETH\n @param _stETHAmount amount of stETH\n @return Amount of wstETH for a given stETH amount"},"functionSelector":"b0e38900","id":3126,"implemented":false,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","parameters":{"id":3122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3121,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":3126,"src":"3018:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3120,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3017:22:44"},"returnParameters":{"id":3125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3126,"src":"3063:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3123,"name":"uint256","nodeType":"ElementaryTypeName","src":"3063:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3062:9:44"},"scope":3147,"src":"2992:80:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3127,"nodeType":"StructuredDocumentation","src":"3078:177:44","text":" @notice Get amount of stETH for a given amount of wstETH\n @param _wstETHAmount amount of wstETH\n @return Amount of stETH for a given wstETH amount"},"functionSelector":"bb2952fc","id":3134,"implemented":false,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","parameters":{"id":3130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3129,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":3134,"src":"3286:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3128,"name":"uint256","nodeType":"ElementaryTypeName","src":"3286:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3285:23:44"},"returnParameters":{"id":3133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3132,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3134,"src":"3332:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3131,"name":"uint256","nodeType":"ElementaryTypeName","src":"3332:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3331:9:44"},"scope":3147,"src":"3260:81:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3135,"nodeType":"StructuredDocumentation","src":"3347:107:44","text":" @notice Get amount of wstETH for a one stETH\n @return Amount of stETH for 1 wstETH"},"functionSelector":"035faf82","id":3140,"implemented":false,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","parameters":{"id":3136,"nodeType":"ParameterList","parameters":[],"src":"3481:2:44"},"returnParameters":{"id":3139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3138,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3140,"src":"3507:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3137,"name":"uint256","nodeType":"ElementaryTypeName","src":"3507:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3506:9:44"},"scope":3147,"src":"3459:57:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3141,"nodeType":"StructuredDocumentation","src":"3522:109:44","text":" @notice Get amount of stETH for a one wstETH\n @return Amount of wstETH for a 1 stETH"},"functionSelector":"9576a0c8","id":3146,"implemented":false,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","parameters":{"id":3142,"nodeType":"ParameterList","parameters":[],"src":"3659:2:44"},"returnParameters":{"id":3145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3144,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3146,"src":"3685:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"3685:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3684:9:44"},"scope":3147,"src":"3636:58:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3148,"src":"1782:1914:44"}],"src":"688:3009:44"},"id":44},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","exportedSymbols":{"IAsset":[3151]},"id":3152,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3149,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:45"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":3150,"nodeType":"StructuredDocumentation","src":"721:309:45","text":" @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n types.\n This concept is unrelated to a Pool's Asset Managers."},"fullyImplemented":true,"id":3151,"linearizedBaseContracts":[3151],"name":"IAsset","nodeType":"ContractDefinition","nodes":[],"scope":3152,"src":"1031:73:45"}],"src":"688:417:45"},"id":45},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[3166]},"id":3167,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3153,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:46"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3166,"linearizedBaseContracts":[3166],"name":"IAuthorizer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3154,"nodeType":"StructuredDocumentation","src":"749:121:46","text":" @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`."},"functionSelector":"9be2a884","id":3165,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":3161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3156,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3165,"src":"904:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"904:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3158,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3165,"src":"930:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3157,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3160,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":3165,"src":"955:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3159,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:80:46"},"returnParameters":{"id":3164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3163,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3165,"src":"998:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3162,"name":"bool","nodeType":"ElementaryTypeName","src":"998:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"997:6:46"},"scope":3166,"src":"875:129:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3167,"src":"721:285:46"}],"src":"688:319:46"},"id":46},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","exportedSymbols":{"IBasePool":[3290]},"id":3291,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3168,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:47"},{"id":3169,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:47"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3170,"nodeType":"ImportDirective","scope":3291,"sourceUnit":3865,"src":"755:22:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","file":"./IPoolSwapStructs.sol","id":3171,"nodeType":"ImportDirective","scope":3291,"sourceUnit":3335,"src":"778:32:47","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3173,"name":"IPoolSwapStructs","nodeType":"UserDefinedTypeName","referencedDeclaration":3334,"src":"1120:16:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolSwapStructs_$3334","typeString":"contract IPoolSwapStructs"}},"id":3174,"nodeType":"InheritanceSpecifier","src":"1120:16:47"}],"contractDependencies":[3334],"contractKind":"interface","documentation":{"id":3172,"nodeType":"StructuredDocumentation","src":"812:284:47","text":" @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n either IGeneralPool or IMinimalSwapInfoPool"},"fullyImplemented":false,"id":3290,"linearizedBaseContracts":[3290,3334],"name":"IBasePool","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3175,"nodeType":"StructuredDocumentation","src":"1143:1490:47","text":" @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n designated to receive any benefits (typically pool shares). `balances` contains the total balances\n for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as minting pool shares."},"functionSelector":"d5c096c4","id":3199,"implemented":false,"kind":"function","modifiers":[],"name":"onJoinPool","nodeType":"FunctionDefinition","parameters":{"id":3191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3177,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3199,"src":"2667:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2667:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3179,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3199,"src":"2691:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3178,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3181,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3199,"src":"2715:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3180,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3184,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3199,"src":"2742:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3182,"name":"uint256","nodeType":"ElementaryTypeName","src":"2742:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3183,"nodeType":"ArrayTypeName","src":"2742:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3186,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3199,"src":"2777:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3188,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3199,"src":"2810:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3187,"name":"uint256","nodeType":"ElementaryTypeName","src":"2810:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3190,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3199,"src":"2853:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3189,"name":"bytes","nodeType":"ElementaryTypeName","src":"2853:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2657:223:47"},"returnParameters":{"id":3198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3194,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":3199,"src":"2899:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3192,"name":"uint256","nodeType":"ElementaryTypeName","src":"2899:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3193,"nodeType":"ArrayTypeName","src":"2899:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3197,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":3199,"src":"2927:38:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2927:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3196,"nodeType":"ArrayTypeName","src":"2927:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2898:68:47"},"scope":3290,"src":"2638:329:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3200,"nodeType":"StructuredDocumentation","src":"2973:1490:47","text":" @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n `protocolSwapFeePercentage`.\n Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as burning pool shares."},"functionSelector":"74f3b009","id":3224,"implemented":false,"kind":"function","modifiers":[],"name":"onExitPool","nodeType":"FunctionDefinition","parameters":{"id":3216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3202,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3224,"src":"4497:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4497:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3224,"src":"4521:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3203,"name":"address","nodeType":"ElementaryTypeName","src":"4521:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3206,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3224,"src":"4545:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3205,"name":"address","nodeType":"ElementaryTypeName","src":"4545:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3209,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3224,"src":"4572:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3207,"name":"uint256","nodeType":"ElementaryTypeName","src":"4572:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3208,"nodeType":"ArrayTypeName","src":"4572:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3211,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3224,"src":"4607:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3210,"name":"uint256","nodeType":"ElementaryTypeName","src":"4607:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3213,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3224,"src":"4640:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4640:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3215,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3224,"src":"4683:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3214,"name":"bytes","nodeType":"ElementaryTypeName","src":"4683:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4487:223:47"},"returnParameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3219,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":3224,"src":"4729:27:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3217,"name":"uint256","nodeType":"ElementaryTypeName","src":"4729:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3218,"nodeType":"ArrayTypeName","src":"4729:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3222,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":3224,"src":"4758:38:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3220,"name":"uint256","nodeType":"ElementaryTypeName","src":"4758:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3221,"nodeType":"ArrayTypeName","src":"4758:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4728:69:47"},"scope":3290,"src":"4468:330:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3225,"nodeType":"StructuredDocumentation","src":"4804:125:47","text":" @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it)."},"functionSelector":"38fff2d0","id":3230,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolId","nodeType":"FunctionDefinition","parameters":{"id":3226,"nodeType":"ParameterList","parameters":[],"src":"4952:2:47"},"returnParameters":{"id":3229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3228,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3230,"src":"4978:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4978:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4977:9:47"},"scope":3290,"src":"4934:53:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3231,"nodeType":"StructuredDocumentation","src":"4993:150:47","text":" @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n 10% swap fee."},"functionSelector":"55c67628","id":3236,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3232,"nodeType":"ParameterList","parameters":[],"src":"5177:2:47"},"returnParameters":{"id":3235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3236,"src":"5203:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3233,"name":"uint256","nodeType":"ElementaryTypeName","src":"5203:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5202:9:47"},"scope":3290,"src":"5148:64:47","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3237,"nodeType":"StructuredDocumentation","src":"5218:224:47","text":" @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n not relevant for outside parties, but which might be useful for some types of Pools."},"functionSelector":"1dd746ea","id":3243,"implemented":false,"kind":"function","modifiers":[],"name":"getScalingFactors","nodeType":"FunctionDefinition","parameters":{"id":3238,"nodeType":"ParameterList","parameters":[],"src":"5473:2:47"},"returnParameters":{"id":3242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3243,"src":"5499:16:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3239,"name":"uint256","nodeType":"ElementaryTypeName","src":"5499:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3240,"nodeType":"ArrayTypeName","src":"5499:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5498:18:47"},"scope":3290,"src":"5447:70:47","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"87ec6817","id":3266,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":3259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3245,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3266,"src":"5551:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5551:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3247,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3266,"src":"5575:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3246,"name":"address","nodeType":"ElementaryTypeName","src":"5575:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3249,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3266,"src":"5599:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3248,"name":"address","nodeType":"ElementaryTypeName","src":"5599:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3252,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3266,"src":"5626:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3250,"name":"uint256","nodeType":"ElementaryTypeName","src":"5626:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3251,"nodeType":"ArrayTypeName","src":"5626:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3254,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3266,"src":"5661:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3253,"name":"uint256","nodeType":"ElementaryTypeName","src":"5661:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3256,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3266,"src":"5694:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3255,"name":"uint256","nodeType":"ElementaryTypeName","src":"5694:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3258,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3266,"src":"5737:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3257,"name":"bytes","nodeType":"ElementaryTypeName","src":"5737:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5541:223:47"},"returnParameters":{"id":3265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3261,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":3266,"src":"5783:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3260,"name":"uint256","nodeType":"ElementaryTypeName","src":"5783:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3264,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":3266,"src":"5799:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3262,"name":"uint256","nodeType":"ElementaryTypeName","src":"5799:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3263,"nodeType":"ArrayTypeName","src":"5799:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5782:44:47"},"scope":3290,"src":"5523:304:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6028bfd4","id":3289,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":3282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3268,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3289,"src":"5861:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5861:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3270,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3289,"src":"5885:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3269,"name":"address","nodeType":"ElementaryTypeName","src":"5885:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3272,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3289,"src":"5909:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3271,"name":"address","nodeType":"ElementaryTypeName","src":"5909:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3275,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3289,"src":"5936:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3273,"name":"uint256","nodeType":"ElementaryTypeName","src":"5936:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3274,"nodeType":"ArrayTypeName","src":"5936:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3277,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3289,"src":"5971:23:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"5971:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3279,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3289,"src":"6004:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3278,"name":"uint256","nodeType":"ElementaryTypeName","src":"6004:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3281,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3289,"src":"6047:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3280,"name":"bytes","nodeType":"ElementaryTypeName","src":"6047:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5851:223:47"},"returnParameters":{"id":3288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3284,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":3289,"src":"6093:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3283,"name":"uint256","nodeType":"ElementaryTypeName","src":"6093:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3287,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":3289,"src":"6108:27:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3285,"name":"uint256","nodeType":"ElementaryTypeName","src":"6108:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3286,"nodeType":"ArrayTypeName","src":"6108:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6092:44:47"},"scope":3290,"src":"5833:304:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3291,"src":"1097:5042:47"}],"src":"688:5452:47"},"id":47},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","exportedSymbols":{"IFlashLoanRecipient":[3309]},"id":3310,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3292,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:48"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3293,"nodeType":"ImportDirective","scope":3310,"sourceUnit":1723,"src":"773:51:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3309,"linearizedBaseContracts":[3309],"name":"IFlashLoanRecipient","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3294,"nodeType":"StructuredDocumentation","src":"862:496:48","text":" @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n Vault, or else the entire flash loan will revert.\n `userData` is the same value passed in the `IVault.flashLoan` call."},"functionSelector":"f04f2707","id":3308,"implemented":false,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","parameters":{"id":3306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3297,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3308,"src":"1398:22:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3295,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1398:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3296,"nodeType":"ArrayTypeName","src":"1398:8:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3300,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3308,"src":"1430:24:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3298,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3299,"nodeType":"ArrayTypeName","src":"1430:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3303,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":3308,"src":"1464:27:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3301,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3302,"nodeType":"ArrayTypeName","src":"1464:9:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3305,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3308,"src":"1501:21:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3304,"name":"bytes","nodeType":"ElementaryTypeName","src":"1501:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1388:140:48"},"returnParameters":{"id":3307,"nodeType":"ParameterList","parameters":[],"src":"1537:0:48"},"scope":3309,"src":"1363:175:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3310,"src":"826:714:48"}],"src":"688:853:48"},"id":48},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","exportedSymbols":{"IPoolSwapStructs":[3334]},"id":3335,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3311,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:49"},{"id":3312,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:49"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3313,"nodeType":"ImportDirective","scope":3335,"sourceUnit":1723,"src":"755:51:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3314,"nodeType":"ImportDirective","scope":3335,"sourceUnit":3865,"src":"808:22:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":true,"id":3334,"linearizedBaseContracts":[3334],"name":"IPoolSwapStructs","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPoolSwapStructs.SwapRequest","id":3333,"members":[{"constant":false,"id":3316,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3333,"src":"2365:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":3315,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"2365:15:49","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3318,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":3333,"src":"2395:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3317,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2395:6:49","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3320,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":3333,"src":"2419:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3319,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2419:6:49","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3322,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3333,"src":"2444:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3321,"name":"uint256","nodeType":"ElementaryTypeName","src":"2444:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3324,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3333,"src":"2489:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2489:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3326,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3333,"src":"2513:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2513:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3328,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":3333,"src":"2546:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3327,"name":"address","nodeType":"ElementaryTypeName","src":"2546:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3330,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":3333,"src":"2568:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3329,"name":"address","nodeType":"ElementaryTypeName","src":"2568:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3333,"src":"2588:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3331,"name":"bytes","nodeType":"ElementaryTypeName","src":"2588:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapRequest","nodeType":"StructDefinition","scope":3334,"src":"2336:273:49","visibility":"public"}],"scope":3335,"src":"832:1779:49"}],"src":"688:1924:49"},"id":49},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","exportedSymbols":{"IProtocolFeesCollector":[3399]},"id":3400,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3336,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:50"},{"id":3337,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:50"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3338,"nodeType":"ImportDirective","scope":3400,"sourceUnit":1723,"src":"755:51:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3339,"nodeType":"ImportDirective","scope":3400,"sourceUnit":3865,"src":"808:22:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3340,"nodeType":"ImportDirective","scope":3400,"sourceUnit":3167,"src":"831:27:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3399,"linearizedBaseContracts":[3399],"name":"IProtocolFeesCollector","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":3344,"name":"SwapFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":3343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3342,"indexed":false,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":3344,"src":"930:28:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3341,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:30:50"},"src":"899:61:50"},{"anonymous":false,"id":3348,"name":"FlashLoanFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":3347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3346,"indexed":false,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":3348,"src":"1001:33:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3345,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1000:35:50"},"src":"965:71:50"},{"functionSelector":"6daefab6","id":3359,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":3357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3359,"src":"1082:24:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3349,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1082:6:50","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3350,"nodeType":"ArrayTypeName","src":"1082:8:50","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3354,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3359,"src":"1116:26:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3353,"nodeType":"ArrayTypeName","src":"1116:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3356,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3359,"src":"1152:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3355,"name":"address","nodeType":"ElementaryTypeName","src":"1152:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:103:50"},"returnParameters":{"id":3358,"nodeType":"ParameterList","parameters":[],"src":"1184:0:50"},"scope":3399,"src":"1042:143:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e9922e","id":3364,"implemented":false,"kind":"function","modifiers":[],"name":"setSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":3364,"src":"1221:28:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3360,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:30:50"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[],"src":"1259:0:50"},"scope":3399,"src":"1191:69:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6b6b9f69","id":3369,"implemented":false,"kind":"function","modifiers":[],"name":"setFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":3369,"src":"1301:33:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1300:35:50"},"returnParameters":{"id":3368,"nodeType":"ParameterList","parameters":[],"src":"1344:0:50"},"scope":3399,"src":"1266:79:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55c67628","id":3374,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3370,"nodeType":"ParameterList","parameters":[],"src":"1380:2:50"},"returnParameters":{"id":3373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3372,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3374,"src":"1406:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3371,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1405:9:50"},"scope":3399,"src":"1351:64:50","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d877845c","id":3379,"implemented":false,"kind":"function","modifiers":[],"name":"getFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3375,"nodeType":"ParameterList","parameters":[],"src":"1455:2:50"},"returnParameters":{"id":3378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3377,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3379,"src":"1481:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:9:50"},"scope":3399,"src":"1421:69:50","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e42abf35","id":3388,"implemented":false,"kind":"function","modifiers":[],"name":"getCollectedFeeAmounts","nodeType":"FunctionDefinition","parameters":{"id":3383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3382,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3388,"src":"1528:22:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3380,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1528:6:50","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3381,"nodeType":"ArrayTypeName","src":"1528:8:50","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1527:24:50"},"returnParameters":{"id":3387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3386,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":3388,"src":"1575:27:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1575:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3385,"nodeType":"ArrayTypeName","src":"1575:9:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1574:29:50"},"scope":3399,"src":"1496:108:50","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aaabadc5","id":3393,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3389,"nodeType":"ParameterList","parameters":[],"src":"1632:2:50"},"returnParameters":{"id":3392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3393,"src":"1658:11:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3390,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"1658:11:50","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1657:13:50"},"scope":3399,"src":"1610:61:50","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fbfa77cf","id":3398,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nodeType":"FunctionDefinition","parameters":{"id":3394,"nodeType":"ParameterList","parameters":[],"src":"1691:2:50"},"returnParameters":{"id":3397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3396,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3398,"src":"1717:6:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":3395,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1717:6:50","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1716:8:50"},"scope":3399,"src":"1677:48:50","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3400,"src":"860:867:50"}],"src":"688:1040:50"},"id":50},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IVault":[3864]},"id":3865,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3401,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"688:33:51"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3402,"nodeType":"ImportDirective","scope":3865,"sourceUnit":1723,"src":"723:51:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":3403,"nodeType":"ImportDirective","scope":3865,"sourceUnit":1503,"src":"775:55:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"../solidity-utils/helpers/ISignaturesValidator.sol","id":3404,"nodeType":"ImportDirective","scope":3865,"sourceUnit":1521,"src":"831:60:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"../solidity-utils/helpers/ITemporarilyPausable.sol","id":3405,"nodeType":"ImportDirective","scope":3865,"sourceUnit":1540,"src":"892:60:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"../solidity-utils/misc/IWETH.sol","id":3406,"nodeType":"ImportDirective","scope":3865,"sourceUnit":1645,"src":"953:42:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"./IAsset.sol","id":3407,"nodeType":"ImportDirective","scope":3865,"sourceUnit":3152,"src":"997:22:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3408,"nodeType":"ImportDirective","scope":3865,"sourceUnit":3167,"src":"1020:27:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"./IFlashLoanRecipient.sol","id":3409,"nodeType":"ImportDirective","scope":3865,"sourceUnit":3310,"src":"1048:35:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"./IProtocolFeesCollector.sol","id":3410,"nodeType":"ImportDirective","scope":3865,"sourceUnit":3400,"src":"1084:38:51","symbolAliases":[],"unitAlias":""},{"id":3411,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"1124:31:51"},{"abstract":false,"baseContracts":[{"baseName":{"id":3413,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1520,"src":"1349:20:51","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1520","typeString":"contract ISignaturesValidator"}},"id":3414,"nodeType":"InheritanceSpecifier","src":"1349:20:51"},{"baseName":{"id":3415,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":1539,"src":"1371:20:51","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$1539","typeString":"contract ITemporarilyPausable"}},"id":3416,"nodeType":"InheritanceSpecifier","src":"1371:20:51"},{"baseName":{"id":3417,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1502,"src":"1393:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1502","typeString":"contract IAuthentication"}},"id":3418,"nodeType":"InheritanceSpecifier","src":"1393:15:51"}],"contractDependencies":[1502,1520,1539],"contractKind":"interface","documentation":{"id":3412,"nodeType":"StructuredDocumentation","src":"1157:171:51","text":" @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n don't override one of these declarations."},"fullyImplemented":false,"id":3864,"linearizedBaseContracts":[3864,1502,1539,1520],"name":"IVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3419,"nodeType":"StructuredDocumentation","src":"2906:55:51","text":" @dev Returns the Vault's Authorizer."},"functionSelector":"aaabadc5","id":3424,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3420,"nodeType":"ParameterList","parameters":[],"src":"2988:2:51"},"returnParameters":{"id":3423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3422,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3424,"src":"3014:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3421,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"3014:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3013:13:51"},"scope":3864,"src":"2966:61:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3425,"nodeType":"StructuredDocumentation","src":"3033:175:51","text":" @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n Emits an `AuthorizerChanged` event."},"functionSelector":"058a628f","id":3430,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3427,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":3430,"src":"3236:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3426,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"3236:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3235:27:51"},"returnParameters":{"id":3429,"nodeType":"ParameterList","parameters":[],"src":"3271:0:51"},"scope":3864,"src":"3213:59:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3431,"nodeType":"StructuredDocumentation","src":"3278:80:51","text":" @dev Emitted when a new authorizer is set by `setAuthorizer`."},"id":3435,"name":"AuthorizerChanged","nodeType":"EventDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3433,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":3435,"src":"3387:33:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3432,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"3387:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3386:35:51"},"src":"3363:59:51"},{"documentation":{"id":3436,"nodeType":"StructuredDocumentation","src":"4518:99:51","text":" @dev Returns true if `user` has approved `relayer` to act as a relayer for them."},"functionSelector":"fec90d72","id":3445,"implemented":false,"kind":"function","modifiers":[],"name":"hasApprovedRelayer","nodeType":"FunctionDefinition","parameters":{"id":3441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3438,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3445,"src":"4650:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3437,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3440,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3445,"src":"4664:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3439,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4649:31:51"},"returnParameters":{"id":3444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3443,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3445,"src":"4704:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3442,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4703:6:51"},"scope":3864,"src":"4622:88:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3446,"nodeType":"StructuredDocumentation","src":"4716:178:51","text":" @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n Emits a `RelayerApprovalChanged` event."},"functionSelector":"fa6e671d","id":3455,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":3453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3448,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3455,"src":"4936:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3447,"name":"address","nodeType":"ElementaryTypeName","src":"4936:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3450,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3455,"src":"4960:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3449,"name":"address","nodeType":"ElementaryTypeName","src":"4960:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3452,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":3455,"src":"4985:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3451,"name":"bool","nodeType":"ElementaryTypeName","src":"4985:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4926:78:51"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[],"src":"5013:0:51"},"scope":3864,"src":"4899:115:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3456,"nodeType":"StructuredDocumentation","src":"5020:104:51","text":" @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`."},"id":3464,"name":"RelayerApprovalChanged","nodeType":"EventDefinition","parameters":{"id":3463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3458,"indexed":true,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3464,"src":"5158:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3457,"name":"address","nodeType":"ElementaryTypeName","src":"5158:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3460,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3464,"src":"5183:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3459,"name":"address","nodeType":"ElementaryTypeName","src":"5183:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3462,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":3464,"src":"5207:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3461,"name":"bool","nodeType":"ElementaryTypeName","src":"5207:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5157:64:51"},"src":"5129:93:51"},{"documentation":{"id":3465,"nodeType":"StructuredDocumentation","src":"5930:78:51","text":" @dev Returns `user`'s Internal Balance for a set of tokens."},"functionSelector":"0f5a6efa","id":3476,"implemented":false,"kind":"function","modifiers":[],"name":"getInternalBalance","nodeType":"FunctionDefinition","parameters":{"id":3471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3467,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3476,"src":"6041:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3466,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3470,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3476,"src":"6055:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3468,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6055:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3469,"nodeType":"ArrayTypeName","src":"6055:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"6040:38:51"},"returnParameters":{"id":3475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3474,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3476,"src":"6102:16:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3472,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3473,"nodeType":"ArrayTypeName","src":"6102:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6101:18:51"},"scope":3864,"src":"6013:107:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3477,"nodeType":"StructuredDocumentation","src":"6126:416:51","text":" @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n it lets integrators reuse a user's Vault allowance.\n For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"functionSelector":"0e8e3e84","id":3483,"implemented":false,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":3481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3480,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3483,"src":"6574:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":3478,"name":"UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"6574:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":3479,"nodeType":"ArrayTypeName","src":"6574:15:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"src":"6573:28:51"},"returnParameters":{"id":3482,"nodeType":"ParameterList","parameters":[],"src":"6618:0:51"},"scope":3864,"src":"6547:72:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.UserBalanceOp","id":3494,"members":[{"constant":false,"id":3485,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3494,"src":"6836:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"},"typeName":{"id":3484,"name":"UserBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3499,"src":"6836:17:51","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3487,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":3494,"src":"6868:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":3486,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"6868:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3489,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3494,"src":"6890:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3488,"name":"uint256","nodeType":"ElementaryTypeName","src":"6890:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3491,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3494,"src":"6914:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3490,"name":"address","nodeType":"ElementaryTypeName","src":"6914:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3493,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3494,"src":"6938:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3492,"name":"address","nodeType":"ElementaryTypeName","src":"6938:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"UserBalanceOp","nodeType":"StructDefinition","scope":3864,"src":"6805:165:51","visibility":"public"},{"canonicalName":"IVault.UserBalanceOpKind","id":3499,"members":[{"id":3495,"name":"DEPOSIT_INTERNAL","nodeType":"EnumValue","src":"8608:16:51"},{"id":3496,"name":"WITHDRAW_INTERNAL","nodeType":"EnumValue","src":"8626:17:51"},{"id":3497,"name":"TRANSFER_INTERNAL","nodeType":"EnumValue","src":"8645:17:51"},{"id":3498,"name":"TRANSFER_EXTERNAL","nodeType":"EnumValue","src":"8664:17:51"}],"name":"UserBalanceOpKind","nodeType":"EnumDefinition","src":"8583:100:51"},{"anonymous":false,"documentation":{"id":3500,"nodeType":"StructuredDocumentation","src":"8689:317:51","text":" @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n interacting with Pools using Internal Balance.\n Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n address."},"id":3508,"name":"InternalBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3502,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3508,"src":"9040:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3501,"name":"address","nodeType":"ElementaryTypeName","src":"9040:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3504,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3508,"src":"9062:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3503,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"9062:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3506,"indexed":false,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":3508,"src":"9084:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3505,"name":"int256","nodeType":"ElementaryTypeName","src":"9084:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9039:58:51"},"src":"9011:87:51"},{"anonymous":false,"documentation":{"id":3509,"nodeType":"StructuredDocumentation","src":"9104:131:51","text":" @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account."},"id":3519,"name":"ExternalBalanceTransfer","nodeType":"EventDefinition","parameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3511,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3519,"src":"9270:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3510,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"9270:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3513,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3519,"src":"9292:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3512,"name":"address","nodeType":"ElementaryTypeName","src":"9292:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3515,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3519,"src":"9316:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3514,"name":"address","nodeType":"ElementaryTypeName","src":"9316:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3517,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3519,"src":"9335:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"9335:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9269:81:51"},"src":"9240:111:51"},{"canonicalName":"IVault.PoolSpecialization","id":3523,"members":[{"id":3520,"name":"GENERAL","nodeType":"EnumValue","src":"10457:7:51"},{"id":3521,"name":"MINIMAL_SWAP_INFO","nodeType":"EnumValue","src":"10466:17:51"},{"id":3522,"name":"TWO_TOKEN","nodeType":"EnumValue","src":"10485:9:51"}],"name":"PoolSpecialization","nodeType":"EnumDefinition","src":"10431:65:51"},{"documentation":{"id":3524,"nodeType":"StructuredDocumentation","src":"10502:702:51","text":" @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n changed.\n The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n depending on the chosen specialization setting. This contract is known as the Pool's contract.\n Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n multiple Pools may share the same contract.\n Emits a `PoolRegistered` event."},"functionSelector":"09b2760f","id":3531,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nodeType":"FunctionDefinition","parameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3531,"src":"11231:33:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3525,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"11231:18:51","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11230:35:51"},"returnParameters":{"id":3530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3529,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3531,"src":"11284:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3528,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11284:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11283:9:51"},"scope":3864,"src":"11209:84:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3532,"nodeType":"StructuredDocumentation","src":"11299:84:51","text":" @dev Emitted when a Pool is registered by calling `registerPool`."},"id":3540,"name":"PoolRegistered","nodeType":"EventDefinition","parameters":{"id":3539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3534,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3540,"src":"11409:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11409:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3536,"indexed":true,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":3540,"src":"11433:27:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3535,"name":"address","nodeType":"ElementaryTypeName","src":"11433:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3538,"indexed":false,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3540,"src":"11462:33:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3537,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"11462:18:51","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11408:88:51"},"src":"11388:109:51"},{"documentation":{"id":3541,"nodeType":"StructuredDocumentation","src":"11503:85:51","text":" @dev Returns a Pool's contract address and specialization setting."},"functionSelector":"f6c00927","id":3550,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":3544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3543,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3550,"src":"11610:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3542,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11610:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11609:16:51"},"returnParameters":{"id":3549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3546,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3550,"src":"11649:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3545,"name":"address","nodeType":"ElementaryTypeName","src":"11649:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3548,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3550,"src":"11658:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3547,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"11658:18:51","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3523","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11648:29:51"},"scope":3864,"src":"11593:85:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3551,"nodeType":"StructuredDocumentation","src":"11684:1422:51","text":" @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n exit by receiving registered tokens, and can only swap registered tokens.\n Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n ascending order.\n The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n expected to be highly secured smart contracts with sound design principles, and the decision to register an\n Asset Manager should not be made lightly.\n Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n different Asset Manager.\n Emits a `TokensRegistered` event."},"functionSelector":"66a9c7d2","id":3562,"implemented":false,"kind":"function","modifiers":[],"name":"registerTokens","nodeType":"FunctionDefinition","parameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3553,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3562,"src":"13144:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13144:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3562,"src":"13168:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3554,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"13168:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3555,"nodeType":"ArrayTypeName","src":"13168:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3562,"src":"13200:30:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3557,"name":"address","nodeType":"ElementaryTypeName","src":"13200:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3558,"nodeType":"ArrayTypeName","src":"13200:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13134:102:51"},"returnParameters":{"id":3561,"nodeType":"ParameterList","parameters":[],"src":"13245:0:51"},"scope":3864,"src":"13111:135:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3563,"nodeType":"StructuredDocumentation","src":"13252:89:51","text":" @dev Emitted when a Pool registers tokens by calling `registerTokens`."},"id":3573,"name":"TokensRegistered","nodeType":"EventDefinition","parameters":{"id":3572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3565,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3573,"src":"13369:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3564,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13369:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3568,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3573,"src":"13393:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3566,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"13393:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3567,"nodeType":"ArrayTypeName","src":"13393:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3571,"indexed":false,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3573,"src":"13410:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3569,"name":"address","nodeType":"ElementaryTypeName","src":"13410:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3570,"nodeType":"ArrayTypeName","src":"13410:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13368:66:51"},"src":"13346:89:51"},{"documentation":{"id":3574,"nodeType":"StructuredDocumentation","src":"13441:567:51","text":" @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n must be deregistered in the same `deregisterTokens` call.\n A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n Emits a `TokensDeregistered` event."},"functionSelector":"7d3aeb96","id":3582,"implemented":false,"kind":"function","modifiers":[],"name":"deregisterTokens","nodeType":"FunctionDefinition","parameters":{"id":3580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3576,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3582,"src":"14039:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14039:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3579,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3582,"src":"14055:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3577,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"14055:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3578,"nodeType":"ArrayTypeName","src":"14055:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14038:40:51"},"returnParameters":{"id":3581,"nodeType":"ParameterList","parameters":[],"src":"14087:0:51"},"scope":3864,"src":"14013:75:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3583,"nodeType":"StructuredDocumentation","src":"14094:93:51","text":" @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`."},"id":3590,"name":"TokensDeregistered","nodeType":"EventDefinition","parameters":{"id":3589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3585,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3590,"src":"14217:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14217:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3588,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3590,"src":"14241:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3586,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"14241:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3587,"nodeType":"ArrayTypeName","src":"14241:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14216:41:51"},"src":"14192:66:51"},{"documentation":{"id":3591,"nodeType":"StructuredDocumentation","src":"14264:1043:51","text":" @dev Returns detailed information for a Pool's registered token.\n `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n equals the sum of `cash` and `managed`.\n Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n `managed` or `total` balance to be greater than 2^112 - 1.\n `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n change for this purpose, and will update `lastChangeBlock`.\n `assetManager` is the Pool's token Asset Manager."},"functionSelector":"b05f8e48","id":3606,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nodeType":"FunctionDefinition","parameters":{"id":3596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3593,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3606,"src":"15338:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3592,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15338:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3595,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3606,"src":"15354:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3594,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"15354:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15337:30:51"},"returnParameters":{"id":3605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3598,"mutability":"mutable","name":"cash","nodeType":"VariableDeclaration","scope":3606,"src":"15428:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3597,"name":"uint256","nodeType":"ElementaryTypeName","src":"15428:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3600,"mutability":"mutable","name":"managed","nodeType":"VariableDeclaration","scope":3606,"src":"15454:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3599,"name":"uint256","nodeType":"ElementaryTypeName","src":"15454:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3602,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3606,"src":"15483:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"15483:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3604,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3606,"src":"15520:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3603,"name":"address","nodeType":"ElementaryTypeName","src":"15520:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15414:136:51"},"scope":3864,"src":"15312:239:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3607,"nodeType":"StructuredDocumentation","src":"15557:828:51","text":" @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n the tokens' `balances` changed.\n The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n order as passed to `registerTokens`.\n Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n instead."},"functionSelector":"f94d4668","id":3620,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nodeType":"FunctionDefinition","parameters":{"id":3610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3609,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3620,"src":"16413:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16413:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16412:16:51"},"returnParameters":{"id":3619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3613,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3620,"src":"16489:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3611,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"16489:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3612,"nodeType":"ArrayTypeName","src":"16489:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3616,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3620,"src":"16525:25:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3614,"name":"uint256","nodeType":"ElementaryTypeName","src":"16525:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3615,"nodeType":"ArrayTypeName","src":"16525:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3618,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3620,"src":"16564:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"16564:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16475:122:51"},"scope":3864,"src":"16390:208:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3621,"nodeType":"StructuredDocumentation","src":"16604:2304:51","text":" @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n Pool shares.\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n these maximums.\n If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n back to the caller (not the sender, which is important for relayers).\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n withdrawn from Internal Balance: attempting to do so will trigger a revert.\n This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n directly to the Pool's contract, as is `recipient`.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"b95cac28","id":3632,"implemented":false,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":3630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3623,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3632,"src":"18940:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18940:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3632,"src":"18964:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3624,"name":"address","nodeType":"ElementaryTypeName","src":"18964:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3627,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3632,"src":"18988:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3626,"name":"address","nodeType":"ElementaryTypeName","src":"18988:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3629,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3632,"src":"19015:30:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":3628,"name":"JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3643,"src":"19015:15:51","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"18930:121:51"},"returnParameters":{"id":3631,"nodeType":"ParameterList","parameters":[],"src":"19068:0:51"},"scope":3864,"src":"18913:156:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.JoinPoolRequest","id":3643,"members":[{"constant":false,"id":3635,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3643,"src":"19108:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3633,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"19108:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":3634,"nodeType":"ArrayTypeName","src":"19108:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3638,"mutability":"mutable","name":"maxAmountsIn","nodeType":"VariableDeclaration","scope":3643,"src":"19133:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3636,"name":"uint256","nodeType":"ElementaryTypeName","src":"19133:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3637,"nodeType":"ArrayTypeName","src":"19133:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3640,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3643,"src":"19165:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3639,"name":"bytes","nodeType":"ElementaryTypeName","src":"19165:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3642,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3643,"src":"19189:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3641,"name":"bool","nodeType":"ElementaryTypeName","src":"19189:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"JoinPoolRequest","nodeType":"StructDefinition","scope":3864,"src":"19075:145:51","visibility":"public"},{"documentation":{"id":3644,"nodeType":"StructuredDocumentation","src":"19226:2489:51","text":" @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n `getPoolTokenInfo`).\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n it just enforces these minimums.\n If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n do so will trigger a revert.\n `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n `tokens` array. This array must match the Pool's registered tokens.\n This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n passed directly to the Pool's contract.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"8bdb3913","id":3655,"implemented":false,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":3653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3655,"src":"21747:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21747:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3648,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3655,"src":"21771:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3647,"name":"address","nodeType":"ElementaryTypeName","src":"21771:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3650,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3655,"src":"21795:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3649,"name":"address","nodeType":"ElementaryTypeName","src":"21795:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3652,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3655,"src":"21830:30:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":3651,"name":"ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"21830:15:51","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"21737:129:51"},"returnParameters":{"id":3654,"nodeType":"ParameterList","parameters":[],"src":"21875:0:51"},"scope":3864,"src":"21720:156:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.ExitPoolRequest","id":3666,"members":[{"constant":false,"id":3658,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3666,"src":"21915:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3656,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"21915:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":3657,"nodeType":"ArrayTypeName","src":"21915:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3661,"mutability":"mutable","name":"minAmountsOut","nodeType":"VariableDeclaration","scope":3666,"src":"21940:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3659,"name":"uint256","nodeType":"ElementaryTypeName","src":"21940:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3660,"nodeType":"ArrayTypeName","src":"21940:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3663,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3666,"src":"21973:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3662,"name":"bytes","nodeType":"ElementaryTypeName","src":"21973:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3665,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3666,"src":"21997:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3664,"name":"bool","nodeType":"ElementaryTypeName","src":"21997:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExitPoolRequest","nodeType":"StructDefinition","scope":3864,"src":"21882:144:51","visibility":"public"},{"anonymous":false,"documentation":{"id":3667,"nodeType":"StructuredDocumentation","src":"22032:116:51","text":" @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively."},"id":3682,"name":"PoolBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3669,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3682,"src":"22187:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22187:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3671,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nodeType":"VariableDeclaration","scope":3682,"src":"22219:33:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3670,"name":"address","nodeType":"ElementaryTypeName","src":"22219:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3674,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3682,"src":"22262:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3672,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"22262:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3673,"nodeType":"ArrayTypeName","src":"22262:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3677,"indexed":false,"mutability":"mutable","name":"deltas","nodeType":"VariableDeclaration","scope":3682,"src":"22287:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3675,"name":"int256","nodeType":"ElementaryTypeName","src":"22287:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3676,"nodeType":"ArrayTypeName","src":"22287:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3680,"indexed":false,"mutability":"mutable","name":"protocolFeeAmounts","nodeType":"VariableDeclaration","scope":3682,"src":"22312:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3678,"name":"uint256","nodeType":"ElementaryTypeName","src":"22312:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3679,"nodeType":"ArrayTypeName","src":"22312:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22177:169:51"},"src":"22153:194:51"},{"canonicalName":"IVault.PoolBalanceChangeKind","id":3685,"members":[{"id":3683,"name":"JOIN","nodeType":"EnumValue","src":"22382:4:51"},{"id":3684,"name":"EXIT","nodeType":"EnumValue","src":"22388:4:51"}],"name":"PoolBalanceChangeKind","nodeType":"EnumDefinition","src":"22353:41:51"},{"canonicalName":"IVault.SwapKind","id":3688,"members":[{"id":3686,"name":"GIVEN_IN","nodeType":"EnumValue","src":"25995:8:51"},{"id":3687,"name":"GIVEN_OUT","nodeType":"EnumValue","src":"26005:9:51"}],"name":"SwapKind","nodeType":"EnumDefinition","src":"25979:37:51"},{"documentation":{"id":3689,"nodeType":"StructuredDocumentation","src":"26022:587:51","text":" @dev Performs a swap with a single Pool.\n If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n taken from the Pool, which must be greater than or equal to `limit`.\n If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n sent to the Pool, which must be less than or equal to `limit`.\n Internal Balance usage and the recipient are determined by the `funds` struct.\n Emits a `Swap` event."},"functionSelector":"52bbbe29","id":3702,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":3698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3691,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":3702,"src":"26637:28:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":3690,"name":"SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3715,"src":"26637:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":3693,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3702,"src":"26675:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3692,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"26675:14:51","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3695,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":3702,"src":"26712:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3694,"name":"uint256","nodeType":"ElementaryTypeName","src":"26712:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3697,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3702,"src":"26735:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3696,"name":"uint256","nodeType":"ElementaryTypeName","src":"26735:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26627:130:51"},"returnParameters":{"id":3701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3700,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3702,"src":"26784:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3699,"name":"uint256","nodeType":"ElementaryTypeName","src":"26784:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26783:9:51"},"scope":3864,"src":"26614:179:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.SingleSwap","id":3715,"members":[{"constant":false,"id":3704,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3715,"src":"27377:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27377:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3706,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3715,"src":"27401:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":3705,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"27401:8:51","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3708,"mutability":"mutable","name":"assetIn","nodeType":"VariableDeclaration","scope":3715,"src":"27424:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":3707,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"27424:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3710,"mutability":"mutable","name":"assetOut","nodeType":"VariableDeclaration","scope":3715,"src":"27448:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":3709,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"27448:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3712,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3715,"src":"27473:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3711,"name":"uint256","nodeType":"ElementaryTypeName","src":"27473:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3714,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3715,"src":"27497:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3713,"name":"bytes","nodeType":"ElementaryTypeName","src":"27497:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SingleSwap","nodeType":"StructDefinition","scope":3864,"src":"27349:169:51","visibility":"public"},{"documentation":{"id":3716,"nodeType":"StructuredDocumentation","src":"27524:1980:51","text":" @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n the same index in the `assets` array.\n Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n `amountOut` depending on the swap kind.\n Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n or unwrapped from WETH by the Vault.\n Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n the minimum or maximum amount of each token the vault is allowed to transfer.\n `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n equivalent `swap` call.\n Emits `Swap` events."},"functionSelector":"945bcec9","id":3737,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3718,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3737,"src":"29537:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":3717,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"29537:8:51","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3721,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3737,"src":"29560:28:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3719,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"29560:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3720,"nodeType":"ArrayTypeName","src":"29560:15:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3724,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3737,"src":"29598:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3722,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"29598:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":3723,"nodeType":"ArrayTypeName","src":"29598:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3726,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3737,"src":"29630:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3725,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"29630:14:51","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3729,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":3737,"src":"29667:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3727,"name":"int256","nodeType":"ElementaryTypeName","src":"29667:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3728,"nodeType":"ArrayTypeName","src":"29667:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3731,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3737,"src":"29699:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"29699:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29527:194:51"},"returnParameters":{"id":3736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3737,"src":"29748:15:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3733,"name":"int256","nodeType":"ElementaryTypeName","src":"29748:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3734,"nodeType":"ArrayTypeName","src":"29748:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"29747:17:51"},"scope":3864,"src":"29509:256:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.BatchSwapStep","id":3748,"members":[{"constant":false,"id":3739,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3748,"src":"30358:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30358:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"assetInIndex","nodeType":"VariableDeclaration","scope":3748,"src":"30382:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3740,"name":"uint256","nodeType":"ElementaryTypeName","src":"30382:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3743,"mutability":"mutable","name":"assetOutIndex","nodeType":"VariableDeclaration","scope":3748,"src":"30412:21:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3742,"name":"uint256","nodeType":"ElementaryTypeName","src":"30412:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3745,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3748,"src":"30443:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"30443:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3747,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3748,"src":"30467:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3746,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BatchSwapStep","nodeType":"StructDefinition","scope":3864,"src":"30327:161:51","visibility":"public"},{"anonymous":false,"documentation":{"id":3749,"nodeType":"StructuredDocumentation","src":"30494:92:51","text":" @dev Emitted for each individual swap performed by `swap` or `batchSwap`."},"id":3761,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3751,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3761,"src":"30611:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30611:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3753,"indexed":true,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":3761,"src":"30643:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3752,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"30643:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3755,"indexed":true,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":3761,"src":"30675:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3754,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"30675:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3757,"indexed":false,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":3761,"src":"30708:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3756,"name":"uint256","nodeType":"ElementaryTypeName","src":"30708:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3759,"indexed":false,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":3761,"src":"30734:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3758,"name":"uint256","nodeType":"ElementaryTypeName","src":"30734:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30601:156:51"},"src":"30591:167:51"},{"canonicalName":"IVault.FundManagement","id":3770,"members":[{"constant":false,"id":3763,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3770,"src":"31721:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3762,"name":"address","nodeType":"ElementaryTypeName","src":"31721:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3765,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3770,"src":"31745:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3764,"name":"bool","nodeType":"ElementaryTypeName","src":"31745:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3767,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3770,"src":"31779:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3766,"name":"address","nodeType":"ElementaryTypeName","src":"31779:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3769,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3770,"src":"31814:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3768,"name":"bool","nodeType":"ElementaryTypeName","src":"31814:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FundManagement","nodeType":"StructDefinition","scope":3864,"src":"31689:154:51","visibility":"public"},{"documentation":{"id":3771,"nodeType":"StructuredDocumentation","src":"31849:1027:51","text":" @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n receives are the same that an equivalent `batchSwap` call would receive.\n Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n approve them for the Vault, or even know a user's address.\n Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n eth_call instead of eth_sendTransaction."},"functionSelector":"f84d066e","id":3787,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3773,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3787,"src":"32914:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":3772,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"32914:8:51","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3776,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3787,"src":"32937:28:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3774,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"32937:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3775,"nodeType":"ArrayTypeName","src":"32937:15:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3779,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3787,"src":"32975:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3777,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"32975:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":3778,"nodeType":"ArrayTypeName","src":"32975:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3781,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3787,"src":"33007:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3780,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"33007:14:51","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"32904:136:51"},"returnParameters":{"id":3786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3785,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":3787,"src":"33059:27:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3783,"name":"int256","nodeType":"ElementaryTypeName","src":"33059:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3784,"nodeType":"ArrayTypeName","src":"33059:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"33058:29:51"},"scope":3864,"src":"32881:207:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3788,"nodeType":"StructuredDocumentation","src":"33114:604:51","text":" @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n and then reverting unless the tokens plus a proportional protocol fee have been returned.\n The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n for each token contract. `tokens` must be sorted in ascending order.\n The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n `receiveFlashLoan` call.\n Emits `FlashLoan` events."},"functionSelector":"5c38449e","id":3801,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nodeType":"FunctionDefinition","parameters":{"id":3799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3790,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3801,"src":"33751:29:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3309","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3789,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3309,"src":"33751:19:51","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3309","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3793,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3801,"src":"33790:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3791,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"33790:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":3792,"nodeType":"ArrayTypeName","src":"33790:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3796,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3801,"src":"33822:24:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3794,"name":"uint256","nodeType":"ElementaryTypeName","src":"33822:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3795,"nodeType":"ArrayTypeName","src":"33822:9:51","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3798,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3801,"src":"33856:21:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3797,"name":"bytes","nodeType":"ElementaryTypeName","src":"33856:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33741:142:51"},"returnParameters":{"id":3800,"nodeType":"ParameterList","parameters":[],"src":"33892:0:51"},"scope":3864,"src":"33723:170:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3802,"nodeType":"StructuredDocumentation","src":"33899:88:51","text":" @dev Emitted for each individual flash loan performed by `flashLoan`."},"id":3812,"name":"FlashLoan","nodeType":"EventDefinition","parameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3804,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3812,"src":"34008:37:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3309","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3803,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3309,"src":"34008:19:51","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3309","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3806,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3812,"src":"34047:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3805,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"34047:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3808,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3812,"src":"34069:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3807,"name":"uint256","nodeType":"ElementaryTypeName","src":"34069:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3810,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":3812,"src":"34085:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3809,"name":"uint256","nodeType":"ElementaryTypeName","src":"34085:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34007:96:51"},"src":"33992:112:51"},{"documentation":{"id":3813,"nodeType":"StructuredDocumentation","src":"35100:434:51","text":" @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n Pool Balance management features batching, which means a single contract call can be used to perform multiple\n operations of different kinds, with different Pools and tokens, at once.\n For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`."},"functionSelector":"e6c46092","id":3819,"implemented":false,"kind":"function","modifiers":[],"name":"managePoolBalance","nodeType":"FunctionDefinition","parameters":{"id":3817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3816,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3819,"src":"35566:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3828_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.PoolBalanceOp[]"},"typeName":{"baseType":{"id":3814,"name":"PoolBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3828,"src":"35566:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_PoolBalanceOp_$3828_storage_ptr","typeString":"struct IVault.PoolBalanceOp"}},"id":3815,"nodeType":"ArrayTypeName","src":"35566:15:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3828_storage_$dyn_storage_ptr","typeString":"struct IVault.PoolBalanceOp[]"}},"visibility":"internal"}],"src":"35565:28:51"},"returnParameters":{"id":3818,"nodeType":"ParameterList","parameters":[],"src":"35602:0:51"},"scope":3864,"src":"35539:64:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.PoolBalanceOp","id":3828,"members":[{"constant":false,"id":3821,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3828,"src":"35640:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3832","typeString":"enum IVault.PoolBalanceOpKind"},"typeName":{"id":3820,"name":"PoolBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3832,"src":"35640:17:51","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3832","typeString":"enum IVault.PoolBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3823,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3828,"src":"35672:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35672:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3825,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3828,"src":"35696:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3824,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"35696:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3827,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3828,"src":"35718:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3826,"name":"uint256","nodeType":"ElementaryTypeName","src":"35718:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PoolBalanceOp","nodeType":"StructDefinition","scope":3864,"src":"35609:130:51","visibility":"public"},{"canonicalName":"IVault.PoolBalanceOpKind","id":3832,"members":[{"id":3829,"name":"WITHDRAW","nodeType":"EnumValue","src":"36261:8:51"},{"id":3830,"name":"DEPOSIT","nodeType":"EnumValue","src":"36271:7:51"},{"id":3831,"name":"UPDATE","nodeType":"EnumValue","src":"36280:6:51"}],"name":"PoolBalanceOpKind","nodeType":"EnumDefinition","src":"36236:52:51"},{"anonymous":false,"documentation":{"id":3833,"nodeType":"StructuredDocumentation","src":"36294:109:51","text":" @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`."},"id":3845,"name":"PoolBalanceManaged","nodeType":"EventDefinition","parameters":{"id":3844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3835,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3845,"src":"36442:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36442:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3837,"indexed":true,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3845,"src":"36474:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3836,"name":"address","nodeType":"ElementaryTypeName","src":"36474:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3839,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3845,"src":"36512:20:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":3838,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"36512:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3841,"indexed":false,"mutability":"mutable","name":"cashDelta","nodeType":"VariableDeclaration","scope":3845,"src":"36542:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3840,"name":"int256","nodeType":"ElementaryTypeName","src":"36542:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3843,"indexed":false,"mutability":"mutable","name":"managedDelta","nodeType":"VariableDeclaration","scope":3845,"src":"36568:19:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3842,"name":"int256","nodeType":"ElementaryTypeName","src":"36568:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"36432:161:51"},"src":"36408:186:51"},{"documentation":{"id":3846,"nodeType":"StructuredDocumentation","src":"37471:64:51","text":" @dev Returns the current protocol fee module."},"functionSelector":"d2946c2b","id":3851,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":3847,"nodeType":"ParameterList","parameters":[],"src":"37573:2:51"},"returnParameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3851,"src":"37599:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":3848,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"37599:22:51","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"37598:24:51"},"scope":3864,"src":"37540:83:51","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"37629:635:51","text":" @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n error in some part of the system.\n The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n While the contract is paused, the following features are disabled:\n - depositing and transferring internal balance\n - transferring external balance (using the Vault's allowance)\n - swaps\n - joining Pools\n - Asset Manager interactions\n Internal Balance can still be withdrawn, and Pools exited."},"functionSelector":"16c38b3c","id":3857,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nodeType":"FunctionDefinition","parameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":3857,"src":"38288:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3853,"name":"bool","nodeType":"ElementaryTypeName","src":"38288:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38287:13:51"},"returnParameters":{"id":3856,"nodeType":"ParameterList","parameters":[],"src":"38309:0:51"},"scope":3864,"src":"38269:41:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3858,"nodeType":"StructuredDocumentation","src":"38316:58:51","text":" @dev Returns the Vault's WETH instance."},"functionSelector":"ad5c4648","id":3863,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nodeType":"FunctionDefinition","parameters":{"id":3859,"nodeType":"ParameterList","parameters":[],"src":"38392:2:51"},"returnParameters":{"id":3862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3863,"src":"38418:5:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"},"typeName":{"id":3860,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"38418:5:51","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"38417:7:51"},"scope":3864,"src":"38379:46:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3865,"src":"1329:37155:51"}],"src":"688:37797:51"},"id":51},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","exportedSymbols":{"BasePoolAuthorization":[3959]},"id":3960,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3866,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:52"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":3867,"nodeType":"ImportDirective","scope":3960,"sourceUnit":3167,"src":"713:70:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":3868,"nodeType":"ImportDirective","scope":3960,"sourceUnit":4424,"src":"785:79:52","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3870,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4423,"src":"1535:14:52","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$4423","typeString":"contract Authentication"}},"id":3871,"nodeType":"InheritanceSpecifier","src":"1535:14:52"}],"contractDependencies":[1502,4423],"contractKind":"contract","documentation":{"id":3869,"nodeType":"StructuredDocumentation","src":"866:625:52","text":" @dev Base authorization layer implementation for Pools.\n The owner account can call some of the permissioned functions - access control of the rest is delegated to the\n Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership,\n granular roles, etc., could be built on top of this by making the owner a smart contract.\n Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate\n control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`."},"fullyImplemented":false,"id":3959,"linearizedBaseContracts":[3959,4423,1502],"name":"BasePoolAuthorization","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3873,"mutability":"immutable","name":"_owner","nodeType":"VariableDeclaration","scope":3959,"src":"1556:32:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3872,"name":"address","nodeType":"ElementaryTypeName","src":"1556:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"id":3876,"mutability":"constant","name":"_DELEGATE_OWNER","nodeType":"VariableDeclaration","scope":3959,"src":"1595:86:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3874,"name":"address","nodeType":"ElementaryTypeName","src":"1595:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307842413142413162613142413162413162413142613142413162613142413162413162613162613142","id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1639:42:52","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xBA1BA1ba1BA1bA1bA1Ba1BA1ba1BA1bA1ba1ba1B"},"visibility":"internal"},{"body":{"id":3885,"nodeType":"Block","src":"1715:31:52","statements":[{"expression":{"id":3883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3881,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"1725:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3882,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"1734:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1725:14:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3884,"nodeType":"ExpressionStatement","src":"1725:14:52"}]},"id":3886,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3878,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3886,"src":"1700:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3877,"name":"address","nodeType":"ElementaryTypeName","src":"1700:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1699:15:52"},"returnParameters":{"id":3880,"nodeType":"ParameterList","parameters":[],"src":"1715:0:52"},"scope":3959,"src":"1688:58:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3893,"nodeType":"Block","src":"1802:30:52","statements":[{"expression":{"id":3891,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"1819:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3890,"id":3892,"nodeType":"Return","src":"1812:13:52"}]},"functionSelector":"893d20e8","id":3894,"implemented":true,"kind":"function","modifiers":[],"name":"getOwner","nodeType":"FunctionDefinition","parameters":{"id":3887,"nodeType":"ParameterList","parameters":[],"src":"1769:2:52"},"returnParameters":{"id":3890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3889,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3894,"src":"1793:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3888,"name":"address","nodeType":"ElementaryTypeName","src":"1793:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1792:9:52"},"scope":3959,"src":"1752:80:52","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3902,"nodeType":"Block","src":"1899:40:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3899,"name":"_getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1916:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1916:16:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"functionReturnParameters":3898,"id":3901,"nodeType":"Return","src":"1909:23:52"}]},"functionSelector":"aaabadc5","id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3895,"nodeType":"ParameterList","parameters":[],"src":"1860:2:52"},"returnParameters":{"id":3898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3903,"src":"1886:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3896,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"1886:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1885:13:52"},"scope":3959,"src":"1838:101:52","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4422],"body":{"id":3942,"nodeType":"Block","src":"2039:450:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3913,"name":"getOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"2054:8:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2054:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3915,"name":"_DELEGATE_OWNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"2068:15:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2054:29:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2053:31:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":3919,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"2107:8:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3918,"name":"_isOwnerOnlyAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3953,"src":"2088:18:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2053:63:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3940,"nodeType":"Block","src":"2275:208:52","statements":[{"expression":{"arguments":[{"id":3932,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"2439:8:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3933,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"2449:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3936,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2466:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3959","typeString":"contract BasePoolAuthorization"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3959","typeString":"contract BasePoolAuthorization"}],"id":3935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2458:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3934,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:52","typeDescriptions":{}}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2458:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3929,"name":"_getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"2411:14:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2411:16:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"2411:27:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2411:61:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3912,"id":3939,"nodeType":"Return","src":"2404:68:52"}]},"id":3941,"nodeType":"IfStatement","src":"2049:434:52","trueBody":{"id":3928,"nodeType":"Block","src":"2118:151:52","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3922,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2234:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2234:10:52","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3924,"name":"getOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"2248:8:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2248:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2234:24:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3912,"id":3927,"nodeType":"Return","src":"2227:31:52"}]}}]},"id":3943,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":3909,"nodeType":"OverrideSpecifier","overrides":[],"src":"2015:8:52"},"parameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3905,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3943,"src":"1966:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1966:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3943,"src":"1984:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3906,"name":"address","nodeType":"ElementaryTypeName","src":"1984:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1965:35:52"},"returnParameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3943,"src":"2033:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3910,"name":"bool","nodeType":"ElementaryTypeName","src":"2033:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2032:6:52"},"scope":3959,"src":"1945:544:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3952,"nodeType":"Block","src":"2569:29:52","statements":[{"expression":{"hexValue":"66616c7365","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2586:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3949,"id":3951,"nodeType":"Return","src":"2579:12:52"}]},"id":3953,"implemented":true,"kind":"function","modifiers":[],"name":"_isOwnerOnlyAction","nodeType":"FunctionDefinition","parameters":{"id":3946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3953,"src":"2523:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2523:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2522:9:52"},"returnParameters":{"id":3949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3948,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3953,"src":"2563:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3947,"name":"bool","nodeType":"ElementaryTypeName","src":"2563:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2562:6:52"},"scope":3959,"src":"2495:103:52","stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3958,"implemented":false,"kind":"function","modifiers":[],"name":"_getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3954,"nodeType":"ParameterList","parameters":[],"src":"2627:2:52"},"returnParameters":{"id":3957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3958,"src":"2661:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":3955,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"2661:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2660:13:52"},"scope":3959,"src":"2604:70:52","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3960,"src":"1492:1184:52"}],"src":"688:1989:52"},"id":52},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","exportedSymbols":{"RecoveryMode":[4100]},"id":4101,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3961,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:53"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3962,"nodeType":"ImportDirective","scope":4101,"sourceUnit":1492,"src":"713:90:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","id":3963,"nodeType":"ImportDirective","scope":4101,"sourceUnit":640,"src":"804:80:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","id":3964,"nodeType":"ImportDirective","scope":4101,"sourceUnit":709,"src":"885:77:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":3965,"nodeType":"ImportDirective","scope":4101,"sourceUnit":3865,"src":"963:65:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":3966,"nodeType":"ImportDirective","scope":4101,"sourceUnit":5906,"src":"1030:72:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","file":"./BasePoolAuthorization.sol","id":3967,"nodeType":"ImportDirective","scope":4101,"sourceUnit":3960,"src":"1104:37:53","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3969,"name":"IRecoveryMode","nodeType":"UserDefinedTypeName","referencedDeclaration":708,"src":"2690:13:53","typeDescriptions":{"typeIdentifier":"t_contract$_IRecoveryMode_$708","typeString":"contract IRecoveryMode"}},"id":3970,"nodeType":"InheritanceSpecifier","src":"2690:13:53"},{"baseName":{"id":3971,"name":"BasePoolAuthorization","nodeType":"UserDefinedTypeName","referencedDeclaration":3959,"src":"2705:21:53","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3959","typeString":"contract BasePoolAuthorization"}},"id":3972,"nodeType":"InheritanceSpecifier","src":"2705:21:53"}],"contractDependencies":[708,1502,3959,4423],"contractKind":"contract","documentation":{"id":3968,"nodeType":"StructuredDocumentation","src":"1143:1512:53","text":" @notice Handle storage and state changes for pools that support \"Recovery Mode\".\n @dev This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds\n in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing\n them to revert).\n Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window\n after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract\n will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation,\n until they are voluntarily or involuntarily unpaused.\n By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any\n time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever\n condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather,\n a special \"clean\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally.\n In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation\n that can fail in extreme circumstances), and no protocol fees are collected.\n It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error."},"fullyImplemented":false,"id":4100,"linearizedBaseContracts":[4100,3959,4423,1502,708],"name":"RecoveryMode","nodeType":"ContractDefinition","nodes":[{"id":3975,"libraryName":{"id":3973,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"2739:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2733:29:53","typeName":{"id":3974,"name":"uint256","nodeType":"ElementaryTypeName","src":"2754:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":3978,"libraryName":{"id":3976,"name":"BasePoolUserData","nodeType":"UserDefinedTypeName","referencedDeclaration":639,"src":"2773:16:53","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolUserData_$639","typeString":"library BasePoolUserData"}},"nodeType":"UsingForDirective","src":"2767:33:53","typeName":{"id":3977,"name":"bytes","nodeType":"ElementaryTypeName","src":"2794:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":false,"id":3980,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":4100,"src":"2806:31:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":3979,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2806:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":3987,"nodeType":"Block","src":"2950:54:53","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3983,"name":"_ensureNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4074,"src":"2960:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2960:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3985,"nodeType":"ExpressionStatement","src":"2960:26:53"},{"id":3986,"nodeType":"PlaceholderStatement","src":"2996:1:53"}]},"documentation":{"id":3981,"nodeType":"StructuredDocumentation","src":"2844:68:53","text":" @dev Reverts if the contract is in Recovery Mode."},"id":3988,"name":"whenNotInRecoveryMode","nodeType":"ModifierDefinition","parameters":{"id":3982,"nodeType":"ParameterList","parameters":[],"src":"2947:2:53"},"src":"2917:87:53","virtual":false,"visibility":"internal"},{"body":{"id":3997,"nodeType":"Block","src":"3036:31:53","statements":[{"expression":{"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3993,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"3046:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3994,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"3055:5:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"3046:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":3996,"nodeType":"ExpressionStatement","src":"3046:14:53"}]},"id":3998,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":3998,"src":"3022:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":3989,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3022:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3021:14:53"},"returnParameters":{"id":3992,"nodeType":"ParameterList","parameters":[],"src":"3036:0:53"},"scope":4100,"src":"3010:57:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[697],"body":{"id":4016,"nodeType":"Block","src":"3660:501:53","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4005,"name":"_ensureNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4074,"src":"4049:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4049:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4007,"nodeType":"ExpressionStatement","src":"4049:26:53"},{"expression":{"arguments":[{"hexValue":"74727565","id":4009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4103:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4008,"name":"_setRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4049,"src":"4086:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":4010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4086:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4011,"nodeType":"ExpressionStatement","src":"4086:22:53"},{"eventCall":{"arguments":[{"hexValue":"74727565","id":4013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4149:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4012,"name":"RecoveryModeStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4124:24:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4124:30:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4015,"nodeType":"EmitStatement","src":"4119:35:53"}]},"documentation":{"id":3999,"nodeType":"StructuredDocumentation","src":"3073:521:53","text":" @notice Enable recovery mode, which enables a special safe exit path for LPs.\n @dev Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may\n perform certain operations in a \"safer\" manner that is less likely to fail, in an attempt to keep the pool\n running, even in a pathological state. Unlike the Pause operation, which is only available during a short window\n after factory deployment, Recovery Mode can always be enabled."},"functionSelector":"54a844ba","id":4017,"implemented":true,"kind":"function","modifiers":[{"id":4003,"modifierName":{"id":4002,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"3647:12:53","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3647:12:53"}],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":4001,"nodeType":"OverrideSpecifier","overrides":[],"src":"3638:8:53"},"parameters":{"id":4000,"nodeType":"ParameterList","parameters":[],"src":"3626:2:53"},"returnParameters":{"id":4004,"nodeType":"ParameterList","parameters":[],"src":"3660:0:53"},"scope":4100,"src":"3599:562:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[701],"body":{"id":4035,"nodeType":"Block","src":"4471:449:53","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4024,"name":"_ensureInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"4809:21:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4809:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4026,"nodeType":"ExpressionStatement","src":"4809:23:53"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":4028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4860:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4027,"name":"_setRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4049,"src":"4843:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4843:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4030,"nodeType":"ExpressionStatement","src":"4843:23:53"},{"eventCall":{"arguments":[{"hexValue":"66616c7365","id":4032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4907:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4031,"name":"RecoveryModeStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4882:24:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4882:31:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4034,"nodeType":"EmitStatement","src":"4877:36:53"}]},"documentation":{"id":4018,"nodeType":"StructuredDocumentation","src":"4167:237:53","text":" @notice Disable recovery mode, which disables the special safe exit path for LPs.\n @dev Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly\n necessary."},"functionSelector":"b7b814fc","id":4036,"implemented":true,"kind":"function","modifiers":[{"id":4022,"modifierName":{"id":4021,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"4458:12:53","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4458:12:53"}],"name":"disableRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":4020,"nodeType":"OverrideSpecifier","overrides":[],"src":"4449:8:53"},"parameters":{"id":4019,"nodeType":"ParameterList","parameters":[],"src":"4437:2:53"},"returnParameters":{"id":4023,"nodeType":"ParameterList","parameters":[],"src":"4471:0:53"},"scope":4100,"src":"4409:511:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[707],"documentation":{"id":4037,"nodeType":"StructuredDocumentation","src":"4990:100:53","text":" @notice Override to check storage and return whether the pool is in Recovery Mode"},"functionSelector":"b35056b8","id":4043,"implemented":false,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":4039,"nodeType":"OverrideSpecifier","overrides":[],"src":"5141:8:53"},"parameters":{"id":4038,"nodeType":"ParameterList","parameters":[],"src":"5118:2:53"},"returnParameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4043,"src":"5159:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4040,"name":"bool","nodeType":"ElementaryTypeName","src":"5159:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5158:6:53"},"scope":4100,"src":"5095:70:53","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":4044,"nodeType":"StructuredDocumentation","src":"5171:253:53","text":" @dev Override to update storage and emit the event\n No complex code or external calls that could fail should be placed in the implementations,\n which could jeopardize the ability to enable and disable Recovery Mode."},"id":4049,"implemented":false,"kind":"function","modifiers":[],"name":"_setRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":4047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4046,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":4049,"src":"5455:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4045,"name":"bool","nodeType":"ElementaryTypeName","src":"5455:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5454:14:53"},"returnParameters":{"id":4048,"nodeType":"ParameterList","parameters":[],"src":"5485:0:53"},"scope":4100,"src":"5429:57:53","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4060,"nodeType":"Block","src":"5616:72:53","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4054,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"5635:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5635:16:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4056,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5653:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"NOT_IN_RECOVERY_MODE","nodeType":"MemberAccess","referencedDeclaration":1364,"src":"5653:27:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4053,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5626:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5626:55:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4059,"nodeType":"ExpressionStatement","src":"5626:55:53"}]},"documentation":{"id":4050,"nodeType":"StructuredDocumentation","src":"5492:72:53","text":" @dev Reverts if the contract is not in Recovery Mode."},"id":4061,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureInRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":4051,"nodeType":"ParameterList","parameters":[],"src":"5599:2:53"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[],"src":"5616:0:53"},"scope":4100,"src":"5569:119:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4073,"nodeType":"Block","src":"5817:69:53","statements":[{"expression":{"arguments":[{"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5836:17:53","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4066,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"5837:14:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5837:16:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4069,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5855:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"IN_RECOVERY_MODE","nodeType":"MemberAccess","referencedDeclaration":1361,"src":"5855:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4065,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5827:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5827:52:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4072,"nodeType":"ExpressionStatement","src":"5827:52:53"}]},"documentation":{"id":4062,"nodeType":"StructuredDocumentation","src":"5694:68:53","text":" @dev Reverts if the contract is in Recovery Mode."},"id":4074,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureNotInRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":4063,"nodeType":"ParameterList","parameters":[],"src":"5800:2:53"},"returnParameters":{"id":4064,"nodeType":"ParameterList","parameters":[],"src":"5817:0:53"},"scope":4100,"src":"5767:119:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"documentation":{"id":4075,"nodeType":"StructuredDocumentation","src":"5892:409:53","text":" @dev A minimal proportional exit, suitable as is for most pools: though not for pools with preminted BPT\n or other special considerations. Designed to be overridden if a pool needs to do extra processing,\n such as scaling a stored invariant, or caching the new total supply.\n No complex code or external calls should be made in derived contracts that override this!"},"id":4090,"implemented":false,"kind":"function","modifiers":[],"name":"_doRecoveryModeExit","nodeType":"FunctionDefinition","parameters":{"id":4083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4078,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":4090,"src":"6344:25:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4076,"name":"uint256","nodeType":"ElementaryTypeName","src":"6344:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4077,"nodeType":"ArrayTypeName","src":"6344:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4080,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":4090,"src":"6379:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4079,"name":"uint256","nodeType":"ElementaryTypeName","src":"6379:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4082,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":4090,"src":"6408:21:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4081,"name":"bytes","nodeType":"ElementaryTypeName","src":"6408:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6334:101:53"},"returnParameters":{"id":4089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4090,"src":"6462:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"6462:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4088,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4090,"src":"6471:16:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4086,"name":"uint256","nodeType":"ElementaryTypeName","src":"6471:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4087,"nodeType":"ArrayTypeName","src":"6471:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6461:27:53"},"scope":4100,"src":"6306:183:53","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4098,"nodeType":"Block","src":"6671:30:53","statements":[{"expression":{"id":4096,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"6688:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":4095,"id":4097,"nodeType":"Return","src":"6681:13:53"}]},"documentation":{"id":4091,"nodeType":"StructuredDocumentation","src":"6495:119:53","text":" @dev Keep a reference to the Vault, for use in reentrancy protection function calls that require it."},"id":4099,"implemented":true,"kind":"function","modifiers":[],"name":"_getVault","nodeType":"FunctionDefinition","parameters":{"id":4092,"nodeType":"ParameterList","parameters":[],"src":"6637:2:53"},"returnParameters":{"id":4095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4099,"src":"6663:6:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":4093,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"6663:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"6662:8:53"},"scope":4100,"src":"6619:82:53","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4101,"src":"2656:4047:53"}],"src":"688:6016:53"},"id":53},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","exportedSymbols":{"BasePoolFactory":[4254]},"id":4255,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4102,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:54"},{"id":4103,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:54"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":4104,"nodeType":"ImportDirective","scope":4255,"sourceUnit":3865,"src":"747:65:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","id":4105,"nodeType":"ImportDirective","scope":4255,"sourceUnit":2301,"src":"813:101:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","id":4106,"nodeType":"ImportDirective","scope":4255,"sourceUnit":665,"src":"915:80:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","id":4107,"nodeType":"ImportDirective","scope":4255,"sourceUnit":4648,"src":"996:85:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":4108,"nodeType":"ImportDirective","scope":4255,"sourceUnit":5267,"src":"1082:88:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol","file":"./FactoryWidePauseWindow.sol","id":4109,"nodeType":"ImportDirective","scope":4255,"sourceUnit":4347,"src":"1172:38:54","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4111,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":664,"src":"2033:16:54","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"id":4112,"nodeType":"InheritanceSpecifier","src":"2033:16:54"},{"baseName":{"id":4113,"name":"BaseSplitCodeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":4647,"src":"2055:20:54","typeDescriptions":{"typeIdentifier":"t_contract$_BaseSplitCodeFactory_$4647","typeString":"contract BaseSplitCodeFactory"}},"id":4114,"nodeType":"InheritanceSpecifier","src":"2055:20:54"},{"baseName":{"id":4115,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"2081:23:54","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":4116,"nodeType":"InheritanceSpecifier","src":"2081:23:54"},{"baseName":{"id":4117,"name":"FactoryWidePauseWindow","nodeType":"UserDefinedTypeName","referencedDeclaration":4346,"src":"2110:22:54","typeDescriptions":{"typeIdentifier":"t_contract$_FactoryWidePauseWindow_$4346","typeString":"contract FactoryWidePauseWindow"}},"id":4118,"nodeType":"InheritanceSpecifier","src":"2110:22:54"}],"contractDependencies":[664,1502,4346,4423,4647,5266],"contractKind":"contract","documentation":{"id":4110,"nodeType":"StructuredDocumentation","src":"1212:779:54","text":" @notice Base contract for Pool factories.\n Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary\n logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by\n the factory) is very powerful.\n @dev By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory\n contract would not be able to store it.\n Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n prevent the creation of any future pools from the factory."},"fullyImplemented":true,"id":4254,"linearizedBaseContracts":[4254,4346,5266,4423,4647,664,1502],"name":"BasePoolFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4120,"mutability":"immutable","name":"_protocolFeeProvider","nodeType":"VariableDeclaration","scope":4254,"src":"2139:70:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":4119,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2287,"src":"2139:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"private"},{"constant":false,"id":4124,"mutability":"mutable","name":"_isPoolFromFactory","nodeType":"VariableDeclaration","scope":4254,"src":"2216:51:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4123,"keyType":{"id":4121,"name":"address","nodeType":"ElementaryTypeName","src":"2224:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2216:24:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":4122,"name":"bool","nodeType":"ElementaryTypeName","src":"2235:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":4126,"mutability":"mutable","name":"_disabled","nodeType":"VariableDeclaration","scope":4254,"src":"2273:22:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4125,"name":"bool","nodeType":"ElementaryTypeName","src":"2273:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"id":4130,"name":"PoolCreated","nodeType":"EventDefinition","parameters":{"id":4129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4128,"indexed":true,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4130,"src":"2320:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4127,"name":"address","nodeType":"ElementaryTypeName","src":"2320:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2319:22:54"},"src":"2302:40:54"},{"anonymous":false,"id":4132,"name":"FactoryDisabled","nodeType":"EventDefinition","parameters":{"id":4131,"nodeType":"ParameterList","parameters":[],"src":"2368:2:54"},"src":"2347:24:54"},{"body":{"id":4159,"nodeType":"Block","src":"2762:59:54","statements":[{"expression":{"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4155,"name":"_protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4120,"src":"2772:20:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4156,"name":"protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"2795:19:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"src":"2772:42:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"id":4158,"nodeType":"ExpressionStatement","src":"2772:42:54"}]},"id":4160,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4145,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"2624:12:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4146,"modifierName":{"id":4144,"name":"BaseSplitCodeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"2603:20:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSplitCodeFactory_$4647_$","typeString":"type(contract BaseSplitCodeFactory)"}},"nodeType":"ModifierInvocation","src":"2603:34:54"},{"arguments":[{"id":4148,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"2670:5:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":4149,"modifierName":{"id":4147,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"2646:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2646:30:54"},{"arguments":[{"id":4151,"name":"initialPauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"2708:26:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4152,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"2736:20:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4153,"modifierName":{"id":4150,"name":"FactoryWidePauseWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"2685:22:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FactoryWidePauseWindow_$4346_$","typeString":"type(contract FactoryWidePauseWindow)"}},"nodeType":"ModifierInvocation","src":"2685:72:54"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":4160,"src":"2398:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":4133,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2398:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":4136,"mutability":"mutable","name":"protocolFeeProvider","nodeType":"VariableDeclaration","scope":4160,"src":"2420:51:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":4135,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2287,"src":"2420:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"},{"constant":false,"id":4138,"mutability":"mutable","name":"initialPauseWindowDuration","nodeType":"VariableDeclaration","scope":4160,"src":"2481:34:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2481:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4140,"mutability":"mutable","name":"bufferPeriodDuration","nodeType":"VariableDeclaration","scope":4160,"src":"2525:28:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2525:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4142,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":4160,"src":"2563:25:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4141,"name":"bytes","nodeType":"ElementaryTypeName","src":"2563:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2388:206:54"},"returnParameters":{"id":4154,"nodeType":"ParameterList","parameters":[],"src":"2762:0:54"},"scope":4254,"src":"2377:444:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[653],"body":{"id":4172,"nodeType":"Block","src":"2906:48:54","statements":[{"expression":{"baseExpression":{"id":4168,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"2923:18:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4170,"indexExpression":{"id":4169,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4162,"src":"2942:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2923:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4167,"id":4171,"nodeType":"Return","src":"2916:31:54"}]},"functionSelector":"6634b753","id":4173,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nodeType":"FunctionDefinition","overrides":{"id":4164,"nodeType":"OverrideSpecifier","overrides":[],"src":"2882:8:54"},"parameters":{"id":4163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4162,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4173,"src":"2854:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"2854:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2853:14:54"},"returnParameters":{"id":4167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4173,"src":"2900:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4165,"name":"bool","nodeType":"ElementaryTypeName","src":"2900:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2899:6:54"},"scope":4254,"src":"2827:127:54","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[659],"body":{"id":4181,"nodeType":"Block","src":"3018:33:54","statements":[{"expression":{"id":4179,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4126,"src":"3035:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4178,"id":4180,"nodeType":"Return","src":"3028:16:54"}]},"functionSelector":"6c57f5a9","id":4182,"implemented":true,"kind":"function","modifiers":[],"name":"isDisabled","nodeType":"FunctionDefinition","overrides":{"id":4175,"nodeType":"OverrideSpecifier","overrides":[],"src":"2994:8:54"},"parameters":{"id":4174,"nodeType":"ParameterList","parameters":[],"src":"2979:2:54"},"returnParameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4177,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4182,"src":"3012:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4176,"name":"bool","nodeType":"ElementaryTypeName","src":"3012:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3011:6:54"},"scope":4254,"src":"2960:91:54","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[663],"body":{"id":4198,"nodeType":"Block","src":"3107:93:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4188,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"3117:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3117:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4190,"nodeType":"ExpressionStatement","src":"3117:16:54"},{"expression":{"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4191,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4126,"src":"3144:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3156:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3144:16:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4194,"nodeType":"ExpressionStatement","src":"3144:16:54"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4195,"name":"FactoryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4132,"src":"3176:15:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3176:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4197,"nodeType":"EmitStatement","src":"3171:22:54"}]},"functionSelector":"2f2770db","id":4199,"implemented":true,"kind":"function","modifiers":[{"id":4186,"modifierName":{"id":4185,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"3094:12:54","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3094:12:54"}],"name":"disable","nodeType":"FunctionDefinition","overrides":{"id":4184,"nodeType":"OverrideSpecifier","overrides":[],"src":"3085:8:54"},"parameters":{"id":4183,"nodeType":"ParameterList","parameters":[],"src":"3073:2:54"},"returnParameters":{"id":4187,"nodeType":"ParameterList","parameters":[],"src":"3107:0:54"},"scope":4254,"src":"3057:143:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4210,"nodeType":"Block","src":"3246:57:54","statements":[{"expression":{"arguments":[{"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3265:13:54","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4203,"name":"isDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"3266:10:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3266:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4206,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3280:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DISABLED","nodeType":"MemberAccess","referencedDeclaration":1070,"src":"3280:15:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4202,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3256:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3256:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4209,"nodeType":"ExpressionStatement","src":"3256:40:54"}]},"id":4211,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureEnabled","nodeType":"FunctionDefinition","parameters":{"id":4200,"nodeType":"ParameterList","parameters":[],"src":"3229:2:54"},"returnParameters":{"id":4201,"nodeType":"ParameterList","parameters":[],"src":"3246:0:54"},"scope":4254,"src":"3206:97:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4218,"nodeType":"Block","src":"3408:44:54","statements":[{"expression":{"id":4216,"name":"_protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4120,"src":"3425:20:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"functionReturnParameters":4215,"id":4217,"nodeType":"Return","src":"3418:27:54"}]},"functionSelector":"739238d6","id":4219,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeePercentagesProvider","nodeType":"FunctionDefinition","parameters":{"id":4212,"nodeType":"ParameterList","parameters":[],"src":"3351:2:54"},"returnParameters":{"id":4215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4214,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4219,"src":"3375:31:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":4213,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2287,"src":"3375:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"}],"src":"3374:33:54"},"scope":4254,"src":"3309:143:54","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4606],"body":{"id":4252,"nodeType":"Block","src":"3563:192:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4229,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"3573:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3573:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4231,"nodeType":"ExpressionStatement","src":"3573:16:54"},{"assignments":[4233],"declarations":[{"constant":false,"id":4233,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":4252,"src":"3600:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4232,"name":"address","nodeType":"ElementaryTypeName","src":"3600:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4239,"initialValue":{"arguments":[{"id":4236,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4221,"src":"3629:15:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4237,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"3646:4:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4234,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3615:5:54","typeDescriptions":{"typeIdentifier":"t_super$_BasePoolFactory_$4254","typeString":"contract super BasePoolFactory"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_create","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"3615:13:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes memory,bytes32) returns (address)"}},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3615:36:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3600:51:54"},{"expression":{"id":4244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4240,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"3662:18:54","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4242,"indexExpression":{"id":4241,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"3681:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3662:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3689:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3662:31:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"ExpressionStatement","src":"3662:31:54"},{"eventCall":{"arguments":[{"id":4247,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"3721:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4246,"name":"PoolCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"3709:11:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3709:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4249,"nodeType":"EmitStatement","src":"3704:22:54"},{"expression":{"id":4250,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"3744:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4228,"id":4251,"nodeType":"Return","src":"3737:11:54"}]},"id":4253,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","overrides":{"id":4225,"nodeType":"OverrideSpecifier","overrides":[],"src":"3536:8:54"},"parameters":{"id":4224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4221,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":4253,"src":"3475:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4220,"name":"bytes","nodeType":"ElementaryTypeName","src":"3475:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4223,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":4253,"src":"3505:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4222,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3505:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3474:44:54"},"returnParameters":{"id":4228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4227,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4253,"src":"3554:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4226,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3553:9:54"},"scope":4254,"src":"3458:297:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4255,"src":"1992:1765:54"}],"src":"688:3070:54"},"id":54},"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol","exportedSymbols":{"FactoryWidePauseWindow":[4346]},"id":4347,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4256,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:55"},{"id":4257,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:55"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4258,"nodeType":"ImportDirective","scope":4347,"sourceUnit":1492,"src":"747:90:55","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol","id":4259,"nodeType":"ImportDirective","scope":4347,"sourceUnit":5464,"src":"839:84:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"925:337:55","text":" @dev Utility to create Pool factories for Pools that use the `TemporarilyPausable` contract.\n By calling `TemporarilyPausable`'s constructor with the result of `getPauseConfiguration`, all Pools created by this\n factory will share the same Pause Window end time, after which both old and new Pools will not be pausable."},"fullyImplemented":true,"id":4346,"linearizedBaseContracts":[4346],"name":"FactoryWidePauseWindow","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4262,"mutability":"immutable","name":"_initialPauseWindowDuration","nodeType":"VariableDeclaration","scope":4346,"src":"1457:53:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4261,"name":"uint256","nodeType":"ElementaryTypeName","src":"1457:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4264,"mutability":"immutable","name":"_bufferPeriodDuration","nodeType":"VariableDeclaration","scope":4346,"src":"1516:47:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4263,"name":"uint256","nodeType":"ElementaryTypeName","src":"1516:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4266,"mutability":"immutable","name":"_poolsPauseWindowEndTime","nodeType":"VariableDeclaration","scope":4346,"src":"1699:50:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4265,"name":"uint256","nodeType":"ElementaryTypeName","src":"1699:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":4306,"nodeType":"Block","src":"1834:930:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4274,"name":"initialPauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"2268:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4275,"name":"PausableConstants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2298:17:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PausableConstants_$5463_$","typeString":"type(library PausableConstants)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_PAUSE_WINDOW_DURATION","nodeType":"MemberAccess","referencedDeclaration":5459,"src":"2298:43:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2268:73:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4278,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2355:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_PAUSE_WINDOW_DURATION","nodeType":"MemberAccess","referencedDeclaration":1262,"src":"2355:32:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4273,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2246:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2246:151:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4281,"nodeType":"ExpressionStatement","src":"2246:151:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4283,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"2429:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":4284,"name":"PausableConstants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2453:17:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PausableConstants_$5463_$","typeString":"type(library PausableConstants)"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_BUFFER_PERIOD_DURATION","nodeType":"MemberAccess","referencedDeclaration":5462,"src":"2453:44:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2429:68:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4287,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2511:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_BUFFER_PERIOD_DURATION","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2511:33:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4282,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2407:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2407:147:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4290,"nodeType":"ExpressionStatement","src":"2407:147:55"},{"expression":{"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4291,"name":"_initialPauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4262,"src":"2565:27:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4292,"name":"initialPauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"2595:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2565:56:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4294,"nodeType":"ExpressionStatement","src":"2565:56:55"},{"expression":{"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4295,"name":"_bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"2631:21:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4296,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"2655:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2631:44:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4298,"nodeType":"ExpressionStatement","src":"2631:44:55"},{"expression":{"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4299,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"2686:24:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4300,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2713:5:55","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2713:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4302,"name":"initialPauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"2731:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2713:44:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2686:71:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4305,"nodeType":"ExpressionStatement","src":"2686:71:55"}]},"id":4307,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4268,"mutability":"mutable","name":"initialPauseWindowDuration","nodeType":"VariableDeclaration","scope":4307,"src":"1768:34:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4267,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4270,"mutability":"mutable","name":"bufferPeriodDuration","nodeType":"VariableDeclaration","scope":4307,"src":"1804:28:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4269,"name":"uint256","nodeType":"ElementaryTypeName","src":"1804:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1767:66:55"},"returnParameters":{"id":4272,"nodeType":"ParameterList","parameters":[],"src":"1834:0:55"},"scope":4346,"src":"1756:1008:55","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4344,"nodeType":"Block","src":"3236:772:55","statements":[{"assignments":[4316],"declarations":[{"constant":false,"id":4316,"mutability":"mutable","name":"currentTime","nodeType":"VariableDeclaration","scope":4344,"src":"3246:19:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4319,"initialValue":{"expression":{"id":4317,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3268:5:55","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3268:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3246:37:55"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4320,"name":"currentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"3297:11:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4321,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"3311:24:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3297:38:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4342,"nodeType":"Block","src":"3755:247:55","statements":[{"expression":{"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4334,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"3930:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3952:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3930:23:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4337,"nodeType":"ExpressionStatement","src":"3930:23:55"},{"expression":{"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4338,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"3967:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3990:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3967:24:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4341,"nodeType":"ExpressionStatement","src":"3967:24:55"}]},"id":4343,"nodeType":"IfStatement","src":"3293:709:55","trueBody":{"id":4333,"nodeType":"Block","src":"3337:412:55","statements":[{"expression":{"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4323,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"3585:19:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4324,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"3607:24:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4325,"name":"currentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"3634:11:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3607:38:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3585:60:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4328,"nodeType":"ExpressionStatement","src":"3585:60:55"},{"expression":{"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4329,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"3694:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4330,"name":"_bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"3717:21:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3694:44:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4332,"nodeType":"ExpressionStatement","src":"3694:44:55"}]}}]},"documentation":{"id":4308,"nodeType":"StructuredDocumentation","src":"2770:348:55","text":" @dev Returns the current `TemporarilyPausable` configuration that will be applied to Pools created by this\n factory.\n `pauseWindowDuration` will decrease over time until it reaches zero, at which point both it and\n `bufferPeriodDuration` will be zero forever, meaning deployed Pools will not be pausable."},"functionSelector":"2da47c40","id":4345,"implemented":true,"kind":"function","modifiers":[],"name":"getPauseConfiguration","nodeType":"FunctionDefinition","parameters":{"id":4309,"nodeType":"ParameterList","parameters":[],"src":"3153:2:55"},"returnParameters":{"id":4314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4311,"mutability":"mutable","name":"pauseWindowDuration","nodeType":"VariableDeclaration","scope":4345,"src":"3177:27:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4310,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4313,"mutability":"mutable","name":"bufferPeriodDuration","nodeType":"VariableDeclaration","scope":4345,"src":"3206:28:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4312,"name":"uint256","nodeType":"ElementaryTypeName","src":"3206:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:59:55"},"scope":4346,"src":"3123:885:55","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":4347,"src":"1263:2747:55"}],"src":"688:3323:55"},"id":55},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[4423]},"id":4424,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4348,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:56"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4349,"nodeType":"ImportDirective","scope":4424,"sourceUnit":1492,"src":"713:90:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":4350,"nodeType":"ImportDirective","scope":4424,"sourceUnit":1503,"src":"804:91:56","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4352,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1502,"src":"1327:15:56","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1502","typeString":"contract IAuthentication"}},"id":4353,"nodeType":"InheritanceSpecifier","src":"1327:15:56"}],"contractDependencies":[1502],"contractKind":"contract","documentation":{"id":4351,"nodeType":"StructuredDocumentation","src":"897:393:56","text":" @dev Building block for performing access control on external functions.\n This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n to external functions to only make them callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":4423,"linearizedBaseContracts":[4423,1502],"name":"Authentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4355,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":4423,"src":"1349:48:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4354,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1349:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":4365,"nodeType":"Block","src":"2039:63:56","statements":[{"expression":{"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4361,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"2049:22:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4362,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"2074:21:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2049:46:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4364,"nodeType":"ExpressionStatement","src":"2049:46:56"}]},"documentation":{"id":4356,"nodeType":"StructuredDocumentation","src":"1404:587:56","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":4366,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"actionIdDisambiguator","nodeType":"VariableDeclaration","scope":4366,"src":"2008:29:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2008:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2007:31:56"},"returnParameters":{"id":4360,"nodeType":"ParameterList","parameters":[],"src":"2039:0:56"},"scope":4423,"src":"1996:106:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4373,"nodeType":"Block","src":"2266:49:56","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4369,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"2276:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:21:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4371,"nodeType":"ExpressionStatement","src":"2276:21:56"},{"id":4372,"nodeType":"PlaceholderStatement","src":"2307:1:56"}]},"documentation":{"id":4367,"nodeType":"StructuredDocumentation","src":"2108:129:56","text":" @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":4374,"name":"authenticate","nodeType":"ModifierDefinition","parameters":{"id":4368,"nodeType":"ParameterList","parameters":[],"src":"2263:2:56"},"src":"2242:73:56","virtual":false,"visibility":"internal"},{"body":{"id":4395,"nodeType":"Block","src":"2465:136:56","statements":[{"assignments":[4379],"declarations":[{"constant":false,"id":4379,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4395,"src":"2475:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4378,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2475:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4384,"initialValue":{"arguments":[{"expression":{"id":4381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2506:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sig","nodeType":"MemberAccess","src":"2506:7:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4380,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"2494:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:20:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2475:39:56"},{"expression":{"arguments":[{"arguments":[{"id":4387,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"2545:8:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":4388,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:56","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4386,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"2533:11:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:33:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4391,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2568:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":1253,"src":"2568:25:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4385,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2524:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:70:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4394,"nodeType":"ExpressionStatement","src":"2524:70:56"}]},"documentation":{"id":4375,"nodeType":"StructuredDocumentation","src":"2321:94:56","text":" @dev Reverts unless the caller is allowed to call the entry point function."},"id":4396,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nodeType":"FunctionDefinition","parameters":{"id":4376,"nodeType":"ParameterList","parameters":[],"src":"2448:2:56"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[],"src":"2465:0:56"},"scope":4423,"src":"2420:181:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1501],"body":{"id":4412,"nodeType":"Block","src":"2684:353:56","statements":[{"expression":{"arguments":[{"arguments":[{"id":4407,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"2996:22:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4408,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"3020:8:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4405,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2979:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2979:16:56","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4404,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2969:9:56","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:61:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4403,"id":4411,"nodeType":"Return","src":"2962:68:56"}]},"functionSelector":"851c1bb3","id":4413,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":4400,"nodeType":"OverrideSpecifier","overrides":[],"src":"2657:8:56"},"parameters":{"id":4399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4398,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":4413,"src":"2628:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4397,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2628:6:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2627:17:56"},"returnParameters":{"id":4403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4413,"src":"2675:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:9:56"},"scope":4423,"src":"2607:430:56","stateMutability":"view","virtual":false,"visibility":"public"},{"id":4422,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":4418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4415,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4422,"src":"3064:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4417,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":4422,"src":"3082:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4416,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3063:32:56"},"returnParameters":{"id":4421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4420,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4422,"src":"3127:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4419,"name":"bool","nodeType":"ElementaryTypeName","src":"3127:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3126:6:56"},"scope":4423,"src":"3043:90:56","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4424,"src":"1291:1844:56"}],"src":"688:2448:56"},"id":56},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","exportedSymbols":{"BaseSplitCodeFactory":[4647]},"id":4648,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4425,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:57"},{"id":4426,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:57"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol","file":"./CodeDeployer.sol","id":4427,"nodeType":"ImportDirective","scope":4648,"sourceUnit":4681,"src":"747:28:57","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":4428,"nodeType":"StructuredDocumentation","src":"777:294:57","text":" @dev Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when\n the contract's creation code grows close to 24kB.\n Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB."},"fullyImplemented":true,"id":4647,"linearizedBaseContracts":[4647],"name":"BaseSplitCodeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4430,"mutability":"immutable","name":"_creationCodeContractA","nodeType":"VariableDeclaration","scope":4647,"src":"1529:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4429,"name":"address","nodeType":"ElementaryTypeName","src":"1529:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":4432,"mutability":"immutable","name":"_creationCodeSizeA","nodeType":"VariableDeclaration","scope":4647,"src":"1583:44:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4431,"name":"uint256","nodeType":"ElementaryTypeName","src":"1583:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4434,"mutability":"immutable","name":"_creationCodeContractB","nodeType":"VariableDeclaration","scope":4647,"src":"1634:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4433,"name":"address","nodeType":"ElementaryTypeName","src":"1634:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":4436,"mutability":"immutable","name":"_creationCodeSizeB","nodeType":"VariableDeclaration","scope":4647,"src":"1688:44:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4435,"name":"uint256","nodeType":"ElementaryTypeName","src":"1688:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":4493,"nodeType":"Block","src":"1905:2624:57","statements":[{"assignments":[4443],"declarations":[{"constant":false,"id":4443,"mutability":"mutable","name":"creationCodeSize","nodeType":"VariableDeclaration","scope":4493,"src":"1915:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4442,"name":"uint256","nodeType":"ElementaryTypeName","src":"1915:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4446,"initialValue":{"expression":{"id":4444,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"1942:12:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1942:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1915:46:57"},{"assignments":[4448],"declarations":[{"constant":false,"id":4448,"mutability":"mutable","name":"creationCodeSizeA","nodeType":"VariableDeclaration","scope":4493,"src":"2289:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4447,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4452,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4449,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"2317:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2336:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2317:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2289:48:57"},{"expression":{"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4453,"name":"_creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"2347:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4454,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4448,"src":"2368:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2347:38:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4456,"nodeType":"ExpressionStatement","src":"2347:38:57"},{"assignments":[4458],"declarations":[{"constant":false,"id":4458,"mutability":"mutable","name":"creationCodeSizeB","nodeType":"VariableDeclaration","scope":4493,"src":"2396:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4457,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4462,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4459,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"2424:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4460,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4448,"src":"2443:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2424:36:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2396:64:57"},{"expression":{"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4463,"name":"_creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"2470:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4464,"name":"creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"2491:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2470:38:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4466,"nodeType":"ExpressionStatement","src":"2470:38:57"},{"assignments":[4468],"declarations":[{"constant":false,"id":4468,"mutability":"mutable","name":"creationCodeA","nodeType":"VariableDeclaration","scope":4493,"src":"3071:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4467,"name":"bytes","nodeType":"ElementaryTypeName","src":"3071:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4469,"nodeType":"VariableDeclarationStatement","src":"3071:26:57"},{"AST":{"nodeType":"YulBlock","src":"3116:106:57","statements":[{"nodeType":"YulAssignment","src":"3130:29:57","value":{"name":"creationCode","nodeType":"YulIdentifier","src":"3147:12:57"},"variableNames":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"3130:13:57"}]},{"expression":{"arguments":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"3179:13:57"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"3194:17:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3172:6:57"},"nodeType":"YulFunctionCall","src":"3172:40:57"},"nodeType":"YulExpressionStatement","src":"3172:40:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4439,"isOffset":false,"isSlot":false,"src":"3147:12:57","valueSize":1},{"declaration":4468,"isOffset":false,"isSlot":false,"src":"3130:13:57","valueSize":1},{"declaration":4468,"isOffset":false,"isSlot":false,"src":"3179:13:57","valueSize":1},{"declaration":4448,"isOffset":false,"isSlot":false,"src":"3194:17:57","valueSize":1}],"id":4470,"nodeType":"InlineAssembly","src":"3107:115:57"},{"expression":{"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4471,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"3322:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4474,"name":"creationCodeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4468,"src":"3367:13:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4472,"name":"CodeDeployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"3347:12:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CodeDeployer_$4680_$","typeString":"type(library CodeDeployer)"}},"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":4679,"src":"3347:19:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3347:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3322:59:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4477,"nodeType":"ExpressionStatement","src":"3322:59:57"},{"assignments":[4479],"declarations":[{"constant":false,"id":4479,"mutability":"mutable","name":"creationCodeB","nodeType":"VariableDeclaration","scope":4493,"src":"3669:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4478,"name":"bytes","nodeType":"ElementaryTypeName","src":"3669:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4480,"nodeType":"VariableDeclarationStatement","src":"3669:26:57"},{"assignments":[4482],"declarations":[{"constant":false,"id":4482,"mutability":"mutable","name":"lastByteA","nodeType":"VariableDeclaration","scope":4493,"src":"3705:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4481,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3705:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4483,"nodeType":"VariableDeclarationStatement","src":"3705:17:57"},{"AST":{"nodeType":"YulBlock","src":"3742:323:57","statements":[{"nodeType":"YulAssignment","src":"3903:53:57","value":{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"3924:12:57"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"3938:17:57"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3920:3:57"},"nodeType":"YulFunctionCall","src":"3920:36:57"},"variableNames":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"3903:13:57"}]},{"nodeType":"YulAssignment","src":"3969:33:57","value":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"3988:13:57"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3982:5:57"},"nodeType":"YulFunctionCall","src":"3982:20:57"},"variableNames":[{"name":"lastByteA","nodeType":"YulIdentifier","src":"3969:9:57"}]},{"expression":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"4022:13:57"},{"name":"creationCodeSizeB","nodeType":"YulIdentifier","src":"4037:17:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4015:6:57"},"nodeType":"YulFunctionCall","src":"4015:40:57"},"nodeType":"YulExpressionStatement","src":"4015:40:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4439,"isOffset":false,"isSlot":false,"src":"3924:12:57","valueSize":1},{"declaration":4479,"isOffset":false,"isSlot":false,"src":"3903:13:57","valueSize":1},{"declaration":4479,"isOffset":false,"isSlot":false,"src":"3988:13:57","valueSize":1},{"declaration":4479,"isOffset":false,"isSlot":false,"src":"4022:13:57","valueSize":1},{"declaration":4448,"isOffset":false,"isSlot":false,"src":"3938:17:57","valueSize":1},{"declaration":4458,"isOffset":false,"isSlot":false,"src":"4037:17:57","valueSize":1},{"declaration":4482,"isOffset":false,"isSlot":false,"src":"3969:9:57","valueSize":1}],"id":4484,"nodeType":"InlineAssembly","src":"3733:332:57"},{"expression":{"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4485,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"4215:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4488,"name":"creationCodeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4479,"src":"4260:13:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4486,"name":"CodeDeployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"4240:12:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CodeDeployer_$4680_$","typeString":"type(library CodeDeployer)"}},"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":4679,"src":"4240:19:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4240:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4215:59:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4491,"nodeType":"ExpressionStatement","src":"4215:59:57"},{"AST":{"nodeType":"YulBlock","src":"4415:108:57","statements":[{"expression":{"arguments":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"4436:13:57"},{"name":"creationCodeSize","nodeType":"YulIdentifier","src":"4451:16:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4429:6:57"},"nodeType":"YulFunctionCall","src":"4429:39:57"},"nodeType":"YulExpressionStatement","src":"4429:39:57"},{"expression":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"4488:13:57"},{"name":"lastByteA","nodeType":"YulIdentifier","src":"4503:9:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4481:6:57"},"nodeType":"YulFunctionCall","src":"4481:32:57"},"nodeType":"YulExpressionStatement","src":"4481:32:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4468,"isOffset":false,"isSlot":false,"src":"4436:13:57","valueSize":1},{"declaration":4479,"isOffset":false,"isSlot":false,"src":"4488:13:57","valueSize":1},{"declaration":4443,"isOffset":false,"isSlot":false,"src":"4451:16:57","valueSize":1},{"declaration":4482,"isOffset":false,"isSlot":false,"src":"4503:9:57","valueSize":1}],"id":4492,"nodeType":"InlineAssembly","src":"4406:117:57"}]},"documentation":{"id":4437,"nodeType":"StructuredDocumentation","src":"1739:122:57","text":" @dev The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`."},"id":4494,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4439,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":4494,"src":"1878:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4438,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1877:27:57"},"returnParameters":{"id":4441,"nodeType":"ParameterList","parameters":[],"src":"1905:0:57"},"scope":4647,"src":"1866:2663:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4506,"nodeType":"Block","src":"4758:72:57","statements":[{"expression":{"components":[{"id":4502,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"4776:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4503,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"4800:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4504,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4775:48:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"functionReturnParameters":4501,"id":4505,"nodeType":"Return","src":"4768:55:57"}]},"documentation":{"id":4495,"nodeType":"StructuredDocumentation","src":"4535:123:57","text":" @dev Returns the two addresses where the creation code of the contract crated by this factory is stored."},"functionSelector":"174481fa","id":4507,"implemented":true,"kind":"function","modifiers":[],"name":"getCreationCodeContracts","nodeType":"FunctionDefinition","parameters":{"id":4496,"nodeType":"ParameterList","parameters":[],"src":"4696:2:57"},"returnParameters":{"id":4501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4498,"mutability":"mutable","name":"contractA","nodeType":"VariableDeclaration","scope":4507,"src":"4720:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4497,"name":"address","nodeType":"ElementaryTypeName","src":"4720:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4500,"mutability":"mutable","name":"contractB","nodeType":"VariableDeclaration","scope":4507,"src":"4739:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4499,"name":"address","nodeType":"ElementaryTypeName","src":"4739:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4719:38:57"},"scope":4647,"src":"4663:167:57","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4517,"nodeType":"Block","src":"4990:52:57","statements":[{"expression":{"arguments":[{"hexValue":"","id":4514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5032:2:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":4513,"name":"_getCreationCodeWithArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"5007:24:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bytes memory)"}},"id":4515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5007:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4512,"id":4516,"nodeType":"Return","src":"5000:35:57"}]},"documentation":{"id":4508,"nodeType":"StructuredDocumentation","src":"4836:87:57","text":" @dev Returns the creation code of the contract this factory creates."},"functionSelector":"00c194db","id":4518,"implemented":true,"kind":"function","modifiers":[],"name":"getCreationCode","nodeType":"FunctionDefinition","parameters":{"id":4509,"nodeType":"ParameterList","parameters":[],"src":"4952:2:57"},"returnParameters":{"id":4512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4511,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4518,"src":"4976:12:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4510,"name":"bytes","nodeType":"ElementaryTypeName","src":"4976:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4975:14:57"},"scope":4647,"src":"4928:114:57","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4573,"nodeType":"Block","src":"5277:2587:57","statements":[{"assignments":[4527],"declarations":[{"constant":false,"id":4527,"mutability":"mutable","name":"creationCodeContractA","nodeType":"VariableDeclaration","scope":4573,"src":"6088:29:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4526,"name":"address","nodeType":"ElementaryTypeName","src":"6088:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4529,"initialValue":{"id":4528,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"6120:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6088:54:57"},{"assignments":[4531],"declarations":[{"constant":false,"id":4531,"mutability":"mutable","name":"creationCodeSizeA","nodeType":"VariableDeclaration","scope":4573,"src":"6152:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4530,"name":"uint256","nodeType":"ElementaryTypeName","src":"6152:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4533,"initialValue":{"id":4532,"name":"_creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"6180:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6152:46:57"},{"assignments":[4535],"declarations":[{"constant":false,"id":4535,"mutability":"mutable","name":"creationCodeContractB","nodeType":"VariableDeclaration","scope":4573,"src":"6208:29:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4534,"name":"address","nodeType":"ElementaryTypeName","src":"6208:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4537,"initialValue":{"id":4536,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4434,"src":"6240:22:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6208:54:57"},{"assignments":[4539],"declarations":[{"constant":false,"id":4539,"mutability":"mutable","name":"creationCodeSizeB","nodeType":"VariableDeclaration","scope":4573,"src":"6272:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4538,"name":"uint256","nodeType":"ElementaryTypeName","src":"6272:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4541,"initialValue":{"id":4540,"name":"_creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"6300:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6272:46:57"},{"assignments":[4543],"declarations":[{"constant":false,"id":4543,"mutability":"mutable","name":"creationCodeSize","nodeType":"VariableDeclaration","scope":4573,"src":"6329:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4542,"name":"uint256","nodeType":"ElementaryTypeName","src":"6329:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4547,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4544,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"6356:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4545,"name":"creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4539,"src":"6376:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6356:37:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6329:64:57"},{"assignments":[4549],"declarations":[{"constant":false,"id":4549,"mutability":"mutable","name":"constructorArgsSize","nodeType":"VariableDeclaration","scope":4573,"src":"6403:27:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4548,"name":"uint256","nodeType":"ElementaryTypeName","src":"6403:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4552,"initialValue":{"expression":{"id":4550,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4521,"src":"6433:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6433:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6403:52:57"},{"assignments":[4554],"declarations":[{"constant":false,"id":4554,"mutability":"mutable","name":"codeSize","nodeType":"VariableDeclaration","scope":4573,"src":"6466:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4553,"name":"uint256","nodeType":"ElementaryTypeName","src":"6466:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4558,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4555,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"6485:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4556,"name":"constructorArgsSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"6504:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6485:38:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6466:57:57"},{"AST":{"nodeType":"YulBlock","src":"6543:750:57","statements":[{"nodeType":"YulAssignment","src":"6793:19:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6807:4:57","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6801:5:57"},"nodeType":"YulFunctionCall","src":"6801:11:57"},"variableNames":[{"name":"code","nodeType":"YulIdentifier","src":"6793:4:57"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:4:57","type":"","value":"0x40"},{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"6842:4:57"},{"arguments":[{"name":"codeSize","nodeType":"YulIdentifier","src":"6852:8:57"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:57","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6848:3:57"},"nodeType":"YulFunctionCall","src":"6848:17:57"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6838:3:57"},"nodeType":"YulFunctionCall","src":"6838:28:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6825:6:57"},"nodeType":"YulFunctionCall","src":"6825:42:57"},"nodeType":"YulExpressionStatement","src":"6825:42:57"},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"6967:4:57"},{"name":"codeSize","nodeType":"YulIdentifier","src":"6973:8:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6960:6:57"},"nodeType":"YulFunctionCall","src":"6960:22:57"},"nodeType":"YulExpressionStatement","src":"6960:22:57"},{"nodeType":"YulVariableDeclaration","src":"7069:30:57","value":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"7090:4:57"},{"kind":"number","nodeType":"YulLiteral","src":"7096:2:57","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7086:3:57"},"nodeType":"YulFunctionCall","src":"7086:13:57"},"variables":[{"name":"dataStart","nodeType":"YulTypedName","src":"7073:9:57","type":""}]},{"expression":{"arguments":[{"name":"creationCodeContractA","nodeType":"YulIdentifier","src":"7124:21:57"},{"name":"dataStart","nodeType":"YulIdentifier","src":"7147:9:57"},{"kind":"number","nodeType":"YulLiteral","src":"7158:1:57","type":"","value":"0"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"7161:17:57"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"7112:11:57"},"nodeType":"YulFunctionCall","src":"7112:67:57"},"nodeType":"YulExpressionStatement","src":"7112:67:57"},{"expression":{"arguments":[{"name":"creationCodeContractB","nodeType":"YulIdentifier","src":"7204:21:57"},{"arguments":[{"name":"dataStart","nodeType":"YulIdentifier","src":"7231:9:57"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"7242:17:57"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7227:3:57"},"nodeType":"YulFunctionCall","src":"7227:33:57"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:57","type":"","value":"0"},{"name":"creationCodeSizeB","nodeType":"YulIdentifier","src":"7265:17:57"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"7192:11:57"},"nodeType":"YulFunctionCall","src":"7192:91:57"},"nodeType":"YulExpressionStatement","src":"7192:91:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4524,"isOffset":false,"isSlot":false,"src":"6793:4:57","valueSize":1},{"declaration":4524,"isOffset":false,"isSlot":false,"src":"6842:4:57","valueSize":1},{"declaration":4524,"isOffset":false,"isSlot":false,"src":"6967:4:57","valueSize":1},{"declaration":4524,"isOffset":false,"isSlot":false,"src":"7090:4:57","valueSize":1},{"declaration":4554,"isOffset":false,"isSlot":false,"src":"6852:8:57","valueSize":1},{"declaration":4554,"isOffset":false,"isSlot":false,"src":"6973:8:57","valueSize":1},{"declaration":4527,"isOffset":false,"isSlot":false,"src":"7124:21:57","valueSize":1},{"declaration":4535,"isOffset":false,"isSlot":false,"src":"7204:21:57","valueSize":1},{"declaration":4531,"isOffset":false,"isSlot":false,"src":"7161:17:57","valueSize":1},{"declaration":4531,"isOffset":false,"isSlot":false,"src":"7242:17:57","valueSize":1},{"declaration":4539,"isOffset":false,"isSlot":false,"src":"7265:17:57","valueSize":1}],"id":4559,"nodeType":"InlineAssembly","src":"6534:759:57"},{"assignments":[4561],"declarations":[{"constant":false,"id":4561,"mutability":"mutable","name":"constructorArgsDataPtr","nodeType":"VariableDeclaration","scope":4573,"src":"7521:30:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4560,"name":"uint256","nodeType":"ElementaryTypeName","src":"7521:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4562,"nodeType":"VariableDeclarationStatement","src":"7521:30:57"},{"assignments":[4564],"declarations":[{"constant":false,"id":4564,"mutability":"mutable","name":"constructorArgsCodeDataPtr","nodeType":"VariableDeclaration","scope":4573,"src":"7561:34:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4563,"name":"uint256","nodeType":"ElementaryTypeName","src":"7561:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4565,"nodeType":"VariableDeclarationStatement","src":"7561:34:57"},{"AST":{"nodeType":"YulBlock","src":"7614:153:57","statements":[{"nodeType":"YulAssignment","src":"7628:50:57","value":{"arguments":[{"name":"constructorArgs","nodeType":"YulIdentifier","src":"7658:15:57"},{"kind":"number","nodeType":"YulLiteral","src":"7675:2:57","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7654:3:57"},"nodeType":"YulFunctionCall","src":"7654:24:57"},"variableNames":[{"name":"constructorArgsDataPtr","nodeType":"YulIdentifier","src":"7628:22:57"}]},{"nodeType":"YulAssignment","src":"7691:66:57","value":{"arguments":[{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"7729:4:57"},{"kind":"number","nodeType":"YulLiteral","src":"7735:2:57","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7725:3:57"},"nodeType":"YulFunctionCall","src":"7725:13:57"},{"name":"creationCodeSize","nodeType":"YulIdentifier","src":"7740:16:57"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7721:3:57"},"nodeType":"YulFunctionCall","src":"7721:36:57"},"variableNames":[{"name":"constructorArgsCodeDataPtr","nodeType":"YulIdentifier","src":"7691:26:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4524,"isOffset":false,"isSlot":false,"src":"7729:4:57","valueSize":1},{"declaration":4521,"isOffset":false,"isSlot":false,"src":"7658:15:57","valueSize":1},{"declaration":4564,"isOffset":false,"isSlot":false,"src":"7691:26:57","valueSize":1},{"declaration":4561,"isOffset":false,"isSlot":false,"src":"7628:22:57","valueSize":1},{"declaration":4543,"isOffset":false,"isSlot":false,"src":"7740:16:57","valueSize":1}],"id":4566,"nodeType":"InlineAssembly","src":"7605:162:57"},{"expression":{"arguments":[{"id":4568,"name":"constructorArgsCodeDataPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"7785:26:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4569,"name":"constructorArgsDataPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4561,"src":"7813:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4570,"name":"constructorArgsSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"7837:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4567,"name":"_memcpy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"7777:7:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:80:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4572,"nodeType":"ExpressionStatement","src":"7777:80:57"}]},"documentation":{"id":4519,"nodeType":"StructuredDocumentation","src":"5048:119:57","text":" @dev Returns the creation code that will result in a contract being deployed with `constructorArgs`."},"id":4574,"implemented":true,"kind":"function","modifiers":[],"name":"_getCreationCodeWithArgs","nodeType":"FunctionDefinition","parameters":{"id":4522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4521,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":4574,"src":"5206:28:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4520,"name":"bytes","nodeType":"ElementaryTypeName","src":"5206:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5205:30:57"},"returnParameters":{"id":4525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4524,"mutability":"mutable","name":"code","nodeType":"VariableDeclaration","scope":4574,"src":"5258:17:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4523,"name":"bytes","nodeType":"ElementaryTypeName","src":"5258:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5257:19:57"},"scope":4647,"src":"5172:2692:57","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4605,"nodeType":"Block","src":"8201:555:57","statements":[{"assignments":[4585],"declarations":[{"constant":false,"id":4585,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":4605,"src":"8211:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4584,"name":"bytes","nodeType":"ElementaryTypeName","src":"8211:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4589,"initialValue":{"arguments":[{"id":4587,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4577,"src":"8264:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4586,"name":"_getCreationCodeWithArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"8239:24:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bytes memory)"}},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8239:41:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8211:69:57"},{"assignments":[4591],"declarations":[{"constant":false,"id":4591,"mutability":"mutable","name":"destination","nodeType":"VariableDeclaration","scope":4605,"src":"8291:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4590,"name":"address","nodeType":"ElementaryTypeName","src":"8291:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4592,"nodeType":"VariableDeclarationStatement","src":"8291:19:57"},{"AST":{"nodeType":"YulBlock","src":"8329:99:57","statements":[{"nodeType":"YulAssignment","src":"8343:75:57","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8366:1:57","type":"","value":"0"},{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"8373:12:57"},{"kind":"number","nodeType":"YulLiteral","src":"8387:2:57","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8369:3:57"},"nodeType":"YulFunctionCall","src":"8369:21:57"},{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"8398:12:57"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8392:5:57"},"nodeType":"YulFunctionCall","src":"8392:19:57"},{"name":"salt","nodeType":"YulIdentifier","src":"8413:4:57"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"8358:7:57"},"nodeType":"YulFunctionCall","src":"8358:60:57"},"variableNames":[{"name":"destination","nodeType":"YulIdentifier","src":"8343:11:57"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4585,"isOffset":false,"isSlot":false,"src":"8373:12:57","valueSize":1},{"declaration":4585,"isOffset":false,"isSlot":false,"src":"8398:12:57","valueSize":1},{"declaration":4591,"isOffset":false,"isSlot":false,"src":"8343:11:57","valueSize":1},{"declaration":4579,"isOffset":false,"isSlot":false,"src":"8413:4:57","valueSize":1}],"id":4593,"nodeType":"InlineAssembly","src":"8320:108:57"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4594,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"8442:11:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8465:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8457:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4595,"name":"address","nodeType":"ElementaryTypeName","src":"8457:7:57","typeDescriptions":{}}},"id":4598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8457:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8442:25:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4602,"nodeType":"IfStatement","src":"8438:283:57","trueBody":{"id":4601,"nodeType":"Block","src":"8469:252:57","statements":[{"AST":{"nodeType":"YulBlock","src":"8597:114:57","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8630:1:57","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8633:1:57","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"8636:14:57"},"nodeType":"YulFunctionCall","src":"8636:16:57"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"8615:14:57"},"nodeType":"YulFunctionCall","src":"8615:38:57"},"nodeType":"YulExpressionStatement","src":"8615:38:57"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8677:1:57","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"8680:14:57"},"nodeType":"YulFunctionCall","src":"8680:16:57"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8670:6:57"},"nodeType":"YulFunctionCall","src":"8670:27:57"},"nodeType":"YulExpressionStatement","src":"8670:27:57"}]},"evmVersion":"istanbul","externalReferences":[],"id":4600,"nodeType":"InlineAssembly","src":"8588:123:57"}]}},{"expression":{"id":4603,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"8738:11:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4583,"id":4604,"nodeType":"Return","src":"8731:18:57"}]},"documentation":{"id":4575,"nodeType":"StructuredDocumentation","src":"7870:230:57","text":" @dev Deploys a contract with constructor arguments and a user-provided salt, using the create2 opcode.\n To create `constructorArgs`, call `abi.encode()` with the contract's constructor arguments, in order."},"id":4606,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","parameters":{"id":4580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4577,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":4606,"src":"8122:28:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4576,"name":"bytes","nodeType":"ElementaryTypeName","src":"8122:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4579,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":4606,"src":"8152:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8152:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8121:44:57"},"returnParameters":{"id":4583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4582,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4606,"src":"8192:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4581,"name":"address","nodeType":"ElementaryTypeName","src":"8192:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8191:9:57"},"scope":4647,"src":"8105:651:57","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4645,"nodeType":"Block","src":"8992:490:57","statements":[{"body":{"id":4631,"nodeType":"Block","src":"9081:136:57","statements":[{"AST":{"nodeType":"YulBlock","src":"9104:56:57","statements":[{"expression":{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9129:4:57"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9141:3:57"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9135:5:57"},"nodeType":"YulFunctionCall","src":"9135:10:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9122:6:57"},"nodeType":"YulFunctionCall","src":"9122:24:57"},"nodeType":"YulExpressionStatement","src":"9122:24:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4608,"isOffset":false,"isSlot":false,"src":"9129:4:57","valueSize":1},{"declaration":4610,"isOffset":false,"isSlot":false,"src":"9141:3:57","valueSize":1}],"id":4622,"nodeType":"InlineAssembly","src":"9095:65:57"},{"expression":{"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4623,"name":"dest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"9173:4:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9181:2:57","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9173:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4626,"nodeType":"ExpressionStatement","src":"9173:10:57"},{"expression":{"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4627,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"9197:3:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9204:2:57","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9197:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4630,"nodeType":"ExpressionStatement","src":"9197:9:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4615,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"9059:3:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":4616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9066:2:57","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9059:9:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4632,"loopExpression":{"expression":{"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4618,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"9070:3:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3332","id":4619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9077:2:57","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9070:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4621,"nodeType":"ExpressionStatement","src":"9070:9:57"},"nodeType":"ForStatement","src":"9052:165:57"},{"assignments":[4634],"declarations":[{"constant":false,"id":4634,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":4645,"src":"9259:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4633,"name":"uint256","nodeType":"ElementaryTypeName","src":"9259:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4643,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":4635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:3:57","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":4636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9280:2:57","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4637,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"9285:3:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9280:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4639,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9279:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9274:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9292:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9274:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9259:34:57"},{"AST":{"nodeType":"YulBlock","src":"9312:164:57","statements":[{"nodeType":"YulVariableDeclaration","src":"9326:41:57","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9351:3:57"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9345:5:57"},"nodeType":"YulFunctionCall","src":"9345:10:57"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"9361:4:57"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9357:3:57"},"nodeType":"YulFunctionCall","src":"9357:9:57"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9341:3:57"},"nodeType":"YulFunctionCall","src":"9341:26:57"},"variables":[{"name":"srcpart","nodeType":"YulTypedName","src":"9330:7:57","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9380:38:57","value":{"arguments":[{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9406:4:57"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9400:5:57"},"nodeType":"YulFunctionCall","src":"9400:11:57"},{"name":"mask","nodeType":"YulIdentifier","src":"9413:4:57"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9396:3:57"},"nodeType":"YulFunctionCall","src":"9396:22:57"},"variables":[{"name":"destpart","nodeType":"YulTypedName","src":"9384:8:57","type":""}]},{"expression":{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9438:4:57"},{"arguments":[{"name":"destpart","nodeType":"YulIdentifier","src":"9447:8:57"},{"name":"srcpart","nodeType":"YulIdentifier","src":"9457:7:57"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9444:2:57"},"nodeType":"YulFunctionCall","src":"9444:21:57"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9431:6:57"},"nodeType":"YulFunctionCall","src":"9431:35:57"},"nodeType":"YulExpressionStatement","src":"9431:35:57"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4608,"isOffset":false,"isSlot":false,"src":"9406:4:57","valueSize":1},{"declaration":4608,"isOffset":false,"isSlot":false,"src":"9438:4:57","valueSize":1},{"declaration":4634,"isOffset":false,"isSlot":false,"src":"9361:4:57","valueSize":1},{"declaration":4634,"isOffset":false,"isSlot":false,"src":"9413:4:57","valueSize":1},{"declaration":4610,"isOffset":false,"isSlot":false,"src":"9351:3:57","valueSize":1}],"id":4644,"nodeType":"InlineAssembly","src":"9303:173:57"}]},"id":4646,"implemented":true,"kind":"function","modifiers":[],"name":"_memcpy","nodeType":"FunctionDefinition","parameters":{"id":4613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4608,"mutability":"mutable","name":"dest","nodeType":"VariableDeclaration","scope":4646,"src":"8918:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4607,"name":"uint256","nodeType":"ElementaryTypeName","src":"8918:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4610,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":4646,"src":"8940:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4609,"name":"uint256","nodeType":"ElementaryTypeName","src":"8940:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"len","nodeType":"VariableDeclaration","scope":4646,"src":"8961:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4611,"name":"uint256","nodeType":"ElementaryTypeName","src":"8961:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8908:70:57"},"returnParameters":{"id":4614,"nodeType":"ParameterList","parameters":[],"src":"8992:0:57"},"scope":4647,"src":"8892:590:57","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":4648,"src":"1072:8412:57"}],"src":"688:8797:57"},"id":57},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol","exportedSymbols":{"CodeDeployer":[4680]},"id":4681,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4649,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:58"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4650,"nodeType":"ImportDirective","scope":4681,"sourceUnit":1492,"src":"713:90:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4651,"nodeType":"StructuredDocumentation","src":"805:199:58","text":" @dev Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as\n contract code, which can be retrieved via the `extcodecopy` opcode."},"fullyImplemented":true,"id":4680,"linearizedBaseContracts":[4680],"name":"CodeDeployer","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4654,"mutability":"constant","name":"_DEPLOYER_CREATION_CODE","nodeType":"VariableDeclaration","scope":4680,"src":"2455:125:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2455:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307836303230333830333830363032303630303033393630303066336665666566656665666566656665666566656665666566656665666566656665666566656665","id":4653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2514:66:58","typeDescriptions":{"typeIdentifier":"t_rational_43478959162261259322985507790388014220090819270403161015765007512459448090366_by_1","typeString":"int_const 4347...(69 digits omitted)...0366"},"value":"0x602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe"},"visibility":"private"},{"body":{"id":4678,"nodeType":"Block","src":"2811:1292:58","statements":[{"assignments":[4663],"declarations":[{"constant":false,"id":4663,"mutability":"mutable","name":"deployerCreationCode","nodeType":"VariableDeclaration","scope":4678,"src":"2821:28:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2821:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4665,"initialValue":{"id":4664,"name":"_DEPLOYER_CREATION_CODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4654,"src":"2852:23:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2821:54:58"},{"AST":{"nodeType":"YulBlock","src":"3200:706:58","statements":[{"nodeType":"YulVariableDeclaration","src":"3214:29:58","value":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3238:4:58"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3232:5:58"},"nodeType":"YulFunctionCall","src":"3232:11:58"},"variables":[{"name":"codeLength","nodeType":"YulTypedName","src":"3218:10:58","type":""}]},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3472:4:58"},{"name":"deployerCreationCode","nodeType":"YulIdentifier","src":"3478:20:58"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3465:6:58"},"nodeType":"YulFunctionCall","src":"3465:34:58"},"nodeType":"YulExpressionStatement","src":"3465:34:58"},{"nodeType":"YulAssignment","src":"3721:51:58","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3743:1:58","type":"","value":"0"},{"name":"code","nodeType":"YulIdentifier","src":"3746:4:58"},{"arguments":[{"name":"codeLength","nodeType":"YulIdentifier","src":"3756:10:58"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:58","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3752:3:58"},"nodeType":"YulFunctionCall","src":"3752:19:58"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"3736:6:58"},"nodeType":"YulFunctionCall","src":"3736:36:58"},"variableNames":[{"name":"destination","nodeType":"YulIdentifier","src":"3721:11:58"}]},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3879:4:58"},{"name":"codeLength","nodeType":"YulIdentifier","src":"3885:10:58"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3872:6:58"},"nodeType":"YulFunctionCall","src":"3872:24:58"},"nodeType":"YulExpressionStatement","src":"3872:24:58"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4657,"isOffset":false,"isSlot":false,"src":"3238:4:58","valueSize":1},{"declaration":4657,"isOffset":false,"isSlot":false,"src":"3472:4:58","valueSize":1},{"declaration":4657,"isOffset":false,"isSlot":false,"src":"3746:4:58","valueSize":1},{"declaration":4657,"isOffset":false,"isSlot":false,"src":"3879:4:58","valueSize":1},{"declaration":4663,"isOffset":false,"isSlot":false,"src":"3478:20:58","valueSize":1},{"declaration":4660,"isOffset":false,"isSlot":false,"src":"3721:11:58","valueSize":1}],"id":4666,"nodeType":"InlineAssembly","src":"3191:715:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4668,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"4039:11:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4062:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4054:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4669,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:58","typeDescriptions":{}}},"id":4672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4054:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4039:25:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4674,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4066:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CODE_DEPLOYMENT_FAILED","nodeType":"MemberAccess","referencedDeclaration":1334,"src":"4066:29:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4667,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"4030:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4030:66:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4677,"nodeType":"ExpressionStatement","src":"4030:66:58"}]},"documentation":{"id":4655,"nodeType":"StructuredDocumentation","src":"2587:145:58","text":" @dev Deploys a contract with `code` as its code, returning the destination address.\n Reverts if deployment fails."},"id":4679,"implemented":true,"kind":"function","modifiers":[],"name":"deploy","nodeType":"FunctionDefinition","parameters":{"id":4658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4657,"mutability":"mutable","name":"code","nodeType":"VariableDeclaration","scope":4679,"src":"2753:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4656,"name":"bytes","nodeType":"ElementaryTypeName","src":"2753:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2752:19:58"},"returnParameters":{"id":4661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4660,"mutability":"mutable","name":"destination","nodeType":"VariableDeclaration","scope":4679,"src":"2790:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4659,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2789:21:58"},"scope":4680,"src":"2737:1366:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4681,"src":"1005:3100:58"}],"src":"688:3418:58"},"id":58},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","exportedSymbols":{"EOASignaturesValidator":[4860]},"id":4861,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4682,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:59"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4683,"nodeType":"ImportDirective","scope":4861,"sourceUnit":1492,"src":"713:90:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","id":4684,"nodeType":"ImportDirective","scope":4861,"sourceUnit":1521,"src":"804:96:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"../openzeppelin/EIP712.sol","id":4685,"nodeType":"ImportDirective","scope":4861,"sourceUnit":7733,"src":"902:36:59","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4687,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1520,"src":"1045:20:59","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1520","typeString":"contract ISignaturesValidator"}},"id":4688,"nodeType":"InheritanceSpecifier","src":"1045:20:59"},{"baseName":{"id":4689,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":7732,"src":"1067:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$7732","typeString":"contract EIP712"}},"id":4690,"nodeType":"InheritanceSpecifier","src":"1067:6:59"}],"contractDependencies":[1520,7732],"contractKind":"contract","documentation":{"id":4686,"nodeType":"StructuredDocumentation","src":"940:60:59","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":4860,"linearizedBaseContracts":[4860,7732,1520],"name":"EOASignaturesValidator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4694,"mutability":"mutable","name":"_nextNonce","nodeType":"VariableDeclaration","scope":4860,"src":"1130:47:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4693,"keyType":{"id":4691,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1130:27:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":4692,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"baseFunctions":[1511],"body":{"id":4703,"nodeType":"Block","src":"1253:44:59","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4700,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"1270:18:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:20:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4699,"id":4702,"nodeType":"Return","src":"1263:27:59"}]},"functionSelector":"ed24911d","id":4704,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":4696,"nodeType":"OverrideSpecifier","overrides":[],"src":"1226:8:59"},"parameters":{"id":4695,"nodeType":"ParameterList","parameters":[],"src":"1211:2:59"},"returnParameters":{"id":4699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4704,"src":"1244:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1244:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1243:9:59"},"scope":4860,"src":"1184:113:59","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1519],"body":{"id":4716,"nodeType":"Block","src":"1381:43:59","statements":[{"expression":{"baseExpression":{"id":4712,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"1398:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4714,"indexExpression":{"id":4713,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"1409:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1398:19:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4711,"id":4715,"nodeType":"Return","src":"1391:26:59"}]},"functionSelector":"90193b7c","id":4717,"implemented":true,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","overrides":{"id":4708,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:59"},"parameters":{"id":4707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4706,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4717,"src":"1325:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4705,"name":"address","nodeType":"ElementaryTypeName","src":"1325:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1324:17:59"},"returnParameters":{"id":4711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4710,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4717,"src":"1372:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:9:59"},"scope":4860,"src":"1303:121:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4740,"nodeType":"Block","src":"1588:107:59","statements":[{"expression":{"arguments":[{"id":4729,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"1627:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4730,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1636:10:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4731,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"1648:9:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"arguments":[{"id":4734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1664:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4733,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:59","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4732,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1659:4:59","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1659:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4737,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"1678:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4728,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[4741,4785],"referencedDeclaration":4785,"src":"1605:21:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:83:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":4727,"id":4739,"nodeType":"Return","src":"1598:90:59"}]},"id":4741,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4719,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4741,"src":"1470:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4718,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4721,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":4741,"src":"1495:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4723,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4741,"src":"1523:22:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4722,"name":"bytes","nodeType":"ElementaryTypeName","src":"1523:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4725,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":4741,"src":"1555:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4724,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:118:59"},"returnParameters":{"id":4727,"nodeType":"ParameterList","parameters":[],"src":"1588:0:59"},"scope":4860,"src":"1430:265:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4784,"nodeType":"Block","src":"1885:1030:59","statements":[{"assignments":[4755],"declarations":[{"constant":false,"id":4755,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":4784,"src":"1895:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4759,"initialValue":{"arguments":[{"id":4757,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4745,"src":"1929:10:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4756,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7724,"src":"1912:16:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:28:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1895:45:59"},{"expression":{"arguments":[{"arguments":[{"id":4762,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"1977:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4763,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"1986:6:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4764,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1994:9:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4761,"name":"_isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4837,"src":"1959:17:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1959:45:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4766,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"2006:9:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4760,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1950:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:66:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4768,"nodeType":"ExpressionStatement","src":"1950:66:59"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4770,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"2496:8:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":4771,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2508:5:59","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2508:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2496:27:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4774,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2525:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EXPIRED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1370,"src":"2525:24:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4769,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2487:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:63:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4777,"nodeType":"ExpressionStatement","src":"2487:63:59"},{"expression":{"id":4782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4778,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"2884:10:59","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4780,"indexExpression":{"id":4779,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"2895:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2884:19:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:1:59","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:24:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4783,"nodeType":"ExpressionStatement","src":"2884:24:59"}]},"id":4785,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4743,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4785,"src":"1741:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4742,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4745,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":4785,"src":"1766:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4744,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1766:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4747,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4785,"src":"1794:22:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4746,"name":"bytes","nodeType":"ElementaryTypeName","src":"1794:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4749,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":4785,"src":"1826:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4748,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4751,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":4785,"src":"1852:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:144:59"},"returnParameters":{"id":4753,"nodeType":"ParameterList","parameters":[],"src":"1885:0:59"},"scope":4860,"src":"1701:1214:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4836,"nodeType":"Block","src":"3072:725:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4797,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4791,"src":"3091:9:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3091:16:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":4799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3111:2:59","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"3091:22:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4801,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3115:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":4802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MALFORMED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"3115:26:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4796,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3082:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:60:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4804,"nodeType":"ExpressionStatement","src":"3082:60:59"},{"assignments":[4806],"declarations":[{"constant":false,"id":4806,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4836,"src":"3153:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4805,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3153:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4807,"nodeType":"VariableDeclarationStatement","src":"3153:9:59"},{"assignments":[4809],"declarations":[{"constant":false,"id":4809,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4836,"src":"3172:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4810,"nodeType":"VariableDeclarationStatement","src":"3172:9:59"},{"assignments":[4812],"declarations":[{"constant":false,"id":4812,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4836,"src":"3191:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4811,"name":"uint8","nodeType":"ElementaryTypeName","src":"3191:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":4813,"nodeType":"VariableDeclarationStatement","src":"3191:7:59"},{"AST":{"nodeType":"YulBlock","src":"3387:155:59","statements":[{"nodeType":"YulAssignment","src":"3401:32:59","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3416:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"3427:4:59","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:59"},"nodeType":"YulFunctionCall","src":"3412:20:59"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3406:5:59"},"nodeType":"YulFunctionCall","src":"3406:27:59"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3401:1:59"}]},{"nodeType":"YulAssignment","src":"3446:32:59","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3461:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"3472:4:59","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3457:3:59"},"nodeType":"YulFunctionCall","src":"3457:20:59"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3451:5:59"},"nodeType":"YulFunctionCall","src":"3451:27:59"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"3446:1:59"}]},{"nodeType":"YulAssignment","src":"3491:41:59","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3501:1:59","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3514:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"3525:4:59","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:59"},"nodeType":"YulFunctionCall","src":"3510:20:59"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3504:5:59"},"nodeType":"YulFunctionCall","src":"3504:27:59"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3496:4:59"},"nodeType":"YulFunctionCall","src":"3496:36:59"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3491:1:59"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4806,"isOffset":false,"isSlot":false,"src":"3401:1:59","valueSize":1},{"declaration":4809,"isOffset":false,"isSlot":false,"src":"3446:1:59","valueSize":1},{"declaration":4791,"isOffset":false,"isSlot":false,"src":"3416:9:59","valueSize":1},{"declaration":4791,"isOffset":false,"isSlot":false,"src":"3461:9:59","valueSize":1},{"declaration":4791,"isOffset":false,"isSlot":false,"src":"3514:9:59","valueSize":1},{"declaration":4812,"isOffset":false,"isSlot":false,"src":"3491:1:59","valueSize":1}],"id":4814,"nodeType":"InlineAssembly","src":"3378:164:59"},{"assignments":[4816],"declarations":[{"constant":false,"id":4816,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":4836,"src":"3552:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4815,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4823,"initialValue":{"arguments":[{"id":4818,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4789,"src":"3589:6:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4819,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4812,"src":"3597:1:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":4820,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4806,"src":"3600:1:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4821,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4809,"src":"3603:1:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4817,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3579:9:59","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3579:26:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3552:53:59"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4824,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4816,"src":"3728:16:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:59","typeDescriptions":{}}},"id":4828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:10:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3728:30:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4830,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4816,"src":"3762:16:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4831,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4787,"src":"3782:7:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:27:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3728:61:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3727:63:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4795,"id":4835,"nodeType":"Return","src":"3720:70:59"}]},"id":4837,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4787,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4837,"src":"2957:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4786,"name":"address","nodeType":"ElementaryTypeName","src":"2957:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4789,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":4837,"src":"2982:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4788,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4791,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4837,"src":"3006:22:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4790,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2947:87:59"},"returnParameters":{"id":4795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4794,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4837,"src":"3066:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4793,"name":"bool","nodeType":"ElementaryTypeName","src":"3066:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3065:6:59"},"scope":4860,"src":"2921:876:59","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4858,"nodeType":"Block","src":"3928:294:59","statements":[{"assignments":[4849],"declarations":[{"constant":false,"id":4849,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4858,"src":"3938:22:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4848,"name":"bytes","nodeType":"ElementaryTypeName","src":"3938:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4854,"initialValue":{"arguments":[{"hexValue":"3635","id":4852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3973:2:59","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"}],"id":4851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3963:9:59","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4850,"name":"bytes","nodeType":"ElementaryTypeName","src":"3967:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3963:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3938:38:59"},{"AST":{"nodeType":"YulBlock","src":"4051:138:59","statements":[{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4076:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"4087:2:59","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4072:3:59"},"nodeType":"YulFunctionCall","src":"4072:18:59"},{"name":"r","nodeType":"YulIdentifier","src":"4092:1:59"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4065:6:59"},"nodeType":"YulFunctionCall","src":"4065:29:59"},"nodeType":"YulExpressionStatement","src":"4065:29:59"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4118:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:59","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:59"},"nodeType":"YulFunctionCall","src":"4114:18:59"},{"name":"s","nodeType":"YulIdentifier","src":"4134:1:59"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4107:6:59"},"nodeType":"YulFunctionCall","src":"4107:29:59"},"nodeType":"YulExpressionStatement","src":"4107:29:59"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4161:9:59"},{"kind":"number","nodeType":"YulLiteral","src":"4172:2:59","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:59"},"nodeType":"YulFunctionCall","src":"4157:18:59"},{"name":"v","nodeType":"YulIdentifier","src":"4177:1:59"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"4149:7:59"},"nodeType":"YulFunctionCall","src":"4149:30:59"},"nodeType":"YulExpressionStatement","src":"4149:30:59"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4841,"isOffset":false,"isSlot":false,"src":"4092:1:59","valueSize":1},{"declaration":4843,"isOffset":false,"isSlot":false,"src":"4134:1:59","valueSize":1},{"declaration":4849,"isOffset":false,"isSlot":false,"src":"4076:9:59","valueSize":1},{"declaration":4849,"isOffset":false,"isSlot":false,"src":"4118:9:59","valueSize":1},{"declaration":4849,"isOffset":false,"isSlot":false,"src":"4161:9:59","valueSize":1},{"declaration":4839,"isOffset":false,"isSlot":false,"src":"4177:1:59","valueSize":1}],"id":4855,"nodeType":"InlineAssembly","src":"4042:147:59"},{"expression":{"id":4856,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"4206:9:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4847,"id":4857,"nodeType":"Return","src":"4199:16:59"}]},"id":4859,"implemented":true,"kind":"function","modifiers":[],"name":"_toArraySignature","nodeType":"FunctionDefinition","parameters":{"id":4844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4839,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4859,"src":"3839:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4838,"name":"uint8","nodeType":"ElementaryTypeName","src":"3839:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4841,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4859,"src":"3856:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4840,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3856:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4843,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4859,"src":"3875:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:59","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:61:59"},"returnParameters":{"id":4847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4859,"src":"3914:12:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4845,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3913:14:59"},"scope":4860,"src":"3803:419:59","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4861,"src":"1001:3223:59"}],"src":"688:3537:59"},"id":59},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","exportedSymbols":{"_asIAsset":[4876],"_findTokenIndex":[5060],"_insertSorted":[5018],"_sortTokens":[4923]},"id":5061,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4862,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:60"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4863,"nodeType":"ImportDirective","scope":5061,"sourceUnit":1492,"src":"713:90:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":4864,"nodeType":"ImportDirective","scope":5061,"sourceUnit":1723,"src":"804:87:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":4865,"nodeType":"ImportDirective","scope":5061,"sourceUnit":3152,"src":"892:65:60","symbolAliases":[],"unitAlias":""},{"body":{"id":4875,"nodeType":"Block","src":"1060:101:60","statements":[{"AST":{"nodeType":"YulBlock","src":"1127:32:60","statements":[{"nodeType":"YulAssignment","src":"1137:16:60","value":{"name":"tokens","nodeType":"YulIdentifier","src":"1147:6:60"},"variableNames":[{"name":"assets","nodeType":"YulIdentifier","src":"1137:6:60"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4872,"isOffset":false,"isSlot":false,"src":"1137:6:60","valueSize":1},{"declaration":4868,"isOffset":false,"isSlot":false,"src":"1147:6:60","valueSize":1}],"id":4874,"nodeType":"InlineAssembly","src":"1118:41:60"}]},"id":4876,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_asIAsset","nodeType":"FunctionDefinition","parameters":{"id":4869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4868,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4876,"src":"998:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4866,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"998:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4867,"nodeType":"ArrayTypeName","src":"998:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"997:24:60"},"returnParameters":{"id":4873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4872,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":4876,"src":"1036:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":4870,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"1036:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":4871,"nodeType":"ArrayTypeName","src":"1036:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"1035:24:60"},"scope":5061,"src":"979:182:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4922,"nodeType":"Block","src":"1262:213:60","statements":[{"assignments":[4887],"declarations":[{"constant":false,"id":4887,"mutability":"mutable","name":"aFirst","nodeType":"VariableDeclaration","scope":4922,"src":"1268:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4886,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4891,"initialValue":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4888,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"1282:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4889,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"1291:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1282:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1268:29:60"},{"assignments":[4895],"declarations":[{"constant":false,"id":4895,"mutability":"mutable","name":"sortedTokens","nodeType":"VariableDeclaration","scope":4922,"src":"1303:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4893,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1303:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4894,"nodeType":"ArrayTypeName","src":"1303:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":4901,"initialValue":{"arguments":[{"hexValue":"32","id":4899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1347:1:60","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":4898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1334:12:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":4896,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1338:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4897,"nodeType":"ArrayTypeName","src":"1338:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":4900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1303:46:60"},{"expression":{"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4902,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1356:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4904,"indexExpression":{"hexValue":"30","id":4903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1369:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1356:15:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4905,"name":"aFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4887,"src":"1374:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4907,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"1392:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1374:24:60","trueExpression":{"id":4906,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"1383:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1356:42:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4910,"nodeType":"ExpressionStatement","src":"1356:42:60"},{"expression":{"id":4918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4911,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1404:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4913,"indexExpression":{"hexValue":"31","id":4912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1417:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1404:15:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4914,"name":"aFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4887,"src":"1422:6:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4916,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"1440:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1422:24:60","trueExpression":{"id":4915,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"1431:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1404:42:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4919,"nodeType":"ExpressionStatement","src":"1404:42:60"},{"expression":{"id":4920,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1460:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":4885,"id":4921,"nodeType":"Return","src":"1453:19:60"}]},"id":4923,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_sortTokens","nodeType":"FunctionDefinition","parameters":{"id":4881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":4923,"src":"1189:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":4877,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1189:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4880,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":4923,"src":"1208:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":4879,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1208:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1183:40:60"},"returnParameters":{"id":4885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4884,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4923,"src":"1238:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4882,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1238:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4883,"nodeType":"ArrayTypeName","src":"1238:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1237:24:60"},"scope":5061,"src":"1163:312:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5017,"nodeType":"Block","src":"1576:326:60","statements":[{"expression":{"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4934,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1582:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4938,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1604:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1604:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1620:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1604:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1591:12:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":4935,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1595:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4936,"nodeType":"ArrayTypeName","src":"1595:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"1582:40:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4944,"nodeType":"ExpressionStatement","src":"1582:40:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4945,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1633:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1633:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1650:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1633:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4958,"nodeType":"IfStatement","src":"1629:81:60","trueBody":{"id":4957,"nodeType":"Block","src":"1653:57:60","statements":[{"expression":{"id":4953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4949,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1663:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4951,"indexExpression":{"hexValue":"30","id":4950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1663:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4952,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"1675:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1663:17:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4954,"nodeType":"ExpressionStatement","src":"1663:17:60"},{"expression":{"id":4955,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1697:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":4933,"id":4956,"nodeType":"Return","src":"1690:13:60"}]}},{"assignments":[4960],"declarations":[{"constant":false,"id":4960,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":5017,"src":"1716:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4959,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4961,"nodeType":"VariableDeclarationStatement","src":"1716:9:60"},{"body":{"expression":{"id":4989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4981,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1792:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4983,"indexExpression":{"id":4982,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1799:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1792:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4984,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1804:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4988,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4985,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1811:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1815:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1811:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1804:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1792:25:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4990,"nodeType":"ExpressionStatement","src":"1792:25:60"},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4967,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1755:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1755:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":4976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4970,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1764:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4974,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4971,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1771:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1775:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1771:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1764:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4975,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"1780:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1764:21:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4991,"initializationExpression":{"expression":{"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4962,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1736:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4963,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1740:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1740:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1736:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4966,"nodeType":"ExpressionStatement","src":"1736:17:60"},"loopExpression":{"expression":{"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1787:3:60","subExpression":{"id":4978,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1787:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4980,"nodeType":"ExpressionStatement","src":"1787:3:60"},"nodeType":"ForStatement","src":"1731:86:60"},{"body":{"expression":{"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5002,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1855:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5004,"indexExpression":{"id":5003,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1862:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1855:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":5005,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4926,"src":"1867:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5007,"indexExpression":{"id":5006,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1874:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1867:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1855:21:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":5009,"nodeType":"ExpressionStatement","src":"1855:21:60"},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4996,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1843:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4997,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1847:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1843:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5010,"initializationExpression":{"assignments":[4993],"declarations":[{"constant":false,"id":4993,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":5010,"src":"1828:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4992,"name":"uint256","nodeType":"ElementaryTypeName","src":"1828:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4995,"initialValue":{"hexValue":"30","id":4994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1840:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1828:13:60"},"loopExpression":{"expression":{"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1850:3:60","subExpression":{"id":4999,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1850:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5001,"nodeType":"ExpressionStatement","src":"1850:3:60"},"nodeType":"ForStatement","src":"1823:53:60"},{"expression":{"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5011,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"1882:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5013,"indexExpression":{"id":5012,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4960,"src":"1889:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1882:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5014,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"1894:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1882:17:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":5016,"nodeType":"ExpressionStatement","src":"1882:17:60"}]},"id":5018,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_insertSorted","nodeType":"FunctionDefinition","parameters":{"id":4929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4926,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":5018,"src":"1500:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4924,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1500:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4925,"nodeType":"ArrayTypeName","src":"1500:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":4928,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":5018,"src":"1524:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":4927,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1524:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1499:38:60"},"returnParameters":{"id":4933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4932,"mutability":"mutable","name":"sorted","nodeType":"VariableDeclaration","scope":5018,"src":"1552:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4930,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1552:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":4931,"nodeType":"ArrayTypeName","src":"1552:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1551:24:60"},"scope":5061,"src":"1477:425:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5059,"nodeType":"Block","src":"1990:405:60","statements":[{"assignments":[5029],"declarations":[{"constant":false,"id":5029,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":5059,"src":"2199:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5028,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5032,"initialValue":{"expression":{"id":5030,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"2222:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2222:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2199:36:60"},{"body":{"id":5052,"nodeType":"Block","src":"2284:73:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":5043,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"2298:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5045,"indexExpression":{"id":5044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"2305:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2298:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5046,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5023,"src":"2311:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"2298:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5051,"nodeType":"IfStatement","src":"2294:57:60","trueBody":{"id":5050,"nodeType":"Block","src":"2318:33:60","statements":[{"expression":{"id":5048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"2339:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5027,"id":5049,"nodeType":"Return","src":"2332:8:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"2261:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5038,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"2265:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2261:16:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5053,"initializationExpression":{"assignments":[5034],"declarations":[{"constant":false,"id":5034,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":5053,"src":"2246:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5036,"initialValue":{"hexValue":"30","id":5035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2258:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2246:13:60"},"loopExpression":{"expression":{"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2279:3:60","subExpression":{"id":5040,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"2279:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5042,"nodeType":"ExpressionStatement","src":"2279:3:60"},"nodeType":"ForStatement","src":"2241:116:60"},{"expression":{"arguments":[{"expression":{"id":5055,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2371:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_TOKEN","nodeType":"MemberAccess","referencedDeclaration":1100,"src":"2371:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5054,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"2363:7:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2363:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5058,"nodeType":"ExpressionStatement","src":"2363:29:60"}]},"id":5060,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_findTokenIndex","nodeType":"FunctionDefinition","parameters":{"id":5024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5021,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":5060,"src":"1929:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5019,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1929:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":5020,"nodeType":"ArrayTypeName","src":"1929:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":5023,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":5060,"src":"1953:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":5022,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1953:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1928:38:60"},"returnParameters":{"id":5027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5026,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5060,"src":"1981:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1980:9:60"},"scope":5061,"src":"1904:491:60","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"688:1708:60"},"id":60},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"InputHelpers":[5172]},"id":5173,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5062,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:61"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":5063,"nodeType":"ImportDirective","scope":5173,"sourceUnit":1723,"src":"713:87:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5064,"nodeType":"ImportDirective","scope":5173,"sourceUnit":1492,"src":"801:90:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5172,"linearizedBaseContracts":[5172],"name":"InputHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":5079,"nodeType":"Block","src":"988:63:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5072,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"1007:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5073,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"1012:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1007:6:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5075,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1015:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1028,"src":"1015:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5071,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"998:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:46:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5078,"nodeType":"ExpressionStatement","src":"998:46:61"}]},"id":5080,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":5069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5066,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5080,"src":"952:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5065,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5068,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5080,"src":"963:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5067,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:22:61"},"returnParameters":{"id":5070,"nodeType":"ParameterList","parameters":[],"src":"988:0:61"},"scope":5172,"src":"920:131:61","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5101,"nodeType":"Block","src":"1166:73:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5090,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5082,"src":"1185:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5091,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"1190:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1185:6:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5093,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"1195:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5094,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5086,"src":"1200:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:6:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1185:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5097,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1203:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1028,"src":"1203:28:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5089,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1176:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1176:56:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5100,"nodeType":"ExpressionStatement","src":"1176:56:61"}]},"id":5102,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":5087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5082,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5102,"src":"1098:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5084,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5102,"src":"1117:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5086,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5102,"src":"1136:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5085,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1088:63:61"},"returnParameters":{"id":5088,"nodeType":"ParameterList","parameters":[],"src":"1166:0:61"},"scope":5172,"src":"1057:182:61","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5119,"nodeType":"Block","src":"1311:208:61","statements":[{"assignments":[5112],"declarations":[{"constant":false,"id":5112,"mutability":"mutable","name":"addressArray","nodeType":"VariableDeclaration","scope":5119,"src":"1321:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5110,"name":"address","nodeType":"ElementaryTypeName","src":"1321:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5111,"nodeType":"ArrayTypeName","src":"1321:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":5113,"nodeType":"VariableDeclarationStatement","src":"1321:29:61"},{"AST":{"nodeType":"YulBlock","src":"1425:45:61","statements":[{"nodeType":"YulAssignment","src":"1439:21:61","value":{"name":"array","nodeType":"YulIdentifier","src":"1455:5:61"},"variableNames":[{"name":"addressArray","nodeType":"YulIdentifier","src":"1439:12:61"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5112,"isOffset":false,"isSlot":false,"src":"1439:12:61","valueSize":1},{"declaration":5105,"isOffset":false,"isSlot":false,"src":"1455:5:61","valueSize":1}],"id":5114,"nodeType":"InlineAssembly","src":"1416:54:61"},{"expression":{"arguments":[{"id":5116,"name":"addressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"1499:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":5115,"name":"ensureArrayIsSorted","nodeType":"Identifier","overloadedDeclarations":[5120,5171],"referencedDeclaration":5171,"src":"1479:19:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory) pure"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:33:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5118,"nodeType":"ExpressionStatement","src":"1479:33:61"}]},"id":5120,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":5106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5105,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":5120,"src":"1274:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5103,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1274:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":5104,"nodeType":"ArrayTypeName","src":"1274:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1273:23:61"},"returnParameters":{"id":5107,"nodeType":"ParameterList","parameters":[],"src":"1311:0:61"},"scope":5172,"src":"1245:274:61","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5170,"nodeType":"Block","src":"1592:307:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5126,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"1606:5:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1606:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":5128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:61","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1606:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5132,"nodeType":"IfStatement","src":"1602:53:61","trueBody":{"id":5131,"nodeType":"Block","src":"1624:31:61","statements":[{"functionReturnParameters":5125,"id":5130,"nodeType":"Return","src":"1638:7:61"}]}},{"assignments":[5134],"declarations":[{"constant":false,"id":5134,"mutability":"mutable","name":"previous","nodeType":"VariableDeclaration","scope":5170,"src":"1665:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5133,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5138,"initialValue":{"baseExpression":{"id":5135,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"1684:5:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5137,"indexExpression":{"hexValue":"30","id":5136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1684:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1665:27:61"},{"body":{"id":5168,"nodeType":"Block","src":"1745:148:61","statements":[{"assignments":[5151],"declarations":[{"constant":false,"id":5151,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":5168,"src":"1759:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5150,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5155,"initialValue":{"baseExpression":{"id":5152,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"1777:5:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5154,"indexExpression":{"id":5153,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"1783:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1777:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1759:26:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5157,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5134,"src":"1808:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5158,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5151,"src":"1819:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1808:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5160,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1828:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNSORTED_ARRAY","nodeType":"MemberAccess","referencedDeclaration":1022,"src":"1828:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5156,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1799:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:51:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5163,"nodeType":"ExpressionStatement","src":"1799:51:61"},{"expression":{"id":5166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5164,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5134,"src":"1864:8:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5165,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5151,"src":"1875:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1864:18:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5167,"nodeType":"ExpressionStatement","src":"1864:18:61"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"1722:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5144,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"1726:5:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1726:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1722:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5169,"initializationExpression":{"assignments":[5140],"declarations":[{"constant":false,"id":5140,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":5169,"src":"1707:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5142,"initialValue":{"hexValue":"31","id":5141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1719:1:61","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"1707:13:61"},"loopExpression":{"expression":{"id":5148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1740:3:61","subExpression":{"id":5147,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"1742:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5149,"nodeType":"ExpressionStatement","src":"1740:3:61"},"nodeType":"ForStatement","src":"1702:191:61"}]},"id":5171,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":5124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5123,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":5171,"src":"1554:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5121,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5122,"nodeType":"ArrayTypeName","src":"1554:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1553:24:61"},"returnParameters":{"id":5125,"nodeType":"ParameterList","parameters":[],"src":"1592:0:61"},"scope":5172,"src":"1525:374:61","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5173,"src":"893:1008:61"}],"src":"688:1214:61"},"id":61},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","exportedSymbols":{"SingletonAuthentication":[5266]},"id":5267,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5174,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:62"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":5175,"nodeType":"ImportDirective","scope":5267,"sourceUnit":3865,"src":"713:65:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"./Authentication.sol","id":5176,"nodeType":"ImportDirective","scope":5267,"sourceUnit":4424,"src":"780:30:62","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5177,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4423,"src":"857:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$4423","typeString":"contract Authentication"}},"id":5178,"nodeType":"InheritanceSpecifier","src":"857:14:62"}],"contractDependencies":[1502,4423],"contractKind":"contract","fullyImplemented":true,"id":5266,"linearizedBaseContracts":[5266,4423,1502],"name":"SingletonAuthentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5180,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":5266,"src":"878:31:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":5179,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"878:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":5201,"nodeType":"Block","src":"1063:31:62","statements":[{"expression":{"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5197,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5180,"src":"1073:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5198,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"1082:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"1073:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":5200,"nodeType":"ExpressionStatement","src":"1073:14:62"}]},"id":5202,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":5191,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1054:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}],"id":5190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1046:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5189,"name":"address","nodeType":"ElementaryTypeName","src":"1046:7:62","typeDescriptions":{}}},"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1038:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:62","typeDescriptions":{}}},"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1038:22:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1030:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1030:7:62","typeDescriptions":{}}},"id":5194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1030:31:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":5195,"modifierName":{"id":5184,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"1015:14:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$4423_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1015:47:62"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5182,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":5202,"src":"1001:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":5181,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1001:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1000:14:62"},"returnParameters":{"id":5196,"nodeType":"ParameterList","parameters":[],"src":"1063:0:62"},"scope":5266,"src":"989:105:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5210,"nodeType":"Block","src":"1207:30:62","statements":[{"expression":{"id":5208,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5180,"src":"1224:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":5207,"id":5209,"nodeType":"Return","src":"1217:13:62"}]},"documentation":{"id":5203,"nodeType":"StructuredDocumentation","src":"1100:53:62","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":5211,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":5204,"nodeType":"ParameterList","parameters":[],"src":"1175:2:62"},"returnParameters":{"id":5207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5211,"src":"1199:6:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":5205,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1199:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1198:8:62"},"scope":5266,"src":"1158:79:62","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":5222,"nodeType":"Block","src":"1356:50:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5217,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"1373:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":5218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":5219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"1373:24:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":5220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"functionReturnParameters":5216,"id":5221,"nodeType":"Return","src":"1366:33:62"}]},"documentation":{"id":5212,"nodeType":"StructuredDocumentation","src":"1243:49:62","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":5223,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":5213,"nodeType":"ParameterList","parameters":[],"src":"1319:2:62"},"returnParameters":{"id":5216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5223,"src":"1343:11:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":5214,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"1343:11:62","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1342:13:62"},"scope":5266,"src":"1297:109:62","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4422],"body":{"id":5244,"nodeType":"Block","src":"1506:84:62","statements":[{"expression":{"arguments":[{"id":5236,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"1550:8:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5237,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5227,"src":"1560:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5240,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1577:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}],"id":5239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1569:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5238,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:62","typeDescriptions":{}}},"id":5241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1569:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5233,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5223,"src":"1523:13:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":5234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"id":5235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"1523:26:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1523:60:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5232,"id":5243,"nodeType":"Return","src":"1516:67:62"}]},"id":5245,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":5229,"nodeType":"OverrideSpecifier","overrides":[],"src":"1482:8:62"},"parameters":{"id":5228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5225,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":5245,"src":"1433:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5224,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1433:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5227,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5245,"src":"1451:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5226,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1432:35:62"},"returnParameters":{"id":5232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5245,"src":"1500:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5230,"name":"bool","nodeType":"ElementaryTypeName","src":"1500:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1499:6:62"},"scope":5266,"src":"1412:178:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5264,"nodeType":"Block","src":"1726:76:62","statements":[{"expression":{"arguments":[{"id":5259,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5247,"src":"1770:8:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5260,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5249,"src":"1780:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5261,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5251,"src":"1789:5:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5256,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5223,"src":"1743:13:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"id":5258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"1743:26:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":5262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1743:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5255,"id":5263,"nodeType":"Return","src":"1736:59:62"}]},"id":5265,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":5252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5247,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":5265,"src":"1626:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1626:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5249,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":5265,"src":"1652:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5248,"name":"address","nodeType":"ElementaryTypeName","src":"1652:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5251,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":5265,"src":"1677:13:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5250,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1616:80:62"},"returnParameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5254,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5265,"src":"1720:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5253,"name":"bool","nodeType":"ElementaryTypeName","src":"1720:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1719:6:62"},"scope":5266,"src":"1596:206:62","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5267,"src":"812:992:62"}],"src":"688:1117:62"},"id":62},"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol","exportedSymbols":{"PausableConstants":[5463],"TemporarilyPausable":[5455]},"id":5464,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5268,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:63"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5269,"nodeType":"ImportDirective","scope":5464,"sourceUnit":1492,"src":"713:90:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","id":5270,"nodeType":"ImportDirective","scope":5464,"sourceUnit":1540,"src":"804:96:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5272,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":1539,"src":"2043:20:63","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$1539","typeString":"contract ITemporarilyPausable"}},"id":5273,"nodeType":"InheritanceSpecifier","src":"2043:20:63"}],"contractDependencies":[1539],"contractKind":"contract","documentation":{"id":5271,"nodeType":"StructuredDocumentation","src":"902:1099:63","text":" @dev Allows for a contract to be paused during an initial period after deployment, disabling functionality. Can be\n used as an emergency switch in case a security vulnerability or threat is identified.\n The contract can only be paused during the Pause Window, a period that starts at deployment. It can also be\n unpaused and repaused any number of times during this period. This is intended to serve as a safety measure: it lets\n system managers react quickly to potentially dangerous situations, knowing that this action is reversible if careful\n analysis later determines there was a false alarm.\n If the contract is paused when the Pause Window finishes, it will remain in the paused state through an additional\n Buffer Period, after which it will be automatically unpaused forever. This is to ensure there is always enough time\n to react to an emergency, even if the threat is discovered shortly before the Pause Window expires.\n Note that since the contract can only be paused within the Pause Window, unpausing during the Buffer Period is\n irreversible."},"fullyImplemented":true,"id":5455,"linearizedBaseContracts":[5455,1539],"name":"TemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5275,"mutability":"immutable","name":"_pauseWindowEndTime","nodeType":"VariableDeclaration","scope":5455,"src":"2230:45:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5274,"name":"uint256","nodeType":"ElementaryTypeName","src":"2230:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":5277,"mutability":"immutable","name":"_bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":5455,"src":"2281:46:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5276,"name":"uint256","nodeType":"ElementaryTypeName","src":"2281:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":5279,"mutability":"mutable","name":"_paused","nodeType":"VariableDeclaration","scope":5455,"src":"2334:20:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5278,"name":"bool","nodeType":"ElementaryTypeName","src":"2334:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":5321,"nodeType":"Block","src":"2432:486:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5287,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"2451:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":5288,"name":"PausableConstants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2474:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PausableConstants_$5463_$","typeString":"type(library PausableConstants)"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_PAUSE_WINDOW_DURATION","nodeType":"MemberAccess","referencedDeclaration":5459,"src":"2474:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2451:66:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5291,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2519:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_PAUSE_WINDOW_DURATION","nodeType":"MemberAccess","referencedDeclaration":1262,"src":"2519:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5286,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2442:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2442:110:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5294,"nodeType":"ExpressionStatement","src":"2442:110:63"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5296,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5283,"src":"2584:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":5297,"name":"PausableConstants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2608:17:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PausableConstants_$5463_$","typeString":"type(library PausableConstants)"}},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_BUFFER_PERIOD_DURATION","nodeType":"MemberAccess","referencedDeclaration":5462,"src":"2608:44:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2584:68:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5300,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2666:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MAX_BUFFER_PERIOD_DURATION","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2666:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5295,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2562:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2562:147:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5303,"nodeType":"ExpressionStatement","src":"2562:147:63"},{"assignments":[5305],"declarations":[{"constant":false,"id":5305,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":5321,"src":"2720:26:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5304,"name":"uint256","nodeType":"ElementaryTypeName","src":"2720:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5310,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5306,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2749:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2749:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5308,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"2767:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2749:37:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2720:66:63"},{"expression":{"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5311,"name":"_pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"2797:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5312,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"2819:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2797:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5314,"nodeType":"ExpressionStatement","src":"2797:40:63"},{"expression":{"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5315,"name":"_bufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5277,"src":"2847:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5316,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"2870:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5317,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5283,"src":"2891:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2870:41:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2847:64:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5320,"nodeType":"ExpressionStatement","src":"2847:64:63"}]},"id":5322,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5281,"mutability":"mutable","name":"pauseWindowDuration","nodeType":"VariableDeclaration","scope":5322,"src":"2373:27:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5280,"name":"uint256","nodeType":"ElementaryTypeName","src":"2373:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5283,"mutability":"mutable","name":"bufferPeriodDuration","nodeType":"VariableDeclaration","scope":5322,"src":"2402:28:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5282,"name":"uint256","nodeType":"ElementaryTypeName","src":"2402:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2372:59:63"},"returnParameters":{"id":5285,"nodeType":"ParameterList","parameters":[],"src":"2432:0:63"},"scope":5455,"src":"2361:557:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5329,"nodeType":"Block","src":"3012:46:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5325,"name":"_ensureNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"3022:16:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3022:18:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5327,"nodeType":"ExpressionStatement","src":"3022:18:63"},{"id":5328,"nodeType":"PlaceholderStatement","src":"3050:1:63"}]},"documentation":{"id":5323,"nodeType":"StructuredDocumentation","src":"2924:58:63","text":" @dev Reverts if the contract is paused."},"id":5330,"name":"whenNotPaused","nodeType":"ModifierDefinition","parameters":{"id":5324,"nodeType":"ParameterList","parameters":[],"src":"3009:2:63"},"src":"2987:71:63","virtual":false,"visibility":"internal"},{"baseFunctions":[1538],"body":{"id":5357,"nodeType":"Block","src":"3416:153:63","statements":[{"expression":{"id":5345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5341,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"3426:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3435:15:63","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5342,"name":"_isNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"3436:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3436:14:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3426:24:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5346,"nodeType":"ExpressionStatement","src":"3426:24:63"},{"expression":{"id":5350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5347,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5337,"src":"3460:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":5348,"name":"_getPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"3481:22:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3481:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3460:45:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5351,"nodeType":"ExpressionStatement","src":"3460:45:63"},{"expression":{"id":5355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5352,"name":"bufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"3515:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":5353,"name":"_getBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"3537:23:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3537:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3515:47:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5356,"nodeType":"ExpressionStatement","src":"3515:47:63"}]},"documentation":{"id":5331,"nodeType":"StructuredDocumentation","src":"3064:137:63","text":" @dev Returns the current contract pause status, as well as the end times of the Pause Window and Buffer\n Period."},"functionSelector":"1c0de051","id":5358,"implemented":true,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","overrides":{"id":5333,"nodeType":"OverrideSpecifier","overrides":[],"src":"3270:8:63"},"parameters":{"id":5332,"nodeType":"ParameterList","parameters":[],"src":"3229:2:63"},"returnParameters":{"id":5340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5335,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":5358,"src":"3309:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5334,"name":"bool","nodeType":"ElementaryTypeName","src":"3309:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5337,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":5358,"src":"3334:26:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5336,"name":"uint256","nodeType":"ElementaryTypeName","src":"3334:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5339,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":5358,"src":"3374:27:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5338,"name":"uint256","nodeType":"ElementaryTypeName","src":"3374:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3295:116:63"},"scope":5455,"src":"3206:363:63","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":5396,"nodeType":"Block","src":"3887:316:63","statements":[{"condition":{"id":5364,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"3901:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5386,"nodeType":"Block","src":"4021:108:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5377,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4044:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4044:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5379,"name":"_getBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"4062:23:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4062:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4044:43:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5382,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4089:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"BUFFER_PERIOD_EXPIRED","nodeType":"MemberAccess","referencedDeclaration":1325,"src":"4089:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5376,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"4035:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4035:83:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5385,"nodeType":"ExpressionStatement","src":"4035:83:63"}]},"id":5387,"nodeType":"IfStatement","src":"3897:232:63","trueBody":{"id":5375,"nodeType":"Block","src":"3909:106:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5366,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3932:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"3932:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5368,"name":"_getPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"3950:22:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3950:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3932:42:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5371,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3976:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PAUSE_WINDOW_EXPIRED","nodeType":"MemberAccess","referencedDeclaration":1259,"src":"3976:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5365,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3923:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3923:81:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5374,"nodeType":"ExpressionStatement","src":"3923:81:63"}]}},{"expression":{"id":5390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5388,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"4139:7:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5389,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"4149:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4139:16:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5391,"nodeType":"ExpressionStatement","src":"4139:16:63"},{"eventCall":{"arguments":[{"id":5393,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"4189:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5392,"name":"PausedStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"4170:18:63","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":5394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4170:26:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5395,"nodeType":"EmitStatement","src":"4165:31:63"}]},"documentation":{"id":5359,"nodeType":"StructuredDocumentation","src":"3575:265:63","text":" @dev Sets the pause state to `paused`. The contract can only be paused until the end of the Pause Window, and\n unpaused until the end of the Buffer Period.\n Once the Buffer Period expires, this function reverts unconditionally."},"id":5397,"implemented":true,"kind":"function","modifiers":[],"name":"_setPaused","nodeType":"FunctionDefinition","parameters":{"id":5362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5361,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":5397,"src":"3865:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5360,"name":"bool","nodeType":"ElementaryTypeName","src":"3865:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3864:13:63"},"returnParameters":{"id":5363,"nodeType":"ParameterList","parameters":[],"src":"3887:0:63"},"scope":5455,"src":"3845:358:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5408,"nodeType":"Block","src":"4314:56:63","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5402,"name":"_isNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"4333:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4333:14:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5404,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4349:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PAUSED","nodeType":"MemberAccess","referencedDeclaration":1256,"src":"4349:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5401,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"4324:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:39:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5407,"nodeType":"ExpressionStatement","src":"4324:39:63"}]},"documentation":{"id":5398,"nodeType":"StructuredDocumentation","src":"4209:58:63","text":" @dev Reverts if the contract is paused."},"id":5409,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureNotPaused","nodeType":"FunctionDefinition","parameters":{"id":5399,"nodeType":"ParameterList","parameters":[],"src":"4297:2:63"},"returnParameters":{"id":5400,"nodeType":"ParameterList","parameters":[],"src":"4314:0:63"},"scope":5455,"src":"4272:98:63","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5421,"nodeType":"Block","src":"4482:61:63","statements":[{"expression":{"arguments":[{"id":5416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4501:15:63","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5414,"name":"_isNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"4502:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4502:14:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5417,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4518:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"NOT_PAUSED","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"4518:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5413,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"4492:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4492:44:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5420,"nodeType":"ExpressionStatement","src":"4492:44:63"}]},"documentation":{"id":5410,"nodeType":"StructuredDocumentation","src":"4376:62:63","text":" @dev Reverts if the contract is not paused."},"id":5422,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePaused","nodeType":"FunctionDefinition","parameters":{"id":5411,"nodeType":"ParameterList","parameters":[],"src":"4465:2:63"},"returnParameters":{"id":5412,"nodeType":"ParameterList","parameters":[],"src":"4482:0:63"},"scope":5455,"src":"4443:100:63","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5437,"nodeType":"Block","src":"4822:184:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5428,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4944:5:63","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"4944:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5430,"name":"_getBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"4962:23:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4962:25:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4944:43:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4991:8:63","subExpression":{"id":5433,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5279,"src":"4992:7:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4944:55:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5427,"id":5436,"nodeType":"Return","src":"4937:62:63"}]},"documentation":{"id":5423,"nodeType":"StructuredDocumentation","src":"4549:215:63","text":" @dev Returns true if the contract is unpaused.\n Once the Buffer Period expires, the gas cost of calling this function is reduced dramatically, as storage is no\n longer accessed."},"id":5438,"implemented":true,"kind":"function","modifiers":[],"name":"_isNotPaused","nodeType":"FunctionDefinition","parameters":{"id":5424,"nodeType":"ParameterList","parameters":[],"src":"4790:2:63"},"returnParameters":{"id":5427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5426,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5438,"src":"4816:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5425,"name":"bool","nodeType":"ElementaryTypeName","src":"4816:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4815:6:63"},"scope":5455,"src":"4769:237:63","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5445,"nodeType":"Block","src":"5184:43:63","statements":[{"expression":{"id":5443,"name":"_pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5275,"src":"5201:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5442,"id":5444,"nodeType":"Return","src":"5194:26:63"}]},"id":5446,"implemented":true,"kind":"function","modifiers":[],"name":"_getPauseWindowEndTime","nodeType":"FunctionDefinition","parameters":{"id":5439,"nodeType":"ParameterList","parameters":[],"src":"5150:2:63"},"returnParameters":{"id":5442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5441,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5446,"src":"5175:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5440,"name":"uint256","nodeType":"ElementaryTypeName","src":"5175:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5174:9:63"},"scope":5455,"src":"5119:108:63","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5453,"nodeType":"Block","src":"5299:44:63","statements":[{"expression":{"id":5451,"name":"_bufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5277,"src":"5316:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5450,"id":5452,"nodeType":"Return","src":"5309:27:63"}]},"id":5454,"implemented":true,"kind":"function","modifiers":[],"name":"_getBufferPeriodEndTime","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[],"src":"5265:2:63"},"returnParameters":{"id":5450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5449,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5454,"src":"5290:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5448,"name":"uint256","nodeType":"ElementaryTypeName","src":"5290:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5289:9:63"},"scope":5455,"src":"5233:110:63","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":5464,"src":"2002:3343:63"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5456,"nodeType":"StructuredDocumentation","src":"5347:61:63","text":" @dev Keep the maximum durations in a single place."},"fullyImplemented":true,"id":5463,"linearizedBaseContracts":[5463],"name":"PausableConstants","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"fc5e93fe","id":5459,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":5463,"src":"5441:60:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5457,"name":"uint256","nodeType":"ElementaryTypeName","src":"5441:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323730","id":5458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5493:8:63","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_23328000_by_1","typeString":"int_const 23328000"},"value":"270"},"visibility":"public"},{"constant":true,"functionSelector":"8b19548d","id":5462,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":5463,"src":"5507:60:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5460,"name":"uint256","nodeType":"ElementaryTypeName","src":"5507:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3930","id":5461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5560:7:63","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_7776000_by_1","typeString":"int_const 7776000"},"value":"90"},"visibility":"public"}],"scope":5464,"src":"5409:161:63"}],"src":"688:4883:63"},"id":63},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","exportedSymbols":{"VaultHelpers":[5488]},"id":5489,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5465,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:64"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5488,"linearizedBaseContracts":[5488],"name":"VaultHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":5486,"nodeType":"Block","src":"967:241:64","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5477,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5468,"src":"1181:6:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1173:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5475,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:64","typeDescriptions":{}}},"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:15:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"id":5481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3132","id":5479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:2:64","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":5480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:64","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1193:6:64","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}}],"id":5482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1192:8:64","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}},"src":"1173:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1165:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5473,"name":"address","nodeType":"ElementaryTypeName","src":"1165:7:64","typeDescriptions":{}}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1165:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":5472,"id":5485,"nodeType":"Return","src":"1158:43:64"}]},"documentation":{"id":5466,"nodeType":"StructuredDocumentation","src":"740:151:64","text":" @dev Returns the address of a Pool's contract.\n This is the same code the Vault runs in `PoolRegistry._getPoolAddress`."},"id":5487,"implemented":true,"kind":"function","modifiers":[],"name":"toPoolAddress","nodeType":"FunctionDefinition","parameters":{"id":5469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5468,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":5487,"src":"919:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"919:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"918:16:64"},"returnParameters":{"id":5472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5471,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5487,"src":"958:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5470,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"957:9:64"},"scope":5488,"src":"896:312:64","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5489,"src":"713:497:64"}],"src":"688:523:64"},"id":64},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","exportedSymbols":{"Version":[5527]},"id":5528,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5490,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:65"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol","id":5491,"nodeType":"ImportDirective","scope":5528,"sourceUnit":1550,"src":"713:84:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5493,"name":"IVersion","nodeType":"UserDefinedTypeName","referencedDeclaration":1549,"src":"904:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVersion_$1549","typeString":"contract IVersion"}},"id":5494,"nodeType":"InheritanceSpecifier","src":"904:8:65"}],"contractDependencies":[1549],"contractKind":"contract","documentation":{"id":5492,"nodeType":"StructuredDocumentation","src":"799:84:65","text":" @notice Retrieves a contract's version set at creation time from storage."},"fullyImplemented":true,"id":5527,"linearizedBaseContracts":[5527,1549],"name":"Version","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5496,"mutability":"mutable","name":"_version","nodeType":"VariableDeclaration","scope":5527,"src":"919:23:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5495,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":5505,"nodeType":"Block","src":"984:37:65","statements":[{"expression":{"arguments":[{"id":5502,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5498,"src":"1006:7:65","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5501,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5526,"src":"994:11:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":5503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"994:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5504,"nodeType":"ExpressionStatement","src":"994:20:65"}]},"id":5506,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":5499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":5506,"src":"961:21:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5497,"name":"string","nodeType":"ElementaryTypeName","src":"961:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"960:23:65"},"returnParameters":{"id":5500,"nodeType":"ParameterList","parameters":[],"src":"984:0:65"},"scope":5527,"src":"949:72:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1548],"body":{"id":5514,"nodeType":"Block","src":"1093:32:65","statements":[{"expression":{"id":5512,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"1110:8:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5511,"id":5513,"nodeType":"Return","src":"1103:15:65"}]},"functionSelector":"54fd4d50","id":5515,"implemented":true,"kind":"function","modifiers":[],"name":"version","nodeType":"FunctionDefinition","overrides":{"id":5508,"nodeType":"OverrideSpecifier","overrides":[],"src":"1060:8:65"},"parameters":{"id":5507,"nodeType":"ParameterList","parameters":[],"src":"1043:2:65"},"returnParameters":{"id":5511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5515,"src":"1078:13:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5509,"name":"string","nodeType":"ElementaryTypeName","src":"1078:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1077:15:65"},"scope":5527,"src":"1027:98:65","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":5525,"nodeType":"Block","src":"1280:38:65","statements":[{"expression":{"id":5523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5521,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5496,"src":"1290:8:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5522,"name":"newVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5518,"src":"1301:10:65","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1290:21:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5524,"nodeType":"ExpressionStatement","src":"1290:21:65"}]},"documentation":{"id":5516,"nodeType":"StructuredDocumentation","src":"1131:88:65","text":" @dev Internal setter that allows this contract to be used in proxies."},"id":5526,"implemented":true,"kind":"function","modifiers":[],"name":"_setVersion","nodeType":"FunctionDefinition","parameters":{"id":5519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5518,"mutability":"mutable","name":"newVersion","nodeType":"VariableDeclaration","scope":5526,"src":"1245:24:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5517,"name":"string","nodeType":"ElementaryTypeName","src":"1245:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1244:26:65"},"returnParameters":{"id":5520,"nodeType":"ParameterList","parameters":[],"src":"1280:0:65"},"scope":5527,"src":"1224:94:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5528,"src":"884:436:65"}],"src":"688:633:65"},"id":65},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[5905]},"id":5906,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5529,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:66"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5530,"nodeType":"ImportDirective","scope":5906,"sourceUnit":1492,"src":"713:90:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":5531,"nodeType":"ImportDirective","scope":5906,"sourceUnit":7204,"src":"805:26:66","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5905,"linearizedBaseContracts":[5905],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5534,"mutability":"constant","name":"ONE","nodeType":"VariableDeclaration","scope":5905,"src":"956:36:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5532,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":5533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"988:4:66","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":5539,"mutability":"constant","name":"TWO","nodeType":"VariableDeclaration","scope":5905,"src":"1019:39:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5535,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1051:1:66","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5537,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"1055:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1051:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5544,"mutability":"constant","name":"FOUR","nodeType":"VariableDeclaration","scope":5905,"src":"1064:40:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":5541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1097:1:66","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5542,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"1101:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1097:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5547,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nodeType":"VariableDeclaration","scope":5905,"src":"1110:56:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5545,"name":"uint256","nodeType":"ElementaryTypeName","src":"1110:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":5546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1161:5:66","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"constant":true,"id":5550,"mutability":"constant","name":"MIN_POW_BASE_FREE_EXPONENT","nodeType":"VariableDeclaration","scope":5905,"src":"1275:61:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5548,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e37653138","id":5549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1330:6:66","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"0.7e18"},"visibility":"internal"},{"body":{"id":5575,"nodeType":"Block","src":"1410:172:66","statements":[{"assignments":[5560],"declarations":[{"constant":false,"id":5560,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5575,"src":"1493:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5564,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5561,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"1505:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5562,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5554,"src":"1509:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1505:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1493:17:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5566,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5560,"src":"1529:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5567,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"1534:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1529:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5569,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1537:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":989,"src":"1537:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5565,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1520:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1520:37:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5572,"nodeType":"ExpressionStatement","src":"1520:37:66"},{"expression":{"id":5573,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5560,"src":"1574:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5558,"id":5574,"nodeType":"Return","src":"1567:8:66"}]},"id":5576,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5552,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5576,"src":"1356:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5551,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5554,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5576,"src":"1367:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1367:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:22:66"},"returnParameters":{"id":5558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5557,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5576,"src":"1401:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1401:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:9:66"},"scope":5905,"src":"1343:239:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5601,"nodeType":"Block","src":"1655:172:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5586,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"1747:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5587,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"1752:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1747:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5589,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1755:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":992,"src":"1755:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5585,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1738:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1738:37:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5592,"nodeType":"ExpressionStatement","src":"1738:37:66"},{"assignments":[5594],"declarations":[{"constant":false,"id":5594,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5601,"src":"1785:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5593,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5598,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5595,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"1797:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5596,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"1801:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1797:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1785:17:66"},{"expression":{"id":5599,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"1819:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5584,"id":5600,"nodeType":"Return","src":"1812:8:66"}]},"id":5602,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5578,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5602,"src":"1601:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5577,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5580,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5602,"src":"1612:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5579,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1600:22:66"},"returnParameters":{"id":5584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5583,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5602,"src":"1646:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5582,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1645:9:66"},"scope":5905,"src":"1588:239:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5635,"nodeType":"Block","src":"1904:138:66","statements":[{"assignments":[5612],"declarations":[{"constant":false,"id":5612,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5635,"src":"1914:15:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5611,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5616,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5613,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5604,"src":"1932:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5614,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"1936:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1932:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:23:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5618,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5604,"src":"1956:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1961:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5621,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"1966:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5604,"src":"1976:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:11:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5624,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"1981:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1956:26:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5627,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1984:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":998,"src":"1984:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5617,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1947:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:57:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5630,"nodeType":"ExpressionStatement","src":"1947:57:66"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5631,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"2022:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5632,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"2032:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2022:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5610,"id":5634,"nodeType":"Return","src":"2015:20:66"}]},"id":5636,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nodeType":"FunctionDefinition","parameters":{"id":5607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5604,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5636,"src":"1850:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5603,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5606,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5636,"src":"1861:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1849:22:66"},"returnParameters":{"id":5610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5636,"src":"1895:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1895:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1894:9:66"},"scope":5905,"src":"1833:209:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5666,"nodeType":"Block","src":"2124:638:66","statements":[{"assignments":[5646],"declarations":[{"constant":false,"id":5646,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5666,"src":"2134:15:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5650,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5647,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"2152:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5648,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"2156:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2152:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2134:23:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5652,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"2176:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2176:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5655,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5646,"src":"2186:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5656,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5638,"src":"2196:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:11:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5658,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"2201:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2176:26:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5661,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2204:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":998,"src":"2204:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5651,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2167:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:57:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5664,"nodeType":"ExpressionStatement","src":"2167:57:66"},{"AST":{"nodeType":"YulBlock","src":"2659:97:66","statements":[{"nodeType":"YulAssignment","src":"2673:73:66","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2701:7:66"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2694:6:66"},"nodeType":"YulFunctionCall","src":"2694:15:66"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2687:6:66"},"nodeType":"YulFunctionCall","src":"2687:23:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2724:7:66"},{"kind":"number","nodeType":"YulLiteral","src":"2733:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2720:3:66"},"nodeType":"YulFunctionCall","src":"2720:15:66"},{"name":"ONE","nodeType":"YulIdentifier","src":"2737:3:66"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2716:3:66"},"nodeType":"YulFunctionCall","src":"2716:25:66"},{"kind":"number","nodeType":"YulLiteral","src":"2743:1:66","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:66"},"nodeType":"YulFunctionCall","src":"2712:33:66"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2683:3:66"},"nodeType":"YulFunctionCall","src":"2683:63:66"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2673:6:66"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5534,"isOffset":false,"isSlot":false,"src":"2737:3:66","valueSize":1},{"declaration":5646,"isOffset":false,"isSlot":false,"src":"2701:7:66","valueSize":1},{"declaration":5646,"isOffset":false,"isSlot":false,"src":"2724:7:66","valueSize":1},{"declaration":5643,"isOffset":false,"isSlot":false,"src":"2673:6:66","valueSize":1}],"id":5665,"nodeType":"InlineAssembly","src":"2650:106:66"}]},"id":5667,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nodeType":"FunctionDefinition","parameters":{"id":5641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5638,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5667,"src":"2063:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5640,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5667,"src":"2074:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:22:66"},"returnParameters":{"id":5644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5667,"src":"2108:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2107:16:66"},"scope":5905,"src":"2048:714:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5708,"nodeType":"Block","src":"2839:211:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5677,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5671,"src":"2858:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2858:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5680,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2866:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1001,"src":"2866:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5676,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2849:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5683,"nodeType":"ExpressionStatement","src":"2849:38:66"},{"assignments":[5685],"declarations":[{"constant":false,"id":5685,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":5708,"src":"2898:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5684,"name":"uint256","nodeType":"ElementaryTypeName","src":"2898:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5689,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5686,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"2918:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5687,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"2922:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2898:27:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5691,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"2944:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2949:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2944:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5694,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5685,"src":"2954:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5695,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5669,"src":"2966:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5697,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"2971:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:20:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2944:30:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5700,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2976:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"2976:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5690,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2935:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2935:61:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5703,"nodeType":"ExpressionStatement","src":"2935:61:66"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5704,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5685,"src":"3030:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5705,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5671,"src":"3042:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3030:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5675,"id":5707,"nodeType":"Return","src":"3023:20:66"}]},"id":5709,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":5672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5669,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5709,"src":"2785:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5668,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5671,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5709,"src":"2796:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5670,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2784:22:66"},"returnParameters":{"id":5675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5709,"src":"2830:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5673,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:9:66"},"scope":5905,"src":"2768:282:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5747,"nodeType":"Block","src":"3132:703:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5719,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"3151:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3156:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3151:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5722,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3159:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1001,"src":"3159:20:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5718,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3142:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5725,"nodeType":"ExpressionStatement","src":"3142:38:66"},{"assignments":[5727],"declarations":[{"constant":false,"id":5727,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":5747,"src":"3191:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5726,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5731,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5728,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"3211:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5729,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"3215:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3211:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3191:27:66"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5733,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"3237:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3237:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5736,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5727,"src":"3247:9:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5737,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5711,"src":"3259:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5739,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"3264:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:20:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3237:30:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5742,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3269:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":5743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1004,"src":"3269:19:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5732,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3228:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:61:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5745,"nodeType":"ExpressionStatement","src":"3228:61:66"},{"AST":{"nodeType":"YulBlock","src":"3730:99:66","statements":[{"nodeType":"YulAssignment","src":"3744:75:66","value":{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3772:9:66"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3765:6:66"},"nodeType":"YulFunctionCall","src":"3765:17:66"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3758:6:66"},"nodeType":"YulFunctionCall","src":"3758:25:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3797:9:66"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3793:3:66"},"nodeType":"YulFunctionCall","src":"3793:17:66"},{"name":"b","nodeType":"YulIdentifier","src":"3812:1:66"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3789:3:66"},"nodeType":"YulFunctionCall","src":"3789:25:66"},{"kind":"number","nodeType":"YulLiteral","src":"3816:1:66","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:66"},"nodeType":"YulFunctionCall","src":"3785:33:66"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3754:3:66"},"nodeType":"YulFunctionCall","src":"3754:65:66"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3744:6:66"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5727,"isOffset":false,"isSlot":false,"src":"3772:9:66","valueSize":1},{"declaration":5727,"isOffset":false,"isSlot":false,"src":"3797:9:66","valueSize":1},{"declaration":5713,"isOffset":false,"isSlot":false,"src":"3812:1:66","valueSize":1},{"declaration":5716,"isOffset":false,"isSlot":false,"src":"3744:6:66","valueSize":1}],"id":5746,"nodeType":"InlineAssembly","src":"3721:108:66"}]},"id":5748,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":5714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5711,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5748,"src":"3071:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5710,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5713,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5748,"src":"3082:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3070:22:66"},"returnParameters":{"id":5717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5716,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5748,"src":"3116:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5715,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:16:66"},"scope":5905,"src":"3056:779:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5824,"nodeType":"Block","src":"4138:681:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5758,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"4306:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5759,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"4311:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5764,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"4359:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5765,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"4364:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5773,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"4424:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5774,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5544,"src":"4429:4:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4424:9:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5820,"nodeType":"Block","src":"4540:273:66","statements":[{"assignments":[5790],"declarations":[{"constant":false,"id":5790,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":5820,"src":"4554:11:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5789,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5796,"initialValue":{"arguments":[{"id":5793,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4583:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5794,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5753,"src":"4586:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5791,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7203,"src":"4568:10:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$7203_$","typeString":"type(library LogExpMath)"}},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":6147,"src":"4568:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4568:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4554:34:66"},{"assignments":[5798],"declarations":[{"constant":false,"id":5798,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":5820,"src":"4602:16:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5797,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5806,"initialValue":{"arguments":[{"arguments":[{"id":5801,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"4631:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5802,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"4636:22:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5800,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"4625:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4625:34:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":5804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:1:66","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5799,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"4621:3:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4621:42:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4602:61:66"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5807,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"4682:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5808,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"4688:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4682:14:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5818,"nodeType":"Block","src":"4745:58:66","statements":[{"expression":{"arguments":[{"id":5814,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5790,"src":"4774:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5815,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"4779:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5813,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5602,"src":"4770:3:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4770:18:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5757,"id":5817,"nodeType":"Return","src":"4763:25:66"}]},"id":5819,"nodeType":"IfStatement","src":"4678:125:66","trueBody":{"id":5812,"nodeType":"Block","src":"4698:41:66","statements":[{"expression":{"hexValue":"30","id":5810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4723:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5757,"id":5811,"nodeType":"Return","src":"4716:8:66"}]}}]},"id":5821,"nodeType":"IfStatement","src":"4420:393:66","trueBody":{"id":5788,"nodeType":"Block","src":"4435:99:66","statements":[{"assignments":[5777],"declarations":[{"constant":false,"id":5777,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":5788,"src":"4449:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5776,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5782,"initialValue":{"arguments":[{"id":5779,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4474:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5780,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4477:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5778,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"4466:7:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4466:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:30:66"},{"expression":{"arguments":[{"id":5784,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"4508:6:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5785,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5777,"src":"4516:6:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5783,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"4500:7:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4500:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5757,"id":5787,"nodeType":"Return","src":"4493:30:66"}]}},"id":5822,"nodeType":"IfStatement","src":"4355:458:66","trueBody":{"id":5772,"nodeType":"Block","src":"4369:45:66","statements":[{"expression":{"arguments":[{"id":5768,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4398:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5769,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4401:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5767,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"4390:7:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4390:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5757,"id":5771,"nodeType":"Return","src":"4383:20:66"}]}},"id":5823,"nodeType":"IfStatement","src":"4302:511:66","trueBody":{"id":5763,"nodeType":"Block","src":"4316:33:66","statements":[{"expression":{"id":5761,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5751,"src":"4337:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5757,"id":5762,"nodeType":"Return","src":"4330:8:66"}]}}]},"documentation":{"id":5749,"nodeType":"StructuredDocumentation","src":"3841:221:66","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":5825,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nodeType":"FunctionDefinition","parameters":{"id":5754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5751,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5825,"src":"4084:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5750,"name":"uint256","nodeType":"ElementaryTypeName","src":"4084:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5753,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5825,"src":"4095:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5752,"name":"uint256","nodeType":"ElementaryTypeName","src":"4095:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:22:66"},"returnParameters":{"id":5757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5825,"src":"4129:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5755,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4128:9:66"},"scope":5905,"src":"4067:752:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5893,"nodeType":"Block","src":"5118:576:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5835,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"5286:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5836,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5534,"src":"5291:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5841,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"5339:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5842,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"5344:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5339:8:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5850,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"5402:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5851,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5544,"src":"5407:4:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5402:9:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5889,"nodeType":"Block","src":"5514:174:66","statements":[{"assignments":[5867],"declarations":[{"constant":false,"id":5867,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":5889,"src":"5528:11:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5866,"name":"uint256","nodeType":"ElementaryTypeName","src":"5528:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5873,"initialValue":{"arguments":[{"id":5870,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5557:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5871,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"5560:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5868,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7203,"src":"5542:10:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$7203_$","typeString":"type(library LogExpMath)"}},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":6147,"src":"5542:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5542:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5528:34:66"},{"assignments":[5875],"declarations":[{"constant":false,"id":5875,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":5889,"src":"5576:16:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5874,"name":"uint256","nodeType":"ElementaryTypeName","src":"5576:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5883,"initialValue":{"arguments":[{"arguments":[{"id":5878,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"5605:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5879,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5547,"src":"5610:22:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5877,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"5599:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:34:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":5881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5635:1:66","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5876,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"5595:3:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5595:42:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5576:61:66"},{"expression":{"arguments":[{"id":5885,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"5663:3:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5886,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"5668:8:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5884,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"5659:3:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5659:18:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5834,"id":5888,"nodeType":"Return","src":"5652:25:66"}]},"id":5890,"nodeType":"IfStatement","src":"5398:290:66","trueBody":{"id":5865,"nodeType":"Block","src":"5413:95:66","statements":[{"assignments":[5854],"declarations":[{"constant":false,"id":5854,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":5865,"src":"5427:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5853,"name":"uint256","nodeType":"ElementaryTypeName","src":"5427:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5859,"initialValue":{"arguments":[{"id":5856,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5450:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5857,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5453:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5855,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"5444:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5444:11:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5427:28:66"},{"expression":{"arguments":[{"id":5861,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"5482:6:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5862,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5854,"src":"5490:6:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5860,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"5476:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5476:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5834,"id":5864,"nodeType":"Return","src":"5469:28:66"}]}},"id":5891,"nodeType":"IfStatement","src":"5335:353:66","trueBody":{"id":5849,"nodeType":"Block","src":"5349:43:66","statements":[{"expression":{"arguments":[{"id":5845,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5376:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5846,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5379:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5844,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"5370:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:11:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5834,"id":5848,"nodeType":"Return","src":"5363:18:66"}]}},"id":5892,"nodeType":"IfStatement","src":"5282:406:66","trueBody":{"id":5840,"nodeType":"Block","src":"5296:33:66","statements":[{"expression":{"id":5838,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5828,"src":"5317:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5834,"id":5839,"nodeType":"Return","src":"5310:8:66"}]}}]},"documentation":{"id":5826,"nodeType":"StructuredDocumentation","src":"4825:219:66","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":5894,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nodeType":"FunctionDefinition","parameters":{"id":5831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5828,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5894,"src":"5064:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5827,"name":"uint256","nodeType":"ElementaryTypeName","src":"5064:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5830,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5894,"src":"5075:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5063:22:66"},"returnParameters":{"id":5834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5833,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5894,"src":"5109:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5832,"name":"uint256","nodeType":"ElementaryTypeName","src":"5109:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5108:9:66"},"scope":5905,"src":"5049:645:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5903,"nodeType":"Block","src":"6047:160:66","statements":[{"AST":{"nodeType":"YulBlock","src":"6139:62:66","statements":[{"nodeType":"YulAssignment","src":"6153:38:66","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6170:1:66"},{"name":"ONE","nodeType":"YulIdentifier","src":"6173:3:66"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6167:2:66"},"nodeType":"YulFunctionCall","src":"6167:10:66"},{"arguments":[{"name":"ONE","nodeType":"YulIdentifier","src":"6183:3:66"},{"name":"x","nodeType":"YulIdentifier","src":"6188:1:66"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6179:3:66"},"nodeType":"YulFunctionCall","src":"6179:11:66"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6163:3:66"},"nodeType":"YulFunctionCall","src":"6163:28:66"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6153:6:66"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5534,"isOffset":false,"isSlot":false,"src":"6173:3:66","valueSize":1},{"declaration":5534,"isOffset":false,"isSlot":false,"src":"6183:3:66","valueSize":1},{"declaration":5900,"isOffset":false,"isSlot":false,"src":"6153:6:66","valueSize":1},{"declaration":5897,"isOffset":false,"isSlot":false,"src":"6170:1:66","valueSize":1},{"declaration":5897,"isOffset":false,"isSlot":false,"src":"6188:1:66","valueSize":1}],"id":5902,"nodeType":"InlineAssembly","src":"6130:71:66"}]},"documentation":{"id":5895,"nodeType":"StructuredDocumentation","src":"5700:272:66","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":5904,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nodeType":"FunctionDefinition","parameters":{"id":5898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5897,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5904,"src":"5997:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5896,"name":"uint256","nodeType":"ElementaryTypeName","src":"5997:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5996:11:66"},"returnParameters":{"id":5901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5900,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5904,"src":"6031:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5899,"name":"uint256","nodeType":"ElementaryTypeName","src":"6031:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6030:16:66"},"scope":5905,"src":"5977:230:66","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5906,"src":"888:5321:66"}],"src":"688:5522:66"},"id":66},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[7203]},"id":7204,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5907,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1094:23:67"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5908,"nodeType":"ImportDirective","scope":7204,"sourceUnit":1492,"src":"1119:90:67","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5909,"nodeType":"StructuredDocumentation","src":"1234:446:67","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":7203,"linearizedBaseContracts":[7203],"name":"LogExpMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5912,"mutability":"constant","name":"ONE_18","nodeType":"VariableDeclaration","scope":7203,"src":"1961:29:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5910,"name":"int256","nodeType":"ElementaryTypeName","src":"1961:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":5911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1986:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":5915,"mutability":"constant","name":"ONE_20","nodeType":"VariableDeclaration","scope":7203,"src":"2151:29:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5913,"name":"int256","nodeType":"ElementaryTypeName","src":"2151:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":5914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:4:67","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":5918,"mutability":"constant","name":"ONE_36","nodeType":"VariableDeclaration","scope":7203,"src":"2186:29:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5916,"name":"int256","nodeType":"ElementaryTypeName","src":"2186:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":5917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2211:4:67","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":5921,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":7203,"src":"2732:45:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5919,"name":"int256","nodeType":"ElementaryTypeName","src":"2732:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":5920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:6:67","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":5925,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":7203,"src":"2783:45:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5922,"name":"int256","nodeType":"ElementaryTypeName","src":"2783:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":5924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2822:6:67","subExpression":{"hexValue":"3431653138","id":5923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:5:67","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":5930,"mutability":"constant","name":"LN_36_LOWER_BOUND","nodeType":"VariableDeclaration","scope":7203,"src":"2979:49:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5926,"name":"int256","nodeType":"ElementaryTypeName","src":"2979:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5927,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"3015:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":5928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:4:67","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3015:13:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":5935,"mutability":"constant","name":"LN_36_UPPER_BOUND","nodeType":"VariableDeclaration","scope":7203,"src":"3034:49:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5931,"name":"int256","nodeType":"ElementaryTypeName","src":"3034:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5932,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"3070:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":5933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:4:67","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3070:13:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":5945,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nodeType":"VariableDeclaration","scope":7203,"src":"3090:63:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5936,"name":"uint256","nodeType":"ElementaryTypeName","src":"3090:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":5939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:67","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":5938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:3:67","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"3129:6:67","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":5942,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"3146:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3138:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:67","typeDescriptions":{}}},"id":5943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:15:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3129:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5948,"mutability":"constant","name":"x0","nodeType":"VariableDeclaration","scope":7203,"src":"3188:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5946,"name":"int256","nodeType":"ElementaryTypeName","src":"3188:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":5947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:21:67","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":5951,"mutability":"constant","name":"a0","nodeType":"VariableDeclaration","scope":7203,"src":"3244:77:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5949,"name":"int256","nodeType":"ElementaryTypeName","src":"3244:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":5950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:56:67","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":5954,"mutability":"constant","name":"x1","nodeType":"VariableDeclaration","scope":7203,"src":"3352:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5952,"name":"int256","nodeType":"ElementaryTypeName","src":"3352:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":5953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3373:20:67","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":5957,"mutability":"constant","name":"a1","nodeType":"VariableDeclaration","scope":7203,"src":"3407:49:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5955,"name":"int256","nodeType":"ElementaryTypeName","src":"3407:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":5956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:28:67","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":5960,"mutability":"constant","name":"x2","nodeType":"VariableDeclaration","scope":7203,"src":"3516:43:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5958,"name":"int256","nodeType":"ElementaryTypeName","src":"3516:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":5959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:22:67","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":5963,"mutability":"constant","name":"a2","nodeType":"VariableDeclaration","scope":7203,"src":"3573:55:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5961,"name":"int256","nodeType":"ElementaryTypeName","src":"3573:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":5962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3594:34:67","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":5966,"mutability":"constant","name":"x3","nodeType":"VariableDeclaration","scope":7203,"src":"3645:43:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5964,"name":"int256","nodeType":"ElementaryTypeName","src":"3645:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":5965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:22:67","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":5969,"mutability":"constant","name":"a3","nodeType":"VariableDeclaration","scope":7203,"src":"3702:48:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5967,"name":"int256","nodeType":"ElementaryTypeName","src":"3702:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3723:27:67","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":5972,"mutability":"constant","name":"x4","nodeType":"VariableDeclaration","scope":7203,"src":"3767:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5970,"name":"int256","nodeType":"ElementaryTypeName","src":"3767:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":5971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3788:21:67","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":5975,"mutability":"constant","name":"a4","nodeType":"VariableDeclaration","scope":7203,"src":"3823:45:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5973,"name":"int256","nodeType":"ElementaryTypeName","src":"3823:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":5974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:24:67","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":5978,"mutability":"constant","name":"x5","nodeType":"VariableDeclaration","scope":7203,"src":"3885:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5976,"name":"int256","nodeType":"ElementaryTypeName","src":"3885:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":5977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:21:67","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":5981,"mutability":"constant","name":"a5","nodeType":"VariableDeclaration","scope":7203,"src":"3941:43:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5979,"name":"int256","nodeType":"ElementaryTypeName","src":"3941:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":5980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:22:67","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":5984,"mutability":"constant","name":"x6","nodeType":"VariableDeclaration","scope":7203,"src":"4001:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5982,"name":"int256","nodeType":"ElementaryTypeName","src":"4001:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":5983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:21:67","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":5987,"mutability":"constant","name":"a6","nodeType":"VariableDeclaration","scope":7203,"src":"4057:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5985,"name":"int256","nodeType":"ElementaryTypeName","src":"4057:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":5986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:21:67","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":5990,"mutability":"constant","name":"x7","nodeType":"VariableDeclaration","scope":7203,"src":"4116:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5988,"name":"int256","nodeType":"ElementaryTypeName","src":"4116:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":5989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:21:67","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":5993,"mutability":"constant","name":"a7","nodeType":"VariableDeclaration","scope":7203,"src":"4172:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5991,"name":"int256","nodeType":"ElementaryTypeName","src":"4172:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":5992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:21:67","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":5996,"mutability":"constant","name":"x8","nodeType":"VariableDeclaration","scope":7203,"src":"4231:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5994,"name":"int256","nodeType":"ElementaryTypeName","src":"4231:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":5995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4252:20:67","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":5999,"mutability":"constant","name":"a8","nodeType":"VariableDeclaration","scope":7203,"src":"4287:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5997,"name":"int256","nodeType":"ElementaryTypeName","src":"4287:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":5998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:21:67","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":6002,"mutability":"constant","name":"x9","nodeType":"VariableDeclaration","scope":7203,"src":"4346:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6000,"name":"int256","nodeType":"ElementaryTypeName","src":"4346:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":6001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:20:67","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":6005,"mutability":"constant","name":"a9","nodeType":"VariableDeclaration","scope":7203,"src":"4402:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6003,"name":"int256","nodeType":"ElementaryTypeName","src":"4402:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":6004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4423:21:67","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":6008,"mutability":"constant","name":"x10","nodeType":"VariableDeclaration","scope":7203,"src":"4461:42:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6006,"name":"int256","nodeType":"ElementaryTypeName","src":"4461:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":6007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:20:67","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":6011,"mutability":"constant","name":"a10","nodeType":"VariableDeclaration","scope":7203,"src":"4518:43:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6009,"name":"int256","nodeType":"ElementaryTypeName","src":"4518:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":6010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4540:21:67","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":6014,"mutability":"constant","name":"x11","nodeType":"VariableDeclaration","scope":7203,"src":"4579:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6012,"name":"int256","nodeType":"ElementaryTypeName","src":"4579:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:19:67","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":6017,"mutability":"constant","name":"a11","nodeType":"VariableDeclaration","scope":7203,"src":"4635:43:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6015,"name":"int256","nodeType":"ElementaryTypeName","src":"4635:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":6016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4657:21:67","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":6146,"nodeType":"Block","src":"4983:2128:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6027,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6022,"src":"4997:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5002:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4997:6:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6036,"nodeType":"IfStatement","src":"4993:131:67","trueBody":{"id":6035,"nodeType":"Block","src":"5005:119:67","statements":[{"expression":{"arguments":[{"id":6032,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"5106:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6030,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:67","typeDescriptions":{}}},"id":6033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5098:15:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6026,"id":6034,"nodeType":"Return","src":"5091:22:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6037,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"5138:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5138:6:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6043,"nodeType":"IfStatement","src":"5134:45:67","trueBody":{"id":6042,"nodeType":"Block","src":"5146:33:67","statements":[{"expression":{"hexValue":"30","id":6040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5167:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6026,"id":6041,"nodeType":"Return","src":"5160:8:67"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6045,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"5558:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":6046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:3:67","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5558:8:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5558:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6050,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5573:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"X_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1007,"src":"5573:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6044,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5549:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5549:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6053,"nodeType":"ExpressionStatement","src":"5549:47:67"},{"assignments":[6055],"declarations":[{"constant":false,"id":6055,"mutability":"mutable","name":"x_int256","nodeType":"VariableDeclaration","scope":6146,"src":"5606:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6054,"name":"int256","nodeType":"ElementaryTypeName","src":"5606:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6060,"initialValue":{"arguments":[{"id":6058,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6020,"src":"5631:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5624:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6056,"name":"int256","nodeType":"ElementaryTypeName","src":"5624:6:67","typeDescriptions":{}}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5624:9:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5606:27:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6062,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6022,"src":"5996:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6063,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5945,"src":"6000:19:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5996:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6065,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"6021:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":6066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Y_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"6021:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6061,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5987:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5987:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6068,"nodeType":"ExpressionStatement","src":"5987:57:67"},{"assignments":[6070],"declarations":[{"constant":false,"id":6070,"mutability":"mutable","name":"y_int256","nodeType":"VariableDeclaration","scope":6146,"src":"6054:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6069,"name":"int256","nodeType":"ElementaryTypeName","src":"6054:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6075,"initialValue":{"arguments":[{"id":6073,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6022,"src":"6079:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6072:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6071,"name":"int256","nodeType":"ElementaryTypeName","src":"6072:6:67","typeDescriptions":{}}},"id":6074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6072:9:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6054:27:67"},{"assignments":[6077],"declarations":[{"constant":false,"id":6077,"mutability":"mutable","name":"logx_times_y","nodeType":"VariableDeclaration","scope":6146,"src":"6092:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6076,"name":"int256","nodeType":"ElementaryTypeName","src":"6092:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6078,"nodeType":"VariableDeclarationStatement","src":"6092:19:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6079,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"6125:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6080,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"6145:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6125:28:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6082,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"6157:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6083,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"6168:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6157:28:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6125:60:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6121,"nodeType":"Block","src":"6741:64:67","statements":[{"expression":{"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6113,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"6755:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6115,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"6774:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6114,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"6770:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6117,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"6786:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6770:24:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6755:39:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6120,"nodeType":"ExpressionStatement","src":"6755:39:67"}]},"id":6122,"nodeType":"IfStatement","src":"6121:684:67","trueBody":{"id":6112,"nodeType":"Block","src":"6187:548:67","statements":[{"assignments":[6087],"declarations":[{"constant":false,"id":6087,"mutability":"mutable","name":"ln_36_x","nodeType":"VariableDeclaration","scope":6112,"src":"6201:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6086,"name":"int256","nodeType":"ElementaryTypeName","src":"6201:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6091,"initialValue":{"arguments":[{"id":6089,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"6225:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6088,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7202,"src":"6218:6:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6201:33:67"},{"expression":{"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6092,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"6635:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6093,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"6652:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6094,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"6662:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:16:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6651:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6097,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"6672:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:29:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6099,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6087,"src":"6685:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":6100,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"6695:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6685:16:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6684:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6103,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6070,"src":"6705:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6684:29:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6683:31:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6106,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"6717:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6683:40:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:72:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6650:74:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6635:89:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6111,"nodeType":"ExpressionStatement","src":"6635:89:67"}]}},{"expression":{"id":6125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6123,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"6814:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":6124,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"6830:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6814:22:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6126,"nodeType":"ExpressionStatement","src":"6814:22:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6128,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5925,"src":"6932:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6129,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"6956:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6932:36:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6131,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"6972:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6132,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"6988:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6972:36:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6932:76:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6135,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"7022:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PRODUCT_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"7022:28:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6127,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"6910:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6910:150:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6138,"nodeType":"ExpressionStatement","src":"6910:150:67"},{"expression":{"arguments":[{"arguments":[{"id":6142,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"7090:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6141,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6574,"src":"7086:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7086:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7078:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6139,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:67","typeDescriptions":{}}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7078:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6026,"id":6145,"nodeType":"Return","src":"7071:33:67"}]},"documentation":{"id":6018,"nodeType":"StructuredDocumentation","src":"4697:214:67","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":6147,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nodeType":"FunctionDefinition","parameters":{"id":6023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6020,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":6147,"src":"4929:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6019,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6022,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":6147,"src":"4940:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6021,"name":"uint256","nodeType":"ElementaryTypeName","src":"4940:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4928:22:67"},"returnParameters":{"id":6026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6025,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6147,"src":"4974:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6024,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4973:9:67"},"scope":7203,"src":"4916:2195:67","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6573,"nodeType":"Block","src":"7379:5325:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6156,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"7398:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6157,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5925,"src":"7403:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7398:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6159,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"7427:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6160,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5921,"src":"7432:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7427:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7398:54:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6163,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"7454:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_EXPONENT","nodeType":"MemberAccess","referencedDeclaration":1016,"src":"7454:23:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6155,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"7389:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7389:89:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6166,"nodeType":"ExpressionStatement","src":"7389:89:67"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6167,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"7493:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7497:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7493:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6182,"nodeType":"IfStatement","src":"7489:353:67","trueBody":{"id":6181,"nodeType":"Block","src":"7500:342:67","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6170,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"7804:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6171,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"7813:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7804:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7803:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7827:2:67","subExpression":{"id":6175,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"7828:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6174,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6574,"src":"7823:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:7:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7803:27:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:29:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6154,"id":6180,"nodeType":"Return","src":"7795:36:67"}]}},{"assignments":[6184],"declarations":[{"constant":false,"id":6184,"mutability":"mutable","name":"firstAN","nodeType":"VariableDeclaration","scope":6573,"src":"9143:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6183,"name":"int256","nodeType":"ElementaryTypeName","src":"9143:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6185,"nodeType":"VariableDeclarationStatement","src":"9143:14:67"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6186,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9171:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6187,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"9176:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6198,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9248:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6199,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"9253:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9248:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6214,"nodeType":"Block","src":"9321:66:67","statements":[{"expression":{"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6210,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"9335:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":6211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:67","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9335:11:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6213,"nodeType":"ExpressionStatement","src":"9335:11:67"}]},"id":6215,"nodeType":"IfStatement","src":"9244:143:67","trueBody":{"id":6209,"nodeType":"Block","src":"9257:58:67","statements":[{"expression":{"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6201,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9271:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6202,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"9276:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9271:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6204,"nodeType":"ExpressionStatement","src":"9271:7:67"},{"expression":{"id":6207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6205,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"9292:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6206,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"9302:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9292:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6208,"nodeType":"ExpressionStatement","src":"9292:12:67"}]}},"id":6216,"nodeType":"IfStatement","src":"9167:220:67","trueBody":{"id":6197,"nodeType":"Block","src":"9180:58:67","statements":[{"expression":{"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6189,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9194:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6190,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"9199:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9194:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6192,"nodeType":"ExpressionStatement","src":"9194:7:67"},{"expression":{"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6193,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"9215:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6194,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"9225:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9215:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6196,"nodeType":"ExpressionStatement","src":"9215:12:67"}]}},{"expression":{"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6217,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9537:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":6218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9542:3:67","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9537:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6220,"nodeType":"ExpressionStatement","src":"9537:8:67"},{"assignments":[6222],"declarations":[{"constant":false,"id":6222,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":6573,"src":"9758:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6221,"name":"int256","nodeType":"ElementaryTypeName","src":"9758:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6224,"initialValue":{"id":6223,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"9775:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9758:23:67"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6225,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9796:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6226,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"9801:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9796:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6242,"nodeType":"IfStatement","src":"9792:92:67","trueBody":{"id":6241,"nodeType":"Block","src":"9805:79:67","statements":[{"expression":{"id":6230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6228,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9819:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6229,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"9824:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9819:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6231,"nodeType":"ExpressionStatement","src":"9819:7:67"},{"expression":{"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6232,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"9840:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6233,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"9851:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6234,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"9861:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9851:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9850:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6237,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"9867:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9850:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9840:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6240,"nodeType":"ExpressionStatement","src":"9840:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6243,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9897:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6244,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5966,"src":"9902:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9897:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6260,"nodeType":"IfStatement","src":"9893:92:67","trueBody":{"id":6259,"nodeType":"Block","src":"9906:79:67","statements":[{"expression":{"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6246,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9920:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6247,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5966,"src":"9925:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9920:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6249,"nodeType":"ExpressionStatement","src":"9920:7:67"},{"expression":{"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6250,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"9941:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6251,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"9952:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6252,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"9962:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9952:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6254,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9951:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6255,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"9968:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9951:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9941:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6258,"nodeType":"ExpressionStatement","src":"9941:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6261,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"9998:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6262,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"10003:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9998:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6278,"nodeType":"IfStatement","src":"9994:92:67","trueBody":{"id":6277,"nodeType":"Block","src":"10007:79:67","statements":[{"expression":{"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6264,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10021:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6265,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"10026:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10021:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6267,"nodeType":"ExpressionStatement","src":"10021:7:67"},{"expression":{"id":6275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6268,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10042:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6269,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10053:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6270,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5975,"src":"10063:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10053:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10052:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6273,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10069:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10052:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10042:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6276,"nodeType":"ExpressionStatement","src":"10042:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6279,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10099:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6280,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"10104:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10099:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6296,"nodeType":"IfStatement","src":"10095:92:67","trueBody":{"id":6295,"nodeType":"Block","src":"10108:79:67","statements":[{"expression":{"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6282,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10122:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6283,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"10127:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10122:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6285,"nodeType":"ExpressionStatement","src":"10122:7:67"},{"expression":{"id":6293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6286,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10143:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6287,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10154:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6288,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"10164:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10154:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10153:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6291,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10170:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10153:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10143:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6294,"nodeType":"ExpressionStatement","src":"10143:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6297,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10200:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6298,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5984,"src":"10205:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10200:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6314,"nodeType":"IfStatement","src":"10196:92:67","trueBody":{"id":6313,"nodeType":"Block","src":"10209:79:67","statements":[{"expression":{"id":6302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6300,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10223:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6301,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5984,"src":"10228:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10223:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6303,"nodeType":"ExpressionStatement","src":"10223:7:67"},{"expression":{"id":6311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6304,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10244:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6305,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10255:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6306,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"10265:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10255:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6308,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10254:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6309,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10271:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10254:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10244:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6312,"nodeType":"ExpressionStatement","src":"10244:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6315,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10301:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6316,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"10306:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10301:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6332,"nodeType":"IfStatement","src":"10297:92:67","trueBody":{"id":6331,"nodeType":"Block","src":"10310:79:67","statements":[{"expression":{"id":6320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6318,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10324:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6319,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"10329:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10324:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6321,"nodeType":"ExpressionStatement","src":"10324:7:67"},{"expression":{"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6322,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10345:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6323,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10356:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6324,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5993,"src":"10366:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10356:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10355:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6327,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10372:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10355:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10345:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6330,"nodeType":"ExpressionStatement","src":"10345:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6333,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10402:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6334,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5996,"src":"10407:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10402:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6350,"nodeType":"IfStatement","src":"10398:92:67","trueBody":{"id":6349,"nodeType":"Block","src":"10411:79:67","statements":[{"expression":{"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6336,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10425:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6337,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5996,"src":"10430:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10425:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6339,"nodeType":"ExpressionStatement","src":"10425:7:67"},{"expression":{"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6340,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10446:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6341,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10457:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6342,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"10467:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10457:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6344,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10456:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6345,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10473:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10456:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10446:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6348,"nodeType":"ExpressionStatement","src":"10446:33:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6351,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10503:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6352,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"10508:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10503:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6368,"nodeType":"IfStatement","src":"10499:92:67","trueBody":{"id":6367,"nodeType":"Block","src":"10512:79:67","statements":[{"expression":{"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6354,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"10526:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6355,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"10531:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10526:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6357,"nodeType":"ExpressionStatement","src":"10526:7:67"},{"expression":{"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6358,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10547:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6359,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"10558:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6360,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"10568:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10558:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10557:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6363,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10574:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10557:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10547:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6366,"nodeType":"ExpressionStatement","src":"10547:33:67"}]}},{"assignments":[6370],"declarations":[{"constant":false,"id":6370,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":6573,"src":"10895:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6369,"name":"int256","nodeType":"ElementaryTypeName","src":"10895:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6372,"initialValue":{"id":6371,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"10914:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10895:25:67"},{"assignments":[6374],"declarations":[{"constant":false,"id":6374,"mutability":"mutable","name":"term","nodeType":"VariableDeclaration","scope":6573,"src":"10985:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6373,"name":"int256","nodeType":"ElementaryTypeName","src":"10985:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6375,"nodeType":"VariableDeclarationStatement","src":"10985:11:67"},{"expression":{"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6376,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11105:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6377,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11112:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11105:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6379,"nodeType":"ExpressionStatement","src":"11105:8:67"},{"expression":{"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6380,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11123:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6381,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11136:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11123:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6383,"nodeType":"ExpressionStatement","src":"11123:17:67"},{"expression":{"id":6394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6384,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11377:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6385,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11386:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6386,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11393:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11386:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11385:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6389,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11398:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11385:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6391,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":6392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:67","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11384:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11377:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6395,"nodeType":"ExpressionStatement","src":"11377:32:67"},{"expression":{"id":6398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6396,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11419:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6397,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11432:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11419:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6399,"nodeType":"ExpressionStatement","src":"11419:17:67"},{"expression":{"id":6410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6400,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11447:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6401,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11456:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6402,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11463:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11456:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11455:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6405,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11468:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11455:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11454:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":6408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11478:1:67","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11454:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11447:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6411,"nodeType":"ExpressionStatement","src":"11447:32:67"},{"expression":{"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6412,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11489:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6413,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11502:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11489:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6415,"nodeType":"ExpressionStatement","src":"11489:17:67"},{"expression":{"id":6426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6416,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11517:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6417,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11526:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6418,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11533:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11526:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11525:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6421,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11538:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11525:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11524:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":6424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:67","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11524:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11517:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6427,"nodeType":"ExpressionStatement","src":"11517:32:67"},{"expression":{"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6428,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11559:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6429,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11572:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11559:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6431,"nodeType":"ExpressionStatement","src":"11559:17:67"},{"expression":{"id":6442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6432,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11587:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6433,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11596:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6434,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11603:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11596:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6437,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11608:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11595:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11594:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":6440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:67","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11594:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11587:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6443,"nodeType":"ExpressionStatement","src":"11587:32:67"},{"expression":{"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6444,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11629:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6445,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11642:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11629:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6447,"nodeType":"ExpressionStatement","src":"11629:17:67"},{"expression":{"id":6458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6448,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11657:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6449,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11666:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6450,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11673:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11666:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11665:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6453,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11678:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11665:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11664:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":6456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11688:1:67","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11664:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11657:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6459,"nodeType":"ExpressionStatement","src":"11657:32:67"},{"expression":{"id":6462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6460,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11699:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6461,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11712:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11699:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6463,"nodeType":"ExpressionStatement","src":"11699:17:67"},{"expression":{"id":6474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6464,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11727:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6465,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11736:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11743:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11736:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6469,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11748:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11735:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6471,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":6472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11758:1:67","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11734:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11727:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6475,"nodeType":"ExpressionStatement","src":"11727:32:67"},{"expression":{"id":6478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6476,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11769:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6477,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11782:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11769:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6479,"nodeType":"ExpressionStatement","src":"11769:17:67"},{"expression":{"id":6490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6480,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11797:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6481,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11806:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6482,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11813:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11806:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6484,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11805:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6485,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11818:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11805:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6487,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11804:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":6488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11828:1:67","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11804:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11797:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6491,"nodeType":"ExpressionStatement","src":"11797:32:67"},{"expression":{"id":6494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6492,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11839:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6493,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11852:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6495,"nodeType":"ExpressionStatement","src":"11839:17:67"},{"expression":{"id":6506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6496,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11867:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6497,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11876:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6498,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11883:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11876:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11875:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6501,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11888:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11875:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11874:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":6504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11898:1:67","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"11874:25:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11867:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6507,"nodeType":"ExpressionStatement","src":"11867:32:67"},{"expression":{"id":6510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6508,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11909:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6509,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11922:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11909:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6511,"nodeType":"ExpressionStatement","src":"11909:17:67"},{"expression":{"id":6522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6512,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11937:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6513,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11946:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6514,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"11953:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11946:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6516,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11945:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6517,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"11958:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11945:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6519,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11944:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":6520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:67","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"11944:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11937:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6523,"nodeType":"ExpressionStatement","src":"11937:33:67"},{"expression":{"id":6526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6524,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"11980:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6525,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"11993:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11980:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6527,"nodeType":"ExpressionStatement","src":"11980:17:67"},{"expression":{"id":6538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6528,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12008:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6529,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12017:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6530,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"12024:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12017:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6532,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12016:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6533,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"12029:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12016:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12015:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":6536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12039:2:67","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12015:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12008:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6539,"nodeType":"ExpressionStatement","src":"12008:33:67"},{"expression":{"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6540,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"12051:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6541,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12064:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12051:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6543,"nodeType":"ExpressionStatement","src":"12051:17:67"},{"expression":{"id":6554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6544,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12079:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6545,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12088:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6546,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"12095:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12088:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12087:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6549,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"12100:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12087:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6551,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12086:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":6552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:2:67","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12086:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12079:33:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6555,"nodeType":"ExpressionStatement","src":"12079:33:67"},{"expression":{"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6556,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"12122:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6557,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"12135:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12122:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6559,"nodeType":"ExpressionStatement","src":"12122:17:67"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6560,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"12650:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6561,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6370,"src":"12660:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12650:19:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12649:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6564,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"12673:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12649:30:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12648:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6567,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"12683:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12648:42:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6569,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12647:44:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":6570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12694:3:67","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12647:50:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6154,"id":6572,"nodeType":"Return","src":"12640:57:67"}]},"documentation":{"id":6148,"nodeType":"StructuredDocumentation","src":"7117:203:67","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":6574,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nodeType":"FunctionDefinition","parameters":{"id":6151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6150,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":6574,"src":"7338:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6149,"name":"int256","nodeType":"ElementaryTypeName","src":"7338:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7337:10:67"},"returnParameters":{"id":6154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6153,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6574,"src":"7371:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6152,"name":"int256","nodeType":"ElementaryTypeName","src":"7371:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7370:8:67"},"scope":7203,"src":"7325:5379:67","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6645,"nodeType":"Block","src":"12888:753:67","statements":[{"assignments":[6585],"declarations":[{"constant":false,"id":6585,"mutability":"mutable","name":"logBase","nodeType":"VariableDeclaration","scope":6645,"src":"13118:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6584,"name":"int256","nodeType":"ElementaryTypeName","src":"13118:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6586,"nodeType":"VariableDeclarationStatement","src":"13118:14:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6587,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"13146:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6588,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"13166:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13146:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6590,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"13174:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6591,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"13181:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13174:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13146:52:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6609,"nodeType":"Block","src":"13253:53:67","statements":[{"expression":{"id":6607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6601,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"13267:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6603,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"13281:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6602,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"13277:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13277:9:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6605,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"13289:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13277:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13267:28:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6608,"nodeType":"ExpressionStatement","src":"13267:28:67"}]},"id":6610,"nodeType":"IfStatement","src":"13142:164:67","trueBody":{"id":6600,"nodeType":"Block","src":"13200:47:67","statements":[{"expression":{"id":6598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6594,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"13214:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6596,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"13231:4:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6595,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7202,"src":"13224:6:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13224:12:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13214:22:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6599,"nodeType":"ExpressionStatement","src":"13214:22:67"}]}},{"assignments":[6612],"declarations":[{"constant":false,"id":6612,"mutability":"mutable","name":"logArg","nodeType":"VariableDeclaration","scope":6645,"src":"13316:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6611,"name":"int256","nodeType":"ElementaryTypeName","src":"13316:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6613,"nodeType":"VariableDeclarationStatement","src":"13316:13:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6614,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"13343:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6615,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"13363:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13343:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6617,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"13370:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6618,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"13376:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13370:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13343:50:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6636,"nodeType":"Block","src":"13446:51:67","statements":[{"expression":{"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6628,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"13460:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6630,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"13473:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6629,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"13469:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:8:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6632,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"13480:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13469:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13460:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6635,"nodeType":"ExpressionStatement","src":"13460:26:67"}]},"id":6637,"nodeType":"IfStatement","src":"13339:158:67","trueBody":{"id":6627,"nodeType":"Block","src":"13395:45:67","statements":[{"expression":{"id":6625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6621,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"13409:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6623,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"13425:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6622,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7202,"src":"13418:6:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13418:11:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13409:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6626,"nodeType":"ExpressionStatement","src":"13409:20:67"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6638,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"13608:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6639,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"13617:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13608:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6641,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6642,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"13627:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13607:27:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6583,"id":6644,"nodeType":"Return","src":"13600:34:67"}]},"documentation":{"id":6575,"nodeType":"StructuredDocumentation","src":"12710:104:67","text":" @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":6646,"implemented":true,"kind":"function","modifiers":[],"name":"log","nodeType":"FunctionDefinition","parameters":{"id":6580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6577,"mutability":"mutable","name":"arg","nodeType":"VariableDeclaration","scope":6646,"src":"12832:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6576,"name":"int256","nodeType":"ElementaryTypeName","src":"12832:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6579,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":6646,"src":"12844:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6578,"name":"int256","nodeType":"ElementaryTypeName","src":"12844:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12831:25:67"},"returnParameters":{"id":6583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6582,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6646,"src":"12880:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6581,"name":"int256","nodeType":"ElementaryTypeName","src":"12880:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12879:8:67"},"scope":7203,"src":"12819:822:67","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6682,"nodeType":"Block","src":"13799:292:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6655,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"13901:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13905:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6658,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"13908:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1019,"src":"13908:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6654,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"13892:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13892:37:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6661,"nodeType":"ExpressionStatement","src":"13892:37:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6662,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"13943:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6663,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"13963:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13943:21:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6665,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"13968:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6666,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"13972:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13968:21:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13943:46:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6680,"nodeType":"Block","src":"14047:38:67","statements":[{"expression":{"arguments":[{"id":6677,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"14072:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6676,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"14068:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14068:6:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6653,"id":6679,"nodeType":"Return","src":"14061:13:67"}]},"id":6681,"nodeType":"IfStatement","src":"13939:146:67","trueBody":{"id":6675,"nodeType":"Block","src":"13991:50:67","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6670,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"14019:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6669,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7202,"src":"14012:6:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14012:9:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6672,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"14024:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14012:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6653,"id":6674,"nodeType":"Return","src":"14005:25:67"}]}}]},"documentation":{"id":6647,"nodeType":"StructuredDocumentation","src":"13647:94:67","text":" @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":6683,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nodeType":"FunctionDefinition","parameters":{"id":6650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6649,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6683,"src":"13758:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6648,"name":"int256","nodeType":"ElementaryTypeName","src":"13758:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13757:10:67"},"returnParameters":{"id":6653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6652,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6683,"src":"13791:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6651,"name":"int256","nodeType":"ElementaryTypeName","src":"13791:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13790:8:67"},"scope":7203,"src":"13746:345:67","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7047,"nodeType":"Block","src":"14258:4906:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6691,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"14272:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6692,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"14276:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14272:10:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6706,"nodeType":"IfStatement","src":"14268:382:67","trueBody":{"id":6705,"nodeType":"Block","src":"14284:366:67","statements":[{"expression":{"components":[{"id":6702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14611:27:67","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6695,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"14617:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6696,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"14626:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14617:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14616:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6699,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"14636:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14616:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6694,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"14612:3:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14612:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6703,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14610:29:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6690,"id":6704,"nodeType":"Return","src":"14603:36:67"}]}},{"assignments":[6708],"declarations":[{"constant":false,"id":6708,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":7047,"src":"15975:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6707,"name":"int256","nodeType":"ElementaryTypeName","src":"15975:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6710,"initialValue":{"hexValue":"30","id":6709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15988:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15975:14:67"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6711,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16003:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6712,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"16008:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6713,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"16013:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16008:11:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16003:16:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6725,"nodeType":"IfStatement","src":"15999:114:67","trueBody":{"id":6724,"nodeType":"Block","src":"16021:92:67","statements":[{"expression":{"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6716,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16035:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":6717,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"16040:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16035:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6719,"nodeType":"ExpressionStatement","src":"16035:7:67"},{"expression":{"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6720,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16093:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6721,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"16100:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16093:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6723,"nodeType":"ExpressionStatement","src":"16093:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16127:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6727,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"16132:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6728,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"16137:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16132:11:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16127:16:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6740,"nodeType":"IfStatement","src":"16123:114:67","trueBody":{"id":6739,"nodeType":"Block","src":"16145:92:67","statements":[{"expression":{"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16159:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":6732,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"16164:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16159:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6734,"nodeType":"ExpressionStatement","src":"16159:7:67"},{"expression":{"id":6737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6735,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16217:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6736,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"16224:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16217:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6738,"nodeType":"ExpressionStatement","src":"16217:9:67"}]}},{"expression":{"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6741,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16368:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":6742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16375:3:67","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16368:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6744,"nodeType":"ExpressionStatement","src":"16368:10:67"},{"expression":{"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6745,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16388:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":6746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16393:3:67","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16388:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6748,"nodeType":"ExpressionStatement","src":"16388:8:67"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6749,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16523:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6750,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"16528:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16523:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6766,"nodeType":"IfStatement","src":"16519:82:67","trueBody":{"id":6765,"nodeType":"Block","src":"16532:69:67","statements":[{"expression":{"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6752,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16546:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6753,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16551:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6754,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"16555:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16551:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16550:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6757,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5963,"src":"16565:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16550:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16546:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6760,"nodeType":"ExpressionStatement","src":"16546:21:67"},{"expression":{"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6761,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16581:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6762,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5960,"src":"16588:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16581:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6764,"nodeType":"ExpressionStatement","src":"16581:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6767,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16615:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6768,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"16620:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16615:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6784,"nodeType":"IfStatement","src":"16611:82:67","trueBody":{"id":6783,"nodeType":"Block","src":"16624:69:67","statements":[{"expression":{"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6770,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16638:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6771,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16643:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6772,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"16647:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16643:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16642:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6775,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"16657:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16642:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16638:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6778,"nodeType":"ExpressionStatement","src":"16638:21:67"},{"expression":{"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6779,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16673:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6780,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5966,"src":"16680:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16673:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6782,"nodeType":"ExpressionStatement","src":"16673:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6785,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16707:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6786,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5975,"src":"16712:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16707:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6802,"nodeType":"IfStatement","src":"16703:82:67","trueBody":{"id":6801,"nodeType":"Block","src":"16716:69:67","statements":[{"expression":{"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6788,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16730:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6789,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16735:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6790,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"16739:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16735:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16734:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6793,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5975,"src":"16749:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16734:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16730:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6796,"nodeType":"ExpressionStatement","src":"16730:21:67"},{"expression":{"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6797,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16765:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6798,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"16772:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16765:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6800,"nodeType":"ExpressionStatement","src":"16765:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6803,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16799:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6804,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"16804:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16799:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6820,"nodeType":"IfStatement","src":"16795:82:67","trueBody":{"id":6819,"nodeType":"Block","src":"16808:69:67","statements":[{"expression":{"id":6813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16822:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6807,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16827:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6808,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"16831:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16827:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6810,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16826:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6811,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"16841:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16826:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16822:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6814,"nodeType":"ExpressionStatement","src":"16822:21:67"},{"expression":{"id":6817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6815,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16857:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6816,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"16864:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16857:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6818,"nodeType":"ExpressionStatement","src":"16857:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6821,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16891:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6822,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"16896:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16891:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6838,"nodeType":"IfStatement","src":"16887:82:67","trueBody":{"id":6837,"nodeType":"Block","src":"16900:69:67","statements":[{"expression":{"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6824,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16914:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6825,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16919:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6826,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"16923:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16919:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6828,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16918:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6829,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"16933:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16918:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16914:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6832,"nodeType":"ExpressionStatement","src":"16914:21:67"},{"expression":{"id":6835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6833,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"16949:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6834,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5984,"src":"16956:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16949:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6836,"nodeType":"ExpressionStatement","src":"16949:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6839,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"16983:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6840,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5993,"src":"16988:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16983:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6856,"nodeType":"IfStatement","src":"16979:82:67","trueBody":{"id":6855,"nodeType":"Block","src":"16992:69:67","statements":[{"expression":{"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6842,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17006:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6843,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17011:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6844,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17015:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17011:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6846,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17010:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6847,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5993,"src":"17025:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17010:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17006:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6850,"nodeType":"ExpressionStatement","src":"17006:21:67"},{"expression":{"id":6853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6851,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"17041:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6852,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"17048:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17041:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6854,"nodeType":"ExpressionStatement","src":"17041:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6857,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17075:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6858,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"17080:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17075:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6874,"nodeType":"IfStatement","src":"17071:82:67","trueBody":{"id":6873,"nodeType":"Block","src":"17084:69:67","statements":[{"expression":{"id":6867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6860,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17098:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17103:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6862,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17107:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17103:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17102:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6865,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"17117:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17102:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17098:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6868,"nodeType":"ExpressionStatement","src":"17098:21:67"},{"expression":{"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6869,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"17133:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6870,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5996,"src":"17140:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17133:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6872,"nodeType":"ExpressionStatement","src":"17133:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6875,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17167:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6876,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"17172:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17167:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6892,"nodeType":"IfStatement","src":"17163:82:67","trueBody":{"id":6891,"nodeType":"Block","src":"17176:69:67","statements":[{"expression":{"id":6885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6878,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17190:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6879,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17195:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6880,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17199:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17195:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6882,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17194:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6883,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"17209:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17194:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17190:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6886,"nodeType":"ExpressionStatement","src":"17190:21:67"},{"expression":{"id":6889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6887,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"17225:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6888,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"17232:2:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17225:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6890,"nodeType":"ExpressionStatement","src":"17225:9:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6893,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17259:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6894,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"17264:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17259:8:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6910,"nodeType":"IfStatement","src":"17255:85:67","trueBody":{"id":6909,"nodeType":"Block","src":"17269:71:67","statements":[{"expression":{"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6896,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17283:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6897,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17288:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6898,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17292:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17288:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6900,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17287:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6901,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"17302:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17287:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17283:22:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6904,"nodeType":"ExpressionStatement","src":"17283:22:67"},{"expression":{"id":6907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6905,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"17319:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6906,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6008,"src":"17326:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17319:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6908,"nodeType":"ExpressionStatement","src":"17319:10:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6911,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17354:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6912,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"17359:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17354:8:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6928,"nodeType":"IfStatement","src":"17350:85:67","trueBody":{"id":6927,"nodeType":"Block","src":"17364:71:67","statements":[{"expression":{"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17378:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6915,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17383:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6916,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17387:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17383:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17382:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6919,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"17397:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17382:18:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17378:22:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6922,"nodeType":"ExpressionStatement","src":"17378:22:67"},{"expression":{"id":6925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6923,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"17414:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6924,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6014,"src":"17421:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17414:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6926,"nodeType":"ExpressionStatement","src":"17414:10:67"}]}},{"assignments":[6930],"declarations":[{"constant":false,"id":6930,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":7047,"src":"17937:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6929,"name":"int256","nodeType":"ElementaryTypeName","src":"17937:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6943,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6931,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17950:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6932,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17954:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17950:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17949:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6935,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17964:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17949:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6937,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17948:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6938,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"17975:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6939,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"17979:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17975:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17974:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17948:38:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17937:49:67"},{"assignments":[6945],"declarations":[{"constant":false,"id":6945,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":7047,"src":"17996:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6944,"name":"int256","nodeType":"ElementaryTypeName","src":"17996:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6952,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6946,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6930,"src":"18016:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6947,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6930,"src":"18020:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18016:5:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6949,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18015:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6950,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18025:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18015:16:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17996:35:67"},{"assignments":[6954],"declarations":[{"constant":false,"id":6954,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":7047,"src":"18112:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6953,"name":"int256","nodeType":"ElementaryTypeName","src":"18112:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6956,"initialValue":{"id":6955,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6930,"src":"18125:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18112:14:67"},{"assignments":[6958],"declarations":[{"constant":false,"id":6958,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":7047,"src":"18240:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6957,"name":"int256","nodeType":"ElementaryTypeName","src":"18240:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6960,"initialValue":{"id":6959,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18259:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18240:22:67"},{"expression":{"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6961,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18333:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6962,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18340:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6963,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"18346:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18340:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18339:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6966,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18359:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18339:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18333:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6969,"nodeType":"ExpressionStatement","src":"18333:32:67"},{"expression":{"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6970,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18375:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6971,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18388:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":6972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:67","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"18388:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18375:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6975,"nodeType":"ExpressionStatement","src":"18375:20:67"},{"expression":{"id":6983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6976,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18406:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6977,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18413:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6978,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"18419:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18413:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18412:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6981,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18432:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18412:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18406:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6984,"nodeType":"ExpressionStatement","src":"18406:32:67"},{"expression":{"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6985,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18448:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6986,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18461:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":6987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18467:1:67","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"18461:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18448:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6990,"nodeType":"ExpressionStatement","src":"18448:20:67"},{"expression":{"id":6998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6991,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18479:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6992,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18486:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6993,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"18492:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18486:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6995,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18485:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6996,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18505:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18485:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18479:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6999,"nodeType":"ExpressionStatement","src":"18479:32:67"},{"expression":{"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7000,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18521:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7001,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18534:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":7002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18540:1:67","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"18534:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18521:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7005,"nodeType":"ExpressionStatement","src":"18521:20:67"},{"expression":{"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7006,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18552:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7007,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18559:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7008,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"18565:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18559:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7010,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18558:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7011,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18578:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18558:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18552:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7014,"nodeType":"ExpressionStatement","src":"18552:32:67"},{"expression":{"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7015,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18594:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7016,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18607:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":7017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18613:1:67","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"18607:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18594:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7020,"nodeType":"ExpressionStatement","src":"18594:20:67"},{"expression":{"id":7028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7021,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18625:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7022,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18632:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7023,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"18638:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18632:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7025,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18631:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7026,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"18651:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18631:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18625:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7029,"nodeType":"ExpressionStatement","src":"18625:32:67"},{"expression":{"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7030,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18667:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7031,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6954,"src":"18680:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":7032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18686:2:67","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"18680:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18667:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7035,"nodeType":"ExpressionStatement","src":"18667:21:67"},{"expression":{"id":7038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7036,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"18847:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":7037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:67","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18847:14:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7039,"nodeType":"ExpressionStatement","src":"18847:14:67"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7040,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"19135:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7041,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6958,"src":"19141:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19135:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19134:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":7044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19154:3:67","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19134:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6690,"id":7046,"nodeType":"Return","src":"19127:30:67"}]},"documentation":{"id":6684,"nodeType":"StructuredDocumentation","src":"14097:103:67","text":" @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":7048,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nodeType":"FunctionDefinition","parameters":{"id":6687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6686,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7048,"src":"14218:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6685,"name":"int256","nodeType":"ElementaryTypeName","src":"14218:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14217:10:67"},"returnParameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7048,"src":"14250:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6688,"name":"int256","nodeType":"ElementaryTypeName","src":"14250:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14249:8:67"},"scope":7203,"src":"14205:4959:67","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7201,"nodeType":"Block","src":"19486:1658:67","statements":[{"expression":{"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7056,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"19700:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":7057,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"19705:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19700:11:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7059,"nodeType":"ExpressionStatement","src":"19700:11:67"},{"assignments":[7061],"declarations":[{"constant":false,"id":7061,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":7201,"src":"20072:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7060,"name":"int256","nodeType":"ElementaryTypeName","src":"20072:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7074,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7062,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"20085:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7063,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20089:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20085:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7065,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20084:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7066,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20099:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20084:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7068,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20083:23:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7069,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"20110:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7070,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20114:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20110:10:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7072,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20109:12:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20083:38:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20072:49:67"},{"assignments":[7076],"declarations":[{"constant":false,"id":7076,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":7201,"src":"20131:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7075,"name":"int256","nodeType":"ElementaryTypeName","src":"20131:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7083,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7077,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7061,"src":"20151:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7078,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7061,"src":"20155:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20151:5:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20150:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7081,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20160:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20150:16:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20131:35:67"},{"assignments":[7085],"declarations":[{"constant":false,"id":7085,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":7201,"src":"20247:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7084,"name":"int256","nodeType":"ElementaryTypeName","src":"20247:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7087,"initialValue":{"id":7086,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7061,"src":"20260:1:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20247:14:67"},{"assignments":[7089],"declarations":[{"constant":false,"id":7089,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":7201,"src":"20375:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7088,"name":"int256","nodeType":"ElementaryTypeName","src":"20375:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7091,"initialValue":{"id":7090,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20394:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20375:22:67"},{"expression":{"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7092,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20468:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7093,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20475:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7094,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20481:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20475:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20474:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7097,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20494:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20474:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20468:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7100,"nodeType":"ExpressionStatement","src":"20468:32:67"},{"expression":{"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7101,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20510:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7102,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20523:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":7103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:67","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"20523:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20510:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7106,"nodeType":"ExpressionStatement","src":"20510:20:67"},{"expression":{"id":7114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7107,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20541:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7108,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20548:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7109,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20554:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20548:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20547:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7112,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20567:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20547:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7115,"nodeType":"ExpressionStatement","src":"20541:32:67"},{"expression":{"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7116,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20583:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7117,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20596:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":7118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20602:1:67","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"20596:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20583:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7121,"nodeType":"ExpressionStatement","src":"20583:20:67"},{"expression":{"id":7129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7122,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20614:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7123,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20621:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7124,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20627:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20621:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7126,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20620:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7127,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20640:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20620:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20614:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7130,"nodeType":"ExpressionStatement","src":"20614:32:67"},{"expression":{"id":7135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7131,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20656:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7132,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20669:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":7133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20675:1:67","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"20669:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20656:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7136,"nodeType":"ExpressionStatement","src":"20656:20:67"},{"expression":{"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7137,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20687:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7138,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20694:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7139,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20700:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20694:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20693:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7142,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20713:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20693:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20687:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7145,"nodeType":"ExpressionStatement","src":"20687:32:67"},{"expression":{"id":7150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7146,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20729:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7147,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20742:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":7148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20748:1:67","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"20742:7:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20729:20:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7151,"nodeType":"ExpressionStatement","src":"20729:20:67"},{"expression":{"id":7159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7152,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20760:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7153,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20767:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7154,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20773:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20767:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7156,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20766:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7157,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20786:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20766:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20760:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7160,"nodeType":"ExpressionStatement","src":"20760:32:67"},{"expression":{"id":7165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7161,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20802:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7162,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20815:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":7163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20821:2:67","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"20815:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20802:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7166,"nodeType":"ExpressionStatement","src":"20802:21:67"},{"expression":{"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7167,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20834:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7168,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20841:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7169,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20847:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20841:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20840:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7172,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20860:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20840:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20834:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7175,"nodeType":"ExpressionStatement","src":"20834:32:67"},{"expression":{"id":7180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7176,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20876:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7177,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20889:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":7178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20895:2:67","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"20889:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20876:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7181,"nodeType":"ExpressionStatement","src":"20876:21:67"},{"expression":{"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7182,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20908:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7183,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20915:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7184,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7076,"src":"20921:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20915:15:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20914:17:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7187,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5918,"src":"20934:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20914:26:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20908:32:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7190,"nodeType":"ExpressionStatement","src":"20908:32:67"},{"expression":{"id":7195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7191,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"20950:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7192,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"20963:3:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":7193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20969:2:67","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"20963:8:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20950:21:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7196,"nodeType":"ExpressionStatement","src":"20950:21:67"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7197,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7089,"src":"21124:9:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":7198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21136:1:67","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21124:13:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7055,"id":7200,"nodeType":"Return","src":"21117:20:67"}]},"documentation":{"id":7049,"nodeType":"StructuredDocumentation","src":"19170:255:67","text":" @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":7202,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nodeType":"FunctionDefinition","parameters":{"id":7052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7051,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":7202,"src":"19446:8:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7050,"name":"int256","nodeType":"ElementaryTypeName","src":"19446:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19445:10:67"},"returnParameters":{"id":7055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7202,"src":"19478:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7053,"name":"int256","nodeType":"ElementaryTypeName","src":"19478:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19477:8:67"},"scope":7203,"src":"19430:1714:67","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":7204,"src":"1681:19465:67"}],"src":"1094:20053:67"},"id":67},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","exportedSymbols":{"Math":[7474]},"id":7475,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7205,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:68"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7206,"nodeType":"ImportDirective","scope":7475,"sourceUnit":1492,"src":"58:90:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7207,"nodeType":"StructuredDocumentation","src":"150:139:68","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n Adapted from OpenZeppelin's SafeMath library."},"fullyImplemented":true,"id":7474,"linearizedBaseContracts":[7474],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":7216,"nodeType":"Block","src":"490:188:68","statements":[{"AST":{"nodeType":"YulBlock","src":"588:84:68","statements":[{"nodeType":"YulVariableDeclaration","src":"602:20:68","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"615:3:68","type":"","value":"255"},{"name":"a","nodeType":"YulIdentifier","src":"620:1:68"}],"functionName":{"name":"sar","nodeType":"YulIdentifier","src":"611:3:68"},"nodeType":"YulFunctionCall","src":"611:11:68"},"variables":[{"name":"s","nodeType":"YulTypedName","src":"606:1:68","type":""}]},{"nodeType":"YulAssignment","src":"635:27:68","value":{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"653:1:68"},{"name":"s","nodeType":"YulIdentifier","src":"656:1:68"}],"functionName":{"name":"xor","nodeType":"YulIdentifier","src":"649:3:68"},"nodeType":"YulFunctionCall","src":"649:9:68"},{"name":"s","nodeType":"YulIdentifier","src":"660:1:68"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"645:3:68"},"nodeType":"YulFunctionCall","src":"645:17:68"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"635:6:68"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7210,"isOffset":false,"isSlot":false,"src":"620:1:68","valueSize":1},{"declaration":7210,"isOffset":false,"isSlot":false,"src":"653:1:68","valueSize":1},{"declaration":7213,"isOffset":false,"isSlot":false,"src":"635:6:68","valueSize":1}],"id":7215,"nodeType":"InlineAssembly","src":"579:93:68"}]},"documentation":{"id":7208,"nodeType":"StructuredDocumentation","src":"352:71:68","text":" @dev Returns the absolute value of a signed integer."},"id":7217,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nodeType":"FunctionDefinition","parameters":{"id":7211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7210,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7217,"src":"441:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7209,"name":"int256","nodeType":"ElementaryTypeName","src":"441:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"440:10:68"},"returnParameters":{"id":7214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7213,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":7217,"src":"474:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7212,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"473:16:68"},"scope":7474,"src":"428:250:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7243,"nodeType":"Block","src":"861:99:68","statements":[{"assignments":[7228],"declarations":[{"constant":false,"id":7228,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7243,"src":"871:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7227,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7232,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"883:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7230,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"887:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"871:17:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7234,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7228,"src":"907:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7235,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"912:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"907:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7237,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"915:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":989,"src":"915:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7233,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"898:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"898:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7240,"nodeType":"ExpressionStatement","src":"898:37:68"},{"expression":{"id":7241,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7228,"src":"952:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7226,"id":7242,"nodeType":"Return","src":"945:8:68"}]},"documentation":{"id":7218,"nodeType":"StructuredDocumentation","src":"684:105:68","text":" @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow."},"id":7244,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7220,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7244,"src":"807:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7219,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7222,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7244,"src":"818:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7221,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"806:22:68"},"returnParameters":{"id":7226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7244,"src":"852:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"852:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"851:9:68"},"scope":7474,"src":"794:166:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7284,"nodeType":"Block","src":"1126:130:68","statements":[{"assignments":[7255],"declarations":[{"constant":false,"id":7255,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7284,"src":"1136:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7254,"name":"int256","nodeType":"ElementaryTypeName","src":"1136:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7259,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7256,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7247,"src":"1147:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7257,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"1151:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1147:5:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1136:16:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7261,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"1172:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":7262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1177:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1172:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7264,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"1182:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7265,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7247,"src":"1187:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1182:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1172:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1171:18:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7269,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7249,"src":"1194:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":7270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1194:5:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7272,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"1203:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7273,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7247,"src":"1207:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1203:5:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1194:14:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7276,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1193:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1171:38:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7278,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1211:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":989,"src":"1211:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7260,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1162:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1162:69:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7281,"nodeType":"ExpressionStatement","src":"1162:69:68"},{"expression":{"id":7282,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"1248:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7253,"id":7283,"nodeType":"Return","src":"1241:8:68"}]},"documentation":{"id":7245,"nodeType":"StructuredDocumentation","src":"966:91:68","text":" @dev Returns the addition of two signed integers, reverting on overflow."},"id":7285,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7247,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7285,"src":"1075:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7246,"name":"int256","nodeType":"ElementaryTypeName","src":"1075:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7249,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7285,"src":"1085:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7248,"name":"int256","nodeType":"ElementaryTypeName","src":"1085:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1074:20:68"},"returnParameters":{"id":7253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7252,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7285,"src":"1118:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7251,"name":"int256","nodeType":"ElementaryTypeName","src":"1118:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1117:8:68"},"scope":7474,"src":"1062:194:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7311,"nodeType":"Block","src":"1442:99:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7296,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7290,"src":"1461:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7297,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"1466:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1461:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7299,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1469:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":992,"src":"1469:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7295,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1452:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7302,"nodeType":"ExpressionStatement","src":"1452:37:68"},{"assignments":[7304],"declarations":[{"constant":false,"id":7304,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7311,"src":"1499:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7308,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7305,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"1511:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7306,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7290,"src":"1515:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1511:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1499:17:68"},{"expression":{"id":7309,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7304,"src":"1533:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7294,"id":7310,"nodeType":"Return","src":"1526:8:68"}]},"documentation":{"id":7286,"nodeType":"StructuredDocumentation","src":"1262:108:68","text":" @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow."},"id":7312,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7288,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7312,"src":"1388:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7290,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7312,"src":"1399:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7289,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1387:22:68"},"returnParameters":{"id":7294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7293,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7312,"src":"1433:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1432:9:68"},"scope":7474,"src":"1375:166:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7352,"nodeType":"Block","src":"1710:130:68","statements":[{"assignments":[7323],"declarations":[{"constant":false,"id":7323,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7352,"src":"1720:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7322,"name":"int256","nodeType":"ElementaryTypeName","src":"1720:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7327,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7324,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"1731:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7325,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1735:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1731:5:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1720:16:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7329,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1756:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":7330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1761:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1756:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7332,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"1766:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7333,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"1771:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1766:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1756:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1755:18:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7337,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"1778:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":7338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1778:5:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7340,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"1787:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7341,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7315,"src":"1791:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1787:5:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1778:14:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7344,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1777:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:38:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7346,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1795:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":992,"src":"1795:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7328,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1746:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:69:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7349,"nodeType":"ExpressionStatement","src":"1746:69:68"},{"expression":{"id":7350,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7323,"src":"1832:1:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7321,"id":7351,"nodeType":"Return","src":"1825:8:68"}]},"documentation":{"id":7313,"nodeType":"StructuredDocumentation","src":"1547:94:68","text":" @dev Returns the subtraction of two signed integers, reverting on overflow."},"id":7353,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7315,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7353,"src":"1659:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7314,"name":"int256","nodeType":"ElementaryTypeName","src":"1659:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7317,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7353,"src":"1669:8:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7316,"name":"int256","nodeType":"ElementaryTypeName","src":"1669:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1658:20:68"},"returnParameters":{"id":7321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7353,"src":"1702:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7319,"name":"int256","nodeType":"ElementaryTypeName","src":"1702:6:68","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1701:8:68"},"scope":7474,"src":"1646:194:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7364,"nodeType":"Block","src":"1996:154:68","statements":[{"AST":{"nodeType":"YulBlock","src":"2078:66:68","statements":[{"nodeType":"YulAssignment","src":"2092:42:68","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2106:1:68"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2117:1:68"},{"name":"b","nodeType":"YulIdentifier","src":"2120:1:68"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2113:3:68"},"nodeType":"YulFunctionCall","src":"2113:9:68"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2127:1:68"},{"name":"b","nodeType":"YulIdentifier","src":"2130:1:68"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2124:2:68"},"nodeType":"YulFunctionCall","src":"2124:8:68"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2109:3:68"},"nodeType":"YulFunctionCall","src":"2109:24:68"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2102:3:68"},"nodeType":"YulFunctionCall","src":"2102:32:68"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2092:6:68"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7356,"isOffset":false,"isSlot":false,"src":"2106:1:68","valueSize":1},{"declaration":7356,"isOffset":false,"isSlot":false,"src":"2117:1:68","valueSize":1},{"declaration":7356,"isOffset":false,"isSlot":false,"src":"2127:1:68","valueSize":1},{"declaration":7358,"isOffset":false,"isSlot":false,"src":"2120:1:68","valueSize":1},{"declaration":7358,"isOffset":false,"isSlot":false,"src":"2130:1:68","valueSize":1},{"declaration":7361,"isOffset":false,"isSlot":false,"src":"2092:6:68","valueSize":1}],"id":7363,"nodeType":"InlineAssembly","src":"2069:75:68"}]},"documentation":{"id":7354,"nodeType":"StructuredDocumentation","src":"1846:71:68","text":" @dev Returns the largest of two numbers of 256 bits."},"id":7365,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":7359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7356,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7365,"src":"1935:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7358,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7365,"src":"1946:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:22:68"},"returnParameters":{"id":7362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7361,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":7365,"src":"1980:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7360,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1979:16:68"},"scope":7474,"src":"1922:228:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7376,"nodeType":"Block","src":"2307:143:68","statements":[{"AST":{"nodeType":"YulBlock","src":"2378:66:68","statements":[{"nodeType":"YulAssignment","src":"2392:42:68","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2406:1:68"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2417:1:68"},{"name":"b","nodeType":"YulIdentifier","src":"2420:1:68"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:68"},"nodeType":"YulFunctionCall","src":"2413:9:68"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2427:1:68"},{"name":"b","nodeType":"YulIdentifier","src":"2430:1:68"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2424:2:68"},"nodeType":"YulFunctionCall","src":"2424:8:68"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2409:3:68"},"nodeType":"YulFunctionCall","src":"2409:24:68"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2402:3:68"},"nodeType":"YulFunctionCall","src":"2402:32:68"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2392:6:68"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7368,"isOffset":false,"isSlot":false,"src":"2406:1:68","valueSize":1},{"declaration":7368,"isOffset":false,"isSlot":false,"src":"2417:1:68","valueSize":1},{"declaration":7368,"isOffset":false,"isSlot":false,"src":"2427:1:68","valueSize":1},{"declaration":7370,"isOffset":false,"isSlot":false,"src":"2420:1:68","valueSize":1},{"declaration":7370,"isOffset":false,"isSlot":false,"src":"2430:1:68","valueSize":1},{"declaration":7373,"isOffset":false,"isSlot":false,"src":"2392:6:68","valueSize":1}],"id":7375,"nodeType":"InlineAssembly","src":"2369:75:68"}]},"documentation":{"id":7366,"nodeType":"StructuredDocumentation","src":"2156:72:68","text":" @dev Returns the smallest of two numbers of 256 bits."},"id":7377,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":7371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7368,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7377,"src":"2246:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7367,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7370,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7377,"src":"2257:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7369,"name":"uint256","nodeType":"ElementaryTypeName","src":"2257:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:22:68"},"returnParameters":{"id":7374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7373,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":7377,"src":"2291:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7372,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:16:68"},"scope":7474,"src":"2233:217:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7408,"nodeType":"Block","src":"2523:113:68","statements":[{"assignments":[7387],"declarations":[{"constant":false,"id":7387,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7408,"src":"2533:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7386,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7391,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7388,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"2545:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7389,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7381,"src":"2549:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2533:17:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"2569:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2569:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7396,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7387,"src":"2579:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7397,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"2583:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7399,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7381,"src":"2588:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:10:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2569:20:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7402,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2591:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":998,"src":"2591:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7392,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2560:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2560:51:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7405,"nodeType":"ExpressionStatement","src":"2560:51:68"},{"expression":{"id":7406,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7387,"src":"2628:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7385,"id":7407,"nodeType":"Return","src":"2621:8:68"}]},"id":7409,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":7382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7379,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7409,"src":"2469:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7381,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7409,"src":"2480:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7380,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:22:68"},"returnParameters":{"id":7385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7409,"src":"2514:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7383,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:68"},"scope":7474,"src":"2456:180:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7431,"nodeType":"Block","src":"2753:61:68","statements":[{"expression":{"condition":{"id":7420,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"2770:7:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7426,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7411,"src":"2802:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7427,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"2805:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7425,"name":"divDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7454,"src":"2794:7:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2770:37:68","trueExpression":{"arguments":[{"id":7422,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7411,"src":"2786:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7423,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"2789:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7421,"name":"divUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7473,"src":"2780:5:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:11:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7419,"id":7430,"nodeType":"Return","src":"2763:44:68"}]},"id":7432,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":7416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7411,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7432,"src":"2664:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2664:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7413,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7432,"src":"2683:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7412,"name":"uint256","nodeType":"ElementaryTypeName","src":"2683:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7415,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":7432,"src":"2702:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7414,"name":"bool","nodeType":"ElementaryTypeName","src":"2702:4:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2654:66:68"},"returnParameters":{"id":7419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7418,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7432,"src":"2744:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7417,"name":"uint256","nodeType":"ElementaryTypeName","src":"2744:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2743:9:68"},"scope":7474,"src":"2642:172:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7453,"nodeType":"Block","src":"2891:77:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7442,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7436,"src":"2910:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2910:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7445,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2918:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1001,"src":"2918:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7441,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2901:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2901:38:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7448,"nodeType":"ExpressionStatement","src":"2901:38:68"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7449,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7434,"src":"2956:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7450,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7436,"src":"2960:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2956:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7440,"id":7452,"nodeType":"Return","src":"2949:12:68"}]},"id":7454,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":7437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7434,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7454,"src":"2837:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7433,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7436,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7454,"src":"2848:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7435,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2836:22:68"},"returnParameters":{"id":7440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7454,"src":"2882:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7438,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:68"},"scope":7474,"src":"2820:148:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7472,"nodeType":"Block","src":"3050:233:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7464,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7458,"src":"3069:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3074:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3069:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7467,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3077:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1001,"src":"3077:20:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7463,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3060:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3060:38:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7470,"nodeType":"ExpressionStatement","src":"3060:38:68"},{"AST":{"nodeType":"YulBlock","src":"3194:83:68","statements":[{"nodeType":"YulAssignment","src":"3208:59:68","value":{"arguments":[{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3236:1:68"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3229:6:68"},"nodeType":"YulFunctionCall","src":"3229:9:68"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3222:6:68"},"nodeType":"YulFunctionCall","src":"3222:17:68"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3245:1:68","type":"","value":"1"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3256:1:68"},{"kind":"number","nodeType":"YulLiteral","src":"3259:1:68","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3252:3:68"},"nodeType":"YulFunctionCall","src":"3252:9:68"},{"name":"b","nodeType":"YulIdentifier","src":"3263:1:68"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3248:3:68"},"nodeType":"YulFunctionCall","src":"3248:17:68"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3241:3:68"},"nodeType":"YulFunctionCall","src":"3241:25:68"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3218:3:68"},"nodeType":"YulFunctionCall","src":"3218:49:68"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3208:6:68"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7456,"isOffset":false,"isSlot":false,"src":"3236:1:68","valueSize":1},{"declaration":7456,"isOffset":false,"isSlot":false,"src":"3256:1:68","valueSize":1},{"declaration":7458,"isOffset":false,"isSlot":false,"src":"3263:1:68","valueSize":1},{"declaration":7461,"isOffset":false,"isSlot":false,"src":"3208:6:68","valueSize":1}],"id":7471,"nodeType":"InlineAssembly","src":"3185:92:68"}]},"id":7473,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":7459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7456,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7473,"src":"2989:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7455,"name":"uint256","nodeType":"ElementaryTypeName","src":"2989:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7458,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7473,"src":"3000:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7457,"name":"uint256","nodeType":"ElementaryTypeName","src":"3000:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2988:22:68"},"returnParameters":{"id":7462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":7473,"src":"3034:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7460,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3033:16:68"},"scope":7474,"src":"2974:309:68","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7475,"src":"290:2995:68"}],"src":"33:3253:68"},"id":68},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","exportedSymbols":{"Address":[7641]},"id":7642,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7476,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"254:23:69"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7477,"nodeType":"ImportDirective","scope":7642,"sourceUnit":1492,"src":"279:90:69","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7478,"nodeType":"StructuredDocumentation","src":"371:67:69","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":7641,"linearizedBaseContracts":[7641],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":7494,"nodeType":"Block","src":"1097:367:69","statements":[{"assignments":[7487],"declarations":[{"constant":false,"id":7487,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":7494,"src":"1294:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7488,"nodeType":"VariableDeclarationStatement","src":"1294:12:69"},{"AST":{"nodeType":"YulBlock","src":"1381:52:69","statements":[{"nodeType":"YulAssignment","src":"1395:28:69","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1415:7:69"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1403:11:69"},"nodeType":"YulFunctionCall","src":"1403:20:69"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1395:4:69"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7481,"isOffset":false,"isSlot":false,"src":"1415:7:69","valueSize":1},{"declaration":7487,"isOffset":false,"isSlot":false,"src":"1395:4:69","valueSize":1}],"id":7489,"nodeType":"InlineAssembly","src":"1372:61:69"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7490,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7487,"src":"1449:4:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1449:8:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7485,"id":7493,"nodeType":"Return","src":"1442:15:69"}]},"documentation":{"id":7479,"nodeType":"StructuredDocumentation","src":"461:565:69","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="},"id":7495,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":7482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7481,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7495,"src":"1051:15:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7480,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:17:69"},"returnParameters":{"id":7485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7484,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7495,"src":"1091:4:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7483,"name":"bool","nodeType":"ElementaryTypeName","src":"1091:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1090:6:69"},"scope":7641,"src":"1031:433:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7530,"nodeType":"Block","src":"2492:298:69","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":7506,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2519:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}],"id":7505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2511:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7504,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:69","typeDescriptions":{}}},"id":7507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2511:21:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7509,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7500,"src":"2536:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7511,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2544:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"2544:35:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7503,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2502:8:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:78:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7514,"nodeType":"ExpressionStatement","src":"2502:78:69"},{"assignments":[7516,null],"declarations":[{"constant":false,"id":7516,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7530,"src":"2669:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7515,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":7523,"initialValue":{"arguments":[{"hexValue":"","id":7521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2719:2:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":7517,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7498,"src":"2687:9:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":7518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2687:14:69","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":7519,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7500,"src":"2710:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2687:31:69","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2687:35:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2668:54:69"},{"expression":{"arguments":[{"id":7525,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7516,"src":"2741:7:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7526,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2750:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"MemberAccess","referencedDeclaration":1310,"src":"2750:32:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7524,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2732:8:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2732:51:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7529,"nodeType":"ExpressionStatement","src":"2732:51:69"}]},"documentation":{"id":7496,"nodeType":"StructuredDocumentation","src":"1510:906:69","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":7531,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":7501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7498,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7531,"src":"2440:25:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":7497,"name":"address","nodeType":"ElementaryTypeName","src":"2440:15:69","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":7500,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7531,"src":"2467:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:43:69"},"returnParameters":{"id":7502,"nodeType":"ParameterList","parameters":[],"src":"2492:0:69"},"scope":7641,"src":"2421:369:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7555,"nodeType":"Block","src":"3583:189:69","statements":[{"assignments":[7542,7544],"declarations":[{"constant":false,"id":7542,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7555,"src":"3653:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7541,"name":"bool","nodeType":"ElementaryTypeName","src":"3653:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7544,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7555,"src":"3667:23:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7543,"name":"bytes","nodeType":"ElementaryTypeName","src":"3667:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7549,"initialValue":{"arguments":[{"id":7547,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"3706:4:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7545,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7534,"src":"3694:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3694:11:69","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3694:17:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3652:59:69"},{"expression":{"arguments":[{"id":7551,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"3745:7:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7552,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7544,"src":"3754:10:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7550,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7640,"src":"3728:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3728:37:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7540,"id":7554,"nodeType":"Return","src":"3721:44:69"}]},"documentation":{"id":7532,"nodeType":"StructuredDocumentation","src":"2796:693:69","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":7556,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":7537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7534,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":7556,"src":"3516:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7533,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7536,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7556,"src":"3532:17:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7535,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3515:35:69"},"returnParameters":{"id":7540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7539,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7556,"src":"3569:12:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7538,"name":"bytes","nodeType":"ElementaryTypeName","src":"3569:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3568:14:69"},"scope":7641,"src":"3494:278:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7584,"nodeType":"Block","src":"4155:205:69","statements":[{"assignments":[7569,7571],"declarations":[{"constant":false,"id":7569,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7584,"src":"4225:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7568,"name":"bool","nodeType":"ElementaryTypeName","src":"4225:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7571,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7584,"src":"4239:23:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7570,"name":"bytes","nodeType":"ElementaryTypeName","src":"4239:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7578,"initialValue":{"arguments":[{"id":7576,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7561,"src":"4294:4:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7572,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"4266:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"4266:11:69","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":7574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"4286:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4266:27:69","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4224:75:69"},{"expression":{"arguments":[{"id":7580,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"4333:7:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7581,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7571,"src":"4342:10:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7579,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7640,"src":"4316:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:37:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7567,"id":7583,"nodeType":"Return","src":"4309:44:69"}]},"documentation":{"id":7557,"nodeType":"StructuredDocumentation","src":"3817:190:69","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but passing some native ETH as msg.value to the call.\n _Available since v3.4._"},"id":7585,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":7564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7559,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":7585,"src":"4052:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7558,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7561,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7585,"src":"4076:17:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7560,"name":"bytes","nodeType":"ElementaryTypeName","src":"4076:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7563,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7585,"src":"4103:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7562,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4042:80:69"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7585,"src":"4141:12:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7565,"name":"bytes","nodeType":"ElementaryTypeName","src":"4141:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4140:14:69"},"scope":7641,"src":"4012:348:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7609,"nodeType":"Block","src":"4636:197:69","statements":[{"assignments":[7596,7598],"declarations":[{"constant":false,"id":7596,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7609,"src":"4706:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7595,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7598,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7609,"src":"4720:23:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7597,"name":"bytes","nodeType":"ElementaryTypeName","src":"4720:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7603,"initialValue":{"arguments":[{"id":7601,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"4767:4:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7599,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"4747:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"4747:19:69","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:25:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4705:67:69"},{"expression":{"arguments":[{"id":7605,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"4806:7:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7606,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7598,"src":"4815:10:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7604,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7640,"src":"4789:16:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":7607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:37:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7594,"id":7608,"nodeType":"Return","src":"4782:44:69"}]},"documentation":{"id":7586,"nodeType":"StructuredDocumentation","src":"4366:168:69","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":7610,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":7591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7588,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":7610,"src":"4569:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7587,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7590,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7610,"src":"4585:17:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7589,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4568:35:69"},"returnParameters":{"id":7594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7610,"src":"4622:12:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4622:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4621:14:69"},"scope":7641,"src":"4539:294:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7639,"nodeType":"Block","src":"5159:612:69","statements":[{"condition":{"id":7620,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"5173:7:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7637,"nodeType":"Block","src":"5230:535:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7624,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7615,"src":"5314:10:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5314:17:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5334:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5314:21:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7635,"nodeType":"Block","src":"5685:70:69","statements":[{"expression":{"arguments":[{"expression":{"id":7631,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5711:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LOW_LEVEL_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1340,"src":"5711:28:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7630,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5703:7:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5703:37:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7634,"nodeType":"ExpressionStatement","src":"5703:37:69"}]},"id":7636,"nodeType":"IfStatement","src":"5310:445:69","trueBody":{"id":7629,"nodeType":"Block","src":"5337:342:69","statements":[{"AST":{"nodeType":"YulBlock","src":"5520:145:69","statements":[{"nodeType":"YulVariableDeclaration","src":"5542:40:69","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"5571:10:69"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5565:5:69"},"nodeType":"YulFunctionCall","src":"5565:17:69"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"5546:15:69","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5614:2:69","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"5618:10:69"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:69"},"nodeType":"YulFunctionCall","src":"5610:19:69"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"5631:15:69"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5603:6:69"},"nodeType":"YulFunctionCall","src":"5603:44:69"},"nodeType":"YulExpressionStatement","src":"5603:44:69"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7615,"isOffset":false,"isSlot":false,"src":"5571:10:69","valueSize":1},{"declaration":7615,"isOffset":false,"isSlot":false,"src":"5618:10:69","valueSize":1}],"id":7628,"nodeType":"InlineAssembly","src":"5511:154:69"}]}}]},"id":7638,"nodeType":"IfStatement","src":"5169:596:69","trueBody":{"id":7623,"nodeType":"Block","src":"5182:42:69","statements":[{"expression":{"id":7621,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7615,"src":"5203:10:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7619,"id":7622,"nodeType":"Return","src":"5196:17:69"}]}}]},"documentation":{"id":7611,"nodeType":"StructuredDocumentation","src":"4839:213:69","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n revert reason or using the one provided.\n _Available since v4.3._"},"id":7640,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":7616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7640,"src":"5083:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7612,"name":"bool","nodeType":"ElementaryTypeName","src":"5083:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7615,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7640,"src":"5097:23:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7614,"name":"bytes","nodeType":"ElementaryTypeName","src":"5097:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5082:39:69"},"returnParameters":{"id":7619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7618,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7640,"src":"5145:12:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7617,"name":"bytes","nodeType":"ElementaryTypeName","src":"5145:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5144:14:69"},"scope":7641,"src":"5057:714:69","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7642,"src":"439:5334:69"}],"src":"254:5520:69"},"id":69},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","exportedSymbols":{"EIP712":[7732]},"id":7733,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7643,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:70"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7644,"nodeType":"StructuredDocumentation","src":"58:1142:70","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":7732,"linearizedBaseContracts":[7732],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7646,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":7732,"src":"1277:38:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":7648,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":7732,"src":"1321:41:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7647,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1321:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":7650,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":7732,"src":"1368:36:70","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7682,"nodeType":"Block","src":"2075:225:70","statements":[{"expression":{"id":7665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7658,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"2085:12:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7662,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7653,"src":"2116:4:70","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2110:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7660,"name":"bytes","nodeType":"ElementaryTypeName","src":"2110:5:70","typeDescriptions":{}}},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2110:11:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7659,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2100:9:70","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:22:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2085:37:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7666,"nodeType":"ExpressionStatement","src":"2085:37:70"},{"expression":{"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7667,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2132:15:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7671,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"2166:7:70","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7669,"name":"bytes","nodeType":"ElementaryTypeName","src":"2160:5:70","typeDescriptions":{}}},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:14:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7668,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2150:9:70","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:25:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2132:43:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7675,"nodeType":"ExpressionStatement","src":"2132:43:70"},{"expression":{"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7676,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"2185:10:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":7678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2208:84:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":7677,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2198:9:70","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:95:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2185:108:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7681,"nodeType":"ExpressionStatement","src":"2185:108:70"}]},"documentation":{"id":7651,"nodeType":"StructuredDocumentation","src":"1456:559:70","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":7683,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7653,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7683,"src":"2032:18:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7652,"name":"string","nodeType":"ElementaryTypeName","src":"2032:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7655,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":7683,"src":"2052:21:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7654,"name":"string","nodeType":"ElementaryTypeName","src":"2052:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2031:43:70"},"returnParameters":{"id":7657,"nodeType":"ParameterList","parameters":[],"src":"2075:0:70"},"scope":7732,"src":"2020:280:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7704,"nodeType":"Block","src":"2456:118:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":7692,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"2494:10:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7693,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7646,"src":"2506:12:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7694,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7648,"src":"2520:15:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7695,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"2537:11:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:13:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7699,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2560:4:70","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$7732","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$7732","typeString":"contract EIP712"}],"id":7698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2552:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7697,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:70","typeDescriptions":{}}},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:13:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7690,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2483:3:70","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2483:10:70","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:83:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7689,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2473:9:70","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:94:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7688,"id":7703,"nodeType":"Return","src":"2466:101:70"}]},"documentation":{"id":7684,"nodeType":"StructuredDocumentation","src":"2306:75:70","text":" @dev Returns the domain separator for the current chain."},"id":7705,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":7685,"nodeType":"ParameterList","parameters":[],"src":"2413:2:70"},"returnParameters":{"id":7688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7687,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7705,"src":"2447:7:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:70"},"scope":7732,"src":"2386:188:70","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7723,"nodeType":"Block","src":"3285:97:70","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":7716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3329:10:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":7717,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"3341:18:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:20:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7719,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7708,"src":"3363:10:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7714,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3312:3:70","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3312:16:70","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:62:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7713,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3302:9:70","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:73:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7712,"id":7722,"nodeType":"Return","src":"3295:80:70"}]},"documentation":{"id":7706,"nodeType":"StructuredDocumentation","src":"2580:614:70","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":7724,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":7709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7708,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7724,"src":"3225:18:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3225:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3224:20:70"},"returnParameters":{"id":7712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7711,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7724,"src":"3276:7:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3276:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3275:9:70"},"scope":7732,"src":"3199:183:70","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7730,"nodeType":"Block","src":"3495:125:70","statements":[{"AST":{"nodeType":"YulBlock","src":"3570:44:70","statements":[{"nodeType":"YulAssignment","src":"3584:20:70","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"3595:7:70"},"nodeType":"YulFunctionCall","src":"3595:9:70"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"3584:7:70"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7727,"isOffset":false,"isSlot":false,"src":"3584:7:70","valueSize":1}],"id":7729,"nodeType":"InlineAssembly","src":"3561:53:70"}]},"id":7731,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":7725,"nodeType":"ParameterList","parameters":[],"src":"3453:2:70"},"returnParameters":{"id":7728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7727,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":7731,"src":"3478:15:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:17:70"},"scope":7732,"src":"3433:187:70","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":7733,"src":"1201:2421:70"}],"src":"33:3590:70"},"id":70},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","exportedSymbols":{"ERC20":[8223]},"id":8224,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7734,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:71"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7735,"nodeType":"ImportDirective","scope":8224,"sourceUnit":1492,"src":"58:90:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7736,"nodeType":"ImportDirective","scope":8224,"sourceUnit":1723,"src":"149:87:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"./SafeMath.sol","id":7737,"nodeType":"ImportDirective","scope":8224,"sourceUnit":9186,"src":"238:24:71","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7739,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1445:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":7740,"nodeType":"InheritanceSpecifier","src":"1445:6:71"}],"contractDependencies":[1722],"contractKind":"contract","documentation":{"id":7738,"nodeType":"StructuredDocumentation","src":"264:1162:71","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":8223,"linearizedBaseContracts":[8223,1722],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":7743,"libraryName":{"id":7741,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":9185,"src":"1464:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$9185","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1458:27:71","typeName":{"id":7742,"name":"uint256","nodeType":"ElementaryTypeName","src":"1477:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7747,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":8223,"src":"1491:45:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7746,"keyType":{"id":7744,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1491:27:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7753,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":8223,"src":"1543:67:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7752,"keyType":{"id":7748,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:47:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7751,"keyType":{"id":7749,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1562:27:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7755,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":8223,"src":"1617:28:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7754,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7757,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":8223,"src":"1652:20:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7756,"name":"string","nodeType":"ElementaryTypeName","src":"1652:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7759,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":8223,"src":"1678:22:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7758,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7761,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":8223,"src":"1706:23:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7760,"name":"uint8","nodeType":"ElementaryTypeName","src":"1706:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":7781,"nodeType":"Block","src":"2108:81:71","statements":[{"expression":{"id":7771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7769,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"2118:5:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7770,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"2126:5:71","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2118:13:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7772,"nodeType":"ExpressionStatement","src":"2118:13:71"},{"expression":{"id":7775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7773,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"2141:7:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7774,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7766,"src":"2151:7:71","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2141:17:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7776,"nodeType":"ExpressionStatement","src":"2141:17:71"},{"expression":{"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7777,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"2168:9:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":7778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2180:2:71","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2168:14:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7780,"nodeType":"ExpressionStatement","src":"2168:14:71"}]},"documentation":{"id":7762,"nodeType":"StructuredDocumentation","src":"1736:311:71","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":7782,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7764,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":7782,"src":"2064:19:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7763,"name":"string","nodeType":"ElementaryTypeName","src":"2064:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7766,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":7782,"src":"2085:21:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7765,"name":"string","nodeType":"ElementaryTypeName","src":"2085:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2063:44:71"},"returnParameters":{"id":7768,"nodeType":"ParameterList","parameters":[],"src":"2108:0:71"},"scope":8223,"src":"2052:137:71","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7790,"nodeType":"Block","src":"2306:29:71","statements":[{"expression":{"id":7788,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"2323:5:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7787,"id":7789,"nodeType":"Return","src":"2316:12:71"}]},"documentation":{"id":7783,"nodeType":"StructuredDocumentation","src":"2195:54:71","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7791,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":7784,"nodeType":"ParameterList","parameters":[],"src":"2267:2:71"},"returnParameters":{"id":7787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7786,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7791,"src":"2291:13:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7785,"name":"string","nodeType":"ElementaryTypeName","src":"2291:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2290:15:71"},"scope":8223,"src":"2254:81:71","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":7799,"nodeType":"Block","src":"2502:31:71","statements":[{"expression":{"id":7797,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"2519:7:71","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7796,"id":7798,"nodeType":"Return","src":"2512:14:71"}]},"documentation":{"id":7792,"nodeType":"StructuredDocumentation","src":"2341:102:71","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":7800,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":7793,"nodeType":"ParameterList","parameters":[],"src":"2463:2:71"},"returnParameters":{"id":7796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7795,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7800,"src":"2487:13:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7794,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:71","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2486:15:71"},"scope":8223,"src":"2448:85:71","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":7808,"nodeType":"Block","src":"3204:33:71","statements":[{"expression":{"id":7806,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"3221:9:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7805,"id":7807,"nodeType":"Return","src":"3214:16:71"}]},"documentation":{"id":7801,"nodeType":"StructuredDocumentation","src":"2539:612:71","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":7809,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":7802,"nodeType":"ParameterList","parameters":[],"src":"3173:2:71"},"returnParameters":{"id":7805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7809,"src":"3197:5:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7803,"name":"uint8","nodeType":"ElementaryTypeName","src":"3197:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3196:7:71"},"scope":8223,"src":"3156:81:71","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1653],"body":{"id":7818,"nodeType":"Block","src":"3570:36:71","statements":[{"expression":{"id":7816,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"3587:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7815,"id":7817,"nodeType":"Return","src":"3580:19:71"}]},"documentation":{"id":7810,"nodeType":"StructuredDocumentation","src":"3243:252:71","text":" @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"functionSelector":"18160ddd","id":7819,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":7812,"nodeType":"OverrideSpecifier","overrides":[],"src":"3543:8:71"},"parameters":{"id":7811,"nodeType":"ParameterList","parameters":[],"src":"3520:2:71"},"returnParameters":{"id":7815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7814,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7819,"src":"3561:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7813,"name":"uint256","nodeType":"ElementaryTypeName","src":"3561:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3560:9:71"},"scope":8223,"src":"3500:106:71","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7829,"nodeType":"Block","src":"3927:37:71","statements":[{"expression":{"id":7827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7825,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"3937:12:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7822,"src":"3952:5:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3937:20:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7828,"nodeType":"ExpressionStatement","src":"3937:20:71"}]},"documentation":{"id":7820,"nodeType":"StructuredDocumentation","src":"3612:253:71","text":" @dev Sets a new value for the total supply. It should only be set using this function.\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"id":7830,"implemented":true,"kind":"function","modifiers":[],"name":"_setTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":7823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7822,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7830,"src":"3895:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7821,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3894:15:71"},"returnParameters":{"id":7824,"nodeType":"ParameterList","parameters":[],"src":"3927:0:71"},"scope":8223,"src":"3870:94:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1661],"body":{"id":7843,"nodeType":"Block","src":"4097:42:71","statements":[{"expression":{"baseExpression":{"id":7839,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"4114:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7841,"indexExpression":{"id":7840,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"4124:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4114:18:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7838,"id":7842,"nodeType":"Return","src":"4107:25:71"}]},"documentation":{"id":7831,"nodeType":"StructuredDocumentation","src":"3970:47:71","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":7844,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":7835,"nodeType":"OverrideSpecifier","overrides":[],"src":"4070:8:71"},"parameters":{"id":7834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7833,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7844,"src":"4041:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7832,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4040:17:71"},"returnParameters":{"id":7838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7837,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7844,"src":"4088:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7836,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:9:71"},"scope":8223,"src":"4022:117:71","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1671],"body":{"id":7864,"nodeType":"Block","src":"4434:78:71","statements":[{"expression":{"arguments":[{"expression":{"id":7856,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4454:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4454:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7858,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7847,"src":"4466:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7859,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"4477:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7855,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"4444:9:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:40:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7861,"nodeType":"ExpressionStatement","src":"4444:40:71"},{"expression":{"hexValue":"74727565","id":7862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4501:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7854,"id":7863,"nodeType":"Return","src":"4494:11:71"}]},"documentation":{"id":7845,"nodeType":"StructuredDocumentation","src":"4145:192:71","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":7865,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":7851,"nodeType":"OverrideSpecifier","overrides":[],"src":"4410:8:71"},"parameters":{"id":7850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7847,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7865,"src":"4360:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7846,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7849,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7865,"src":"4379:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7848,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:35:71"},"returnParameters":{"id":7854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7853,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7865,"src":"4428:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7852,"name":"bool","nodeType":"ElementaryTypeName","src":"4428:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4427:6:71"},"scope":8223,"src":"4342:170:71","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1681],"body":{"id":7882,"nodeType":"Block","src":"4668:51:71","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7876,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"4685:11:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7878,"indexExpression":{"id":7877,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"4697:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:18:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7880,"indexExpression":{"id":7879,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7870,"src":"4704:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:27:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7875,"id":7881,"nodeType":"Return","src":"4678:34:71"}]},"documentation":{"id":7866,"nodeType":"StructuredDocumentation","src":"4518:47:71","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":7883,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":7872,"nodeType":"OverrideSpecifier","overrides":[],"src":"4641:8:71"},"parameters":{"id":7871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7868,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7883,"src":"4589:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7867,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7870,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7883,"src":"4604:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7869,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4588:32:71"},"returnParameters":{"id":7875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7874,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7883,"src":"4659:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7873,"name":"uint256","nodeType":"ElementaryTypeName","src":"4659:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4658:9:71"},"scope":8223,"src":"4570:149:71","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1691],"body":{"id":7903,"nodeType":"Block","src":"4946:75:71","statements":[{"expression":{"arguments":[{"expression":{"id":7895,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7897,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"4977:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7898,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7888,"src":"4986:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7894,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"4956:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:37:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7900,"nodeType":"ExpressionStatement","src":"4956:37:71"},{"expression":{"hexValue":"74727565","id":7901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5010:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7893,"id":7902,"nodeType":"Return","src":"5003:11:71"}]},"documentation":{"id":7884,"nodeType":"StructuredDocumentation","src":"4725:127:71","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":7904,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":7890,"nodeType":"OverrideSpecifier","overrides":[],"src":"4922:8:71"},"parameters":{"id":7889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7886,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7904,"src":"4874:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7885,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7888,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7904,"src":"4891:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7887,"name":"uint256","nodeType":"ElementaryTypeName","src":"4891:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4873:33:71"},"returnParameters":{"id":7893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7892,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7904,"src":"4940:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7891,"name":"bool","nodeType":"ElementaryTypeName","src":"4940:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4939:6:71"},"scope":8223,"src":"4857:164:71","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1703],"body":{"id":7942,"nodeType":"Block","src":"5630:244:71","statements":[{"expression":{"arguments":[{"id":7918,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"5650:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7919,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"5658:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7920,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7911,"src":"5669:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7917,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"5640:9:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5640:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7922,"nodeType":"ExpressionStatement","src":"5640:36:71"},{"expression":{"arguments":[{"id":7924,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"5708:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7925,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5728:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5728:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":7934,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7911,"src":"5788:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7935,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5796:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"5796:39:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7927,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"5752:11:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7929,"indexExpression":{"id":7928,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7907,"src":"5764:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:19:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7932,"indexExpression":{"expression":{"id":7930,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5772:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:31:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9184,"src":"5752:35:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:84:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7923,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"5686:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5686:160:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7939,"nodeType":"ExpressionStatement","src":"5686:160:71"},{"expression":{"hexValue":"74727565","id":7940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5863:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7916,"id":7941,"nodeType":"Return","src":"5856:11:71"}]},"documentation":{"id":7905,"nodeType":"StructuredDocumentation","src":"5027:456:71","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":7943,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":7913,"nodeType":"OverrideSpecifier","overrides":[],"src":"5606:8:71"},"parameters":{"id":7912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7907,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":7943,"src":"5519:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7906,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7909,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7943,"src":"5543:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7908,"name":"address","nodeType":"ElementaryTypeName","src":"5543:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7911,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7943,"src":"5570:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7910,"name":"uint256","nodeType":"ElementaryTypeName","src":"5570:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:81:71"},"returnParameters":{"id":7916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7915,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7943,"src":"5624:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7914,"name":"bool","nodeType":"ElementaryTypeName","src":"5624:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5623:6:71"},"scope":8223,"src":"5488:386:71","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7970,"nodeType":"Block","src":"6363:117:71","statements":[{"expression":{"arguments":[{"expression":{"id":7954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6382:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6382:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7956,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7946,"src":"6394:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7964,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"6440:10:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7957,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"6403:11:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7960,"indexExpression":{"expression":{"id":7958,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6415:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6415:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:23:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7962,"indexExpression":{"id":7961,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7946,"src":"6427:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:32:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9138,"src":"6403:36:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6403:48:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7953,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"6373:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:79:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7967,"nodeType":"ExpressionStatement","src":"6373:79:71"},{"expression":{"hexValue":"74727565","id":7968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6469:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7952,"id":7969,"nodeType":"Return","src":"6462:11:71"}]},"documentation":{"id":7944,"nodeType":"StructuredDocumentation","src":"5880:384:71","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":7971,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":7949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7946,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7971,"src":"6296:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7945,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7948,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":7971,"src":"6313:18:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7947,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:37:71"},"returnParameters":{"id":7952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7951,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7971,"src":"6357:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7950,"name":"bool","nodeType":"ElementaryTypeName","src":"6357:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6356:6:71"},"scope":8223,"src":"6269:211:71","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8000,"nodeType":"Block","src":"7066:213:71","statements":[{"expression":{"arguments":[{"expression":{"id":7982,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7098:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7098:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7984,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7122:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7992,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"7180:15:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7993,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"7197:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":7994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"7197:43:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7985,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"7143:11:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7988,"indexExpression":{"expression":{"id":7986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7155:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7155:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:23:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7990,"indexExpression":{"id":7989,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"7167:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:32:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9184,"src":"7143:36:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7143:98:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7981,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"7076:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7076:175:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7997,"nodeType":"ExpressionStatement","src":"7076:175:71"},{"expression":{"hexValue":"74727565","id":7998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7268:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7980,"id":7999,"nodeType":"Return","src":"7261:11:71"}]},"documentation":{"id":7972,"nodeType":"StructuredDocumentation","src":"6486:476:71","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":8001,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":7977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7974,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":8001,"src":"6994:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7973,"name":"address","nodeType":"ElementaryTypeName","src":"6994:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7976,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":8001,"src":"7011:23:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7975,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6993:42:71"},"returnParameters":{"id":7980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7979,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8001,"src":"7060:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7978,"name":"bool","nodeType":"ElementaryTypeName","src":"7060:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7059:6:71"},"scope":8223,"src":"6967:312:71","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8069,"nodeType":"Block","src":"7870:442:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8012,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"7889:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8013,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:71","typeDescriptions":{}}},"id":8016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7899:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7889:20:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8018,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"7911:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"7911:39:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8011,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"7880:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:71:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8021,"nodeType":"ExpressionStatement","src":"7880:71:71"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8023,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"7970:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7991:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7983:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8024,"name":"address","nodeType":"ElementaryTypeName","src":"7983:7:71","typeDescriptions":{}}},"id":8027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7970:23:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8029,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"7995:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1277,"src":"7995:37:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8022,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"7961:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:72:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8032,"nodeType":"ExpressionStatement","src":"7961:72:71"},{"expression":{"arguments":[{"id":8034,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"8065:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8035,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"8073:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8036,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"8084:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8033,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"8044:20:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8044:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8038,"nodeType":"ExpressionStatement","src":"8044:47:71"},{"expression":{"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8039,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8102:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8041,"indexExpression":{"id":8040,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"8112:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8102:17:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8046,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"8144:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8047,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"8152:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1298,"src":"8152:37:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":8042,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8122:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8044,"indexExpression":{"id":8043,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"8132:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8122:17:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9184,"src":"8122:21:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8122:68:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8102:88:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8051,"nodeType":"ExpressionStatement","src":"8102:88:71"},{"expression":{"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8052,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8200:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8054,"indexExpression":{"id":8053,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"8210:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8200:20:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8059,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"8248:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":8055,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8223:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8057,"indexExpression":{"id":8056,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"8233:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8223:20:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9138,"src":"8223:24:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8223:32:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8200:55:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8062,"nodeType":"ExpressionStatement","src":"8200:55:71"},{"eventCall":{"arguments":[{"id":8064,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"8279:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8065,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"8287:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8066,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"8298:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8063,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"8270:8:71","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8270:35:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8068,"nodeType":"EmitStatement","src":"8265:40:71"}]},"documentation":{"id":8002,"nodeType":"StructuredDocumentation","src":"7285:463:71","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":8070,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":8009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8004,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":8070,"src":"7781:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8003,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8006,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8070,"src":"7805:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8005,"name":"address","nodeType":"ElementaryTypeName","src":"7805:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8008,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8070,"src":"7832:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8007,"name":"uint256","nodeType":"ElementaryTypeName","src":"7832:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7771:81:71"},"returnParameters":{"id":8010,"nodeType":"ParameterList","parameters":[],"src":"7870:0:71"},"scope":8223,"src":"7753:559:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8115,"nodeType":"Block","src":"8648:232:71","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8679:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8079,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:71","typeDescriptions":{}}},"id":8082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8083,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"8691:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8084,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"8700:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8078,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"8658:20:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:49:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8086,"nodeType":"ExpressionStatement","src":"8658:49:71"},{"expression":{"arguments":[{"arguments":[{"id":8091,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"8752:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8088,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"8734:11:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9138,"src":"8734:17:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:25:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8087,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"8718:15:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8718:42:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8094,"nodeType":"ExpressionStatement","src":"8718:42:71"},{"expression":{"id":8104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8095,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8770:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8097,"indexExpression":{"id":8096,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"8780:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8770:18:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8102,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"8814:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":8098,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"8791:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8100,"indexExpression":{"id":8099,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"8801:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8791:18:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9138,"src":"8791:22:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8791:30:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8770:51:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8105,"nodeType":"ExpressionStatement","src":"8770:51:71"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8107,"name":"address","nodeType":"ElementaryTypeName","src":"8845:7:71","typeDescriptions":{}}},"id":8110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8845:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8111,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8073,"src":"8857:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8112,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"8866:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8106,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"8836:8:71","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8836:37:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8114,"nodeType":"EmitStatement","src":"8831:42:71"}]},"documentation":{"id":8071,"nodeType":"StructuredDocumentation","src":"8318:260:71","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":8116,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":8076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8073,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":8116,"src":"8598:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8072,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8075,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8116,"src":"8615:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8074,"name":"uint256","nodeType":"ElementaryTypeName","src":"8615:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:33:71"},"returnParameters":{"id":8077,"nodeType":"ParameterList","parameters":[],"src":"8648:0:71"},"scope":8223,"src":"8583:297:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8174,"nodeType":"Block","src":"9265:346:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8125,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"9284:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9303:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9295:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8126,"name":"address","nodeType":"ElementaryTypeName","src":"9295:7:71","typeDescriptions":{}}},"id":8129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9295:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9284:21:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8131,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"9307:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"9307:35:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8124,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"9275:8:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:68:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8134,"nodeType":"ExpressionStatement","src":"9275:68:71"},{"expression":{"arguments":[{"id":8136,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"9375:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9392:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8137,"name":"address","nodeType":"ElementaryTypeName","src":"9384:7:71","typeDescriptions":{}}},"id":8140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9384:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8141,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"9396:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8135,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"9354:20:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9354:49:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8143,"nodeType":"ExpressionStatement","src":"9354:49:71"},{"expression":{"id":8155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8144,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"9414:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8146,"indexExpression":{"id":8145,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"9424:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9414:18:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8151,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"9458:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8152,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"9466:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1352,"src":"9466:33:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":8147,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"9435:9:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8149,"indexExpression":{"id":8148,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"9445:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9435:18:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9184,"src":"9435:22:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:65:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9414:86:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8156,"nodeType":"ExpressionStatement","src":"9414:86:71"},{"expression":{"arguments":[{"arguments":[{"id":8161,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"9544:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8158,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"9526:11:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9156,"src":"9526:17:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:25:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8157,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"9510:15:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9510:42:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8164,"nodeType":"ExpressionStatement","src":"9510:42:71"},{"eventCall":{"arguments":[{"id":8166,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8119,"src":"9576:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9593:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9585:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8167,"name":"address","nodeType":"ElementaryTypeName","src":"9585:7:71","typeDescriptions":{}}},"id":8170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8171,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"9597:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8165,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"9567:8:71","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9567:37:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8173,"nodeType":"EmitStatement","src":"9562:42:71"}]},"documentation":{"id":8117,"nodeType":"StructuredDocumentation","src":"8886:309:71","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":8175,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":8122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8119,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":8175,"src":"9215:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8118,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8121,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8175,"src":"9232:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8120,"name":"uint256","nodeType":"ElementaryTypeName","src":"9232:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9214:33:71"},"returnParameters":{"id":8123,"nodeType":"ParameterList","parameters":[],"src":"9265:0:71"},"scope":8223,"src":"9200:411:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8199,"nodeType":"Block","src":"10147:100:71","statements":[{"expression":{"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8185,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"10157:11:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8188,"indexExpression":{"id":8186,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8178,"src":"10169:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10157:18:71","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8189,"indexExpression":{"id":8187,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"10176:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10157:27:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8190,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"10187:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:36:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8192,"nodeType":"ExpressionStatement","src":"10157:36:71"},{"eventCall":{"arguments":[{"id":8194,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8178,"src":"10217:5:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8195,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"10224:7:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8196,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8182,"src":"10233:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8193,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"10208:8:71","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10208:32:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8198,"nodeType":"EmitStatement","src":"10203:37:71"}]},"documentation":{"id":8176,"nodeType":"StructuredDocumentation","src":"9617:412:71","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":8200,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":8183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8178,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":8200,"src":"10061:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8177,"name":"address","nodeType":"ElementaryTypeName","src":"10061:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8180,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":8200,"src":"10084:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8179,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8182,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8200,"src":"10109:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8181,"name":"uint256","nodeType":"ElementaryTypeName","src":"10109:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10051:78:71"},"returnParameters":{"id":8184,"nodeType":"ParameterList","parameters":[],"src":"10147:0:71"},"scope":8223,"src":"10034:213:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8210,"nodeType":"Block","src":"10620:38:71","statements":[{"expression":{"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8206,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"10630:9:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8207,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"10642:9:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10630:21:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":8209,"nodeType":"ExpressionStatement","src":"10630:21:71"}]},"documentation":{"id":8201,"nodeType":"StructuredDocumentation","src":"10253:312:71","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":8211,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":8204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8203,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":8211,"src":"10594:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8202,"name":"uint8","nodeType":"ElementaryTypeName","src":"10594:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10593:17:71"},"returnParameters":{"id":8205,"nodeType":"ParameterList","parameters":[],"src":"10620:0:71"},"scope":8223,"src":"10570:88:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8221,"nodeType":"Block","src":"11364:64:71","statements":[]},"documentation":{"id":8212,"nodeType":"StructuredDocumentation","src":"10664:576:71","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":8222,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":8219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8214,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":8222,"src":"11284:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8213,"name":"address","nodeType":"ElementaryTypeName","src":"11284:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8216,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8222,"src":"11306:10:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8215,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8218,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8222,"src":"11326:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8217,"name":"uint256","nodeType":"ElementaryTypeName","src":"11326:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11274:72:71"},"returnParameters":{"id":8220,"nodeType":"ParameterList","parameters":[],"src":"11364:0:71"},"scope":8223,"src":"11245:183:71","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8224,"src":"1427:10003:71"}],"src":"33:11398:71"},"id":71},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"ERC20Burnable":[8280]},"id":8281,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8225,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:72"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":8226,"nodeType":"ImportDirective","scope":8281,"sourceUnit":8224,"src":"58:21:72","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8228,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"325:5:72","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":8229,"nodeType":"InheritanceSpecifier","src":"325:5:72"}],"contractDependencies":[1722,8223],"contractKind":"contract","documentation":{"id":8227,"nodeType":"StructuredDocumentation","src":"81:208:72","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":8280,"linearizedBaseContracts":[8280,8223,1722],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":8232,"libraryName":{"id":8230,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":9185,"src":"343:8:72","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$9185","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"337:27:72","typeName":{"id":8231,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":8244,"nodeType":"Block","src":"518:42:72","statements":[{"expression":{"arguments":[{"expression":{"id":8239,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"534:3:72","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"534:10:72","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8241,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"546:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8238,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"528:5:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"528:25:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8243,"nodeType":"ExpressionStatement","src":"528:25:72"}]},"documentation":{"id":8233,"nodeType":"StructuredDocumentation","src":"370:98:72","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":8245,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":8236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8235,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8245,"src":"487:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8234,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"486:16:72"},"returnParameters":{"id":8237,"nodeType":"ParameterList","parameters":[],"src":"518:0:72"},"scope":8280,"src":"473:87:72","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8278,"nodeType":"Block","src":"932:217:72","statements":[{"assignments":[8254],"declarations":[{"constant":false,"id":8254,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":8278,"src":"942:26:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8253,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8265,"initialValue":{"arguments":[{"id":8261,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"1006:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8262,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1014:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1301,"src":"1014:35:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8256,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8248,"src":"981:7:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8257,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"990:3:72","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"990:10:72","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":8255,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"971:9:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:30:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":9184,"src":"971:34:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:79:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"942:108:72"},{"expression":{"arguments":[{"id":8267,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8248,"src":"1070:7:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1079:3:72","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1079:10:72","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":8270,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8254,"src":"1091:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8266,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"1061:8:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:49:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8272,"nodeType":"ExpressionStatement","src":"1061:49:72"},{"expression":{"arguments":[{"id":8274,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8248,"src":"1126:7:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8275,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"1135:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8273,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"1120:5:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8277,"nodeType":"ExpressionStatement","src":"1120:22:72"}]},"documentation":{"id":8246,"nodeType":"StructuredDocumentation","src":"566:295:72","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":8279,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":8251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8248,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":8279,"src":"884:15:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8247,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8250,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8279,"src":"901:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8249,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:33:72"},"returnParameters":{"id":8252,"nodeType":"ParameterList","parameters":[],"src":"932:0:72"},"scope":8280,"src":"866:283:72","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":8281,"src":"290:861:72"}],"src":"33:1119:72"},"id":72},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","exportedSymbols":{"ERC20Permit":[8389]},"id":8390,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8282,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:73"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":8283,"nodeType":"ImportDirective","scope":8390,"sourceUnit":1759,"src":"58:93:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":8284,"nodeType":"ImportDirective","scope":8390,"sourceUnit":8224,"src":"153:21:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"../helpers/EOASignaturesValidator.sol","id":8285,"nodeType":"ImportDirective","scope":8390,"sourceUnit":4861,"src":"175:47:73","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8287,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"775:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":8288,"nodeType":"InheritanceSpecifier","src":"775:5:73"},{"baseName":{"id":8289,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":1758,"src":"782:12:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1758","typeString":"contract IERC20Permit"}},"id":8290,"nodeType":"InheritanceSpecifier","src":"782:12:73"},{"baseName":{"id":8291,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":4860,"src":"796:22:73","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$4860","typeString":"contract EOASignaturesValidator"}},"id":8292,"nodeType":"InheritanceSpecifier","src":"796:22:73"}],"contractDependencies":[1520,1722,1758,4860,7732,8223],"contractKind":"contract","documentation":{"id":8286,"nodeType":"StructuredDocumentation","src":"224:517:73","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":8389,"linearizedBaseContracts":[8389,4860,7732,1520,1758,8223,1722],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8297,"mutability":"constant","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":8389,"src":"877:153:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":8295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"940:84:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":8294,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"921:9:73","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"921:109:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":8307,"nodeType":"Block","src":"1312:64:73","statements":[]},"documentation":{"id":8298,"nodeType":"StructuredDocumentation","src":"1037:220:73","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":8308,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8303,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"1301:4:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":8304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:3:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":8305,"modifierName":{"id":8302,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7732,"src":"1294:6:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$7732_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1294:17:73"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8300,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8308,"src":"1274:18:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8299,"name":"string","nodeType":"ElementaryTypeName","src":"1274:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1273:20:73"},"returnParameters":{"id":8306,"nodeType":"ParameterList","parameters":[],"src":"1312:0:73"},"scope":8389,"src":"1262:114:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1743],"body":{"id":8362,"nodeType":"Block","src":"1635:310:73","statements":[{"assignments":[8328],"declarations":[{"constant":false,"id":8328,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":8362,"src":"1645:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1645:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8342,"initialValue":{"arguments":[{"arguments":[{"id":8332,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"1700:16:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8333,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"1718:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8334,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"1725:7:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8335,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"1734:5:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8337,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"1754:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8336,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"1741:12:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8339,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"1762:8:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8330,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1689:3:73","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1689:10:73","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:82:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8329,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1666:9:73","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:115:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1645:136:73"},{"expression":{"arguments":[{"id":8344,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"1814:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8345,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8328,"src":"1821:10:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":8347,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8319,"src":"1851:1:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8348,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"1854:1:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8349,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"1857:1:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8346,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1833:17:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":8350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:26:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8351,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"1861:8:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8352,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1871:6:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"1871:24:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8343,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[4741,4785],"referencedDeclaration":4785,"src":"1792:21:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":8354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:104:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8355,"nodeType":"ExpressionStatement","src":"1792:104:73"},{"expression":{"arguments":[{"id":8357,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"1916:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8358,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"1923:7:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"1932:5:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8356,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8200,"src":"1907:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:31:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8361,"nodeType":"ExpressionStatement","src":"1907:31:73"}]},"documentation":{"id":8309,"nodeType":"StructuredDocumentation","src":"1382:50:73","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":8363,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":8325,"nodeType":"OverrideSpecifier","overrides":[],"src":"1626:8:73"},"parameters":{"id":8324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8311,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":8363,"src":"1462:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8310,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8313,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":8363,"src":"1485:15:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8312,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8315,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8363,"src":"1510:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8314,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8317,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":8363,"src":"1533:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8319,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":8363,"src":"1559:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8318,"name":"uint8","nodeType":"ElementaryTypeName","src":"1559:5:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8321,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":8363,"src":"1576:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1576:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8323,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":8363,"src":"1595:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8322,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1595:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1452:158:73"},"returnParameters":{"id":8326,"nodeType":"ParameterList","parameters":[],"src":"1635:0:73"},"scope":8389,"src":"1437:508:73","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1751],"body":{"id":8376,"nodeType":"Block","src":"2076:43:73","statements":[{"expression":{"arguments":[{"id":8373,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"2106:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8372,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4717,"src":"2093:12:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2093:19:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8371,"id":8375,"nodeType":"Return","src":"2086:26:73"}]},"documentation":{"id":8364,"nodeType":"StructuredDocumentation","src":"1951:50:73","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":8377,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":8368,"nodeType":"OverrideSpecifier","overrides":[],"src":"2049:8:73"},"parameters":{"id":8367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8366,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":8377,"src":"2022:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8365,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:15:73"},"returnParameters":{"id":8371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8377,"src":"2067:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8369,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:9:73"},"scope":8389,"src":"2006:113:73","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1757],"body":{"id":8387,"nodeType":"Block","src":"2312:44:73","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8384,"name":"getDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4704,"src":"2329:18:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":8385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8383,"id":8386,"nodeType":"Return","src":"2322:27:73"}]},"documentation":{"id":8378,"nodeType":"StructuredDocumentation","src":"2125:60:73","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":8388,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":8380,"nodeType":"OverrideSpecifier","overrides":[],"src":"2285:8:73"},"parameters":{"id":8379,"nodeType":"ParameterList","parameters":[],"src":"2268:2:73"},"returnParameters":{"id":8383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8382,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8388,"src":"2303:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2303:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2302:9:73"},"scope":8389,"src":"2243:113:73","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8390,"src":"742:1616:73"}],"src":"33:2326:73"},"id":73},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[8842]},"id":8843,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8391,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"406:23:74"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8392,"nodeType":"ImportDirective","scope":8843,"sourceUnit":1492,"src":"431:90:74","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8393,"nodeType":"StructuredDocumentation","src":"523:686:74","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":8842,"linearizedBaseContracts":[8842],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.AddressSet","id":8401,"members":[{"constant":false,"id":8396,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":8401,"src":"1503:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8394,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8395,"nodeType":"ArrayTypeName","src":"1503:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":8400,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":8401,"src":"1653:36:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8399,"keyType":{"id":8397,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1653:27:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":8842,"src":"1442:254:74","visibility":"public"},{"body":{"id":8441,"nodeType":"Block","src":"1927:334:74","statements":[{"condition":{"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1941:21:74","subExpression":{"arguments":[{"id":8412,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"1951:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":8413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"1956:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8411,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[8545,8769],"referencedDeclaration":8545,"src":"1942:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:20:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8439,"nodeType":"Block","src":"2218:37:74","statements":[{"expression":{"hexValue":"66616c7365","id":8437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2239:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8410,"id":8438,"nodeType":"Return","src":"2232:12:74"}]},"id":8440,"nodeType":"IfStatement","src":"1937:318:74","trueBody":{"id":8436,"nodeType":"Block","src":"1964:248:74","statements":[{"expression":{"arguments":[{"id":8421,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"1995:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":8416,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"1978:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"1978:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1978:16:74","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1978:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8423,"nodeType":"ExpressionStatement","src":"1978:23:74"},{"expression":{"id":8432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8424,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"2136:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8427,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"2136:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8428,"indexExpression":{"id":8426,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"2149:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8429,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"2158:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"2158:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2158:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:40:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8433,"nodeType":"ExpressionStatement","src":"2136:40:74"},{"expression":{"hexValue":"74727565","id":8434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2197:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8410,"id":8435,"nodeType":"Return","src":"2190:11:74"}]}}]},"documentation":{"id":8402,"nodeType":"StructuredDocumentation","src":"1702:144:74","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":8442,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":8407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8442,"src":"1864:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8403,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"1864:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8406,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8442,"src":"1888:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8405,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:39:74"},"returnParameters":{"id":8410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8409,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8442,"src":"1921:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8408,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:74"},"scope":8842,"src":"1851:410:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8526,"nodeType":"Block","src":"2508:1388:74","statements":[{"assignments":[8453],"declarations":[{"constant":false,"id":8453,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":8526,"src":"2618:18:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8452,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8458,"initialValue":{"baseExpression":{"expression":{"id":8454,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"2639:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"2639:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8457,"indexExpression":{"id":8456,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"2652:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2639:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:40:74"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8459,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8453,"src":"2673:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2687:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2673:15:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8524,"nodeType":"Block","src":"3853:37:74","statements":[{"expression":{"hexValue":"66616c7365","id":8522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3874:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8451,"id":8523,"nodeType":"Return","src":"3867:12:74"}]},"id":8525,"nodeType":"IfStatement","src":"2669:1221:74","trueBody":{"id":8521,"nodeType":"Block","src":"2690:1157:74","statements":[{"assignments":[8463],"declarations":[{"constant":false,"id":8463,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":8521,"src":"3042:21:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8462,"name":"uint256","nodeType":"ElementaryTypeName","src":"3042:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8467,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8464,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8453,"src":"3066:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3066:14:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3042:38:74"},{"assignments":[8469],"declarations":[{"constant":false,"id":8469,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":8521,"src":"3094:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8468,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8475,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8470,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3114:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"3114:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3114:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3135:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3114:22:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3094:42:74"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8476,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3236:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8477,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"3253:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:26:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8505,"nodeType":"IfStatement","src":"3232:389:74","trueBody":{"id":8504,"nodeType":"Block","src":"3264:357:74","statements":[{"assignments":[8480],"declarations":[{"constant":false,"id":8480,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":8504,"src":"3282:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8479,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8485,"initialValue":{"baseExpression":{"expression":{"id":8481,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3302:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"3302:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8484,"indexExpression":{"id":8483,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"3314:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3302:22:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3282:42:74"},{"expression":{"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8486,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3424:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"3424:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8490,"indexExpression":{"id":8488,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3436:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3424:26:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8491,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"3453:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3424:38:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8493,"nodeType":"ExpressionStatement","src":"3424:38:74"},{"expression":{"id":8502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8494,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3536:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"3536:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8498,"indexExpression":{"id":8496,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"3549:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3536:23:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8499,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3562:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3578:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3562:17:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3536:43:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8503,"nodeType":"ExpressionStatement","src":"3536:43:74"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":8506,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3699:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"3699:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3699:15:74","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:17:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8512,"nodeType":"ExpressionStatement","src":"3699:17:74"},{"expression":{"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3784:26:74","subExpression":{"baseExpression":{"expression":{"id":8513,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"3791:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"3791:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8516,"indexExpression":{"id":8515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"3804:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3791:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8518,"nodeType":"ExpressionStatement","src":"3784:26:74"},{"expression":{"hexValue":"74727565","id":8519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3832:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8451,"id":8520,"nodeType":"Return","src":"3825:11:74"}]}}]},"documentation":{"id":8443,"nodeType":"StructuredDocumentation","src":"2267:157:74","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":8527,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":8448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8445,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8527,"src":"2445:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8444,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"2445:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8447,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8527,"src":"2469:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8446,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:39:74"},"returnParameters":{"id":8451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8527,"src":"2502:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8449,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2501:6:74"},"scope":8842,"src":"2429:1467:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8544,"nodeType":"Block","src":"4063:48:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8537,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8530,"src":"4080:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"4080:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8540,"indexExpression":{"id":8539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"4093:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4080:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4080:24:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8536,"id":8543,"nodeType":"Return","src":"4073:31:74"}]},"documentation":{"id":8528,"nodeType":"StructuredDocumentation","src":"3902:70:74","text":" @dev Returns true if the value is in the set. O(1)."},"id":8545,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":8533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8530,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8545,"src":"3995:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8529,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"3995:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8532,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8545,"src":"4019:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8531,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:39:74"},"returnParameters":{"id":8536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8535,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8545,"src":"4057:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8534,"name":"bool","nodeType":"ElementaryTypeName","src":"4057:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4056:6:74"},"scope":8842,"src":"3977:134:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8557,"nodeType":"Block","src":"4264:42:74","statements":[{"expression":{"expression":{"expression":{"id":8553,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8548,"src":"4281:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"4281:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4281:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8552,"id":8556,"nodeType":"Return","src":"4274:25:74"}]},"documentation":{"id":8546,"nodeType":"StructuredDocumentation","src":"4117:70:74","text":" @dev Returns the number of values on the set. O(1)."},"id":8558,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":8549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8548,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8558,"src":"4208:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8547,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"4208:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4207:24:74"},"returnParameters":{"id":8552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8551,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8558,"src":"4255:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8550,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4254:9:74"},"scope":8842,"src":"4192:114:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8583,"nodeType":"Block","src":"4731:116:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8569,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"4750:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"4750:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4750:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8572,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"4771:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4750:26:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8574,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4778:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1019,"src":"4778:20:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8568,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"4741:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4741:58:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8577,"nodeType":"ExpressionStatement","src":"4741:58:74"},{"expression":{"arguments":[{"id":8579,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"4829:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":8580,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"4834:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8578,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[8600,8824],"referencedDeclaration":8600,"src":"4816:12:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8567,"id":8582,"nodeType":"Return","src":"4809:31:74"}]},"documentation":{"id":8559,"nodeType":"StructuredDocumentation","src":"4312:331:74","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":8584,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":8564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8561,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8584,"src":"4660:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8560,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"4660:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8563,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8584,"src":"4684:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8562,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4659:39:74"},"returnParameters":{"id":8567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8584,"src":"4722:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8565,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4721:9:74"},"scope":8842,"src":"4648:199:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8599,"nodeType":"Block","src":"5305:42:74","statements":[{"expression":{"baseExpression":{"expression":{"id":8594,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8587,"src":"5322:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8396,"src":"5322:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8597,"indexExpression":{"id":8596,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8589,"src":"5334:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:18:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8593,"id":8598,"nodeType":"Return","src":"5315:25:74"}]},"documentation":{"id":8585,"nodeType":"StructuredDocumentation","src":"4853:301:74","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":8600,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":8590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8587,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8600,"src":"5234:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8586,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"5234:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8589,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8600,"src":"5258:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8588,"name":"uint256","nodeType":"ElementaryTypeName","src":"5258:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5233:39:74"},"returnParameters":{"id":8593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8592,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8600,"src":"5296:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8591,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:9:74"},"scope":8842,"src":"5212:135:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8616,"nodeType":"Block","src":"5444:47:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8609,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"5461:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":8610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8400,"src":"5461:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8612,"indexExpression":{"id":8611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"5474:5:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5483:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:23:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8608,"id":8615,"nodeType":"Return","src":"5454:30:74"}]},"id":8617,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8602,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8617,"src":"5373:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":8601,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"5373:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":8604,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8617,"src":"5397:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8603,"name":"address","nodeType":"ElementaryTypeName","src":"5397:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5372:39:74"},"returnParameters":{"id":8608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8607,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8617,"src":"5435:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:74"},"scope":8842,"src":"5353:138:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.Bytes32Set","id":8625,"members":[{"constant":false,"id":8620,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":8625,"src":"5558:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":8618,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5558:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8619,"nodeType":"ArrayTypeName","src":"5558:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":8624,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":8625,"src":"5708:36:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":8623,"keyType":{"id":8621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5716:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5708:27:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":8622,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":8842,"src":"5497:254:74","visibility":"public"},{"body":{"id":8665,"nodeType":"Block","src":"5997:334:74","statements":[{"condition":{"id":8639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:21:74","subExpression":{"arguments":[{"id":8636,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"6021:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":8637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"6026:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8635,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[8545,8769],"referencedDeclaration":8769,"src":"6012:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$8625_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"}},"id":8638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:20:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8663,"nodeType":"Block","src":"6288:37:74","statements":[{"expression":{"hexValue":"66616c7365","id":8661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6309:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8634,"id":8662,"nodeType":"Return","src":"6302:12:74"}]},"id":8664,"nodeType":"IfStatement","src":"6007:318:74","trueBody":{"id":8660,"nodeType":"Block","src":"6034:248:74","statements":[{"expression":{"arguments":[{"id":8645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"6065:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":8640,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"6048:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"6048:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6048:16:74","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8647,"nodeType":"ExpressionStatement","src":"6048:23:74"},{"expression":{"id":8656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8648,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"6206:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"6206:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8652,"indexExpression":{"id":8650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"6219:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6206:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8653,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"6228:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"6228:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6228:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6206:40:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8657,"nodeType":"ExpressionStatement","src":"6206:40:74"},{"expression":{"hexValue":"74727565","id":8658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6267:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8634,"id":8659,"nodeType":"Return","src":"6260:11:74"}]}}]},"documentation":{"id":8626,"nodeType":"StructuredDocumentation","src":"5757:159:74","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":8666,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":8631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8628,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8666,"src":"5934:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8627,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"5934:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8630,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8666,"src":"5958:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8629,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5958:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:39:74"},"returnParameters":{"id":8634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8633,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8666,"src":"5991:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8632,"name":"bool","nodeType":"ElementaryTypeName","src":"5991:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5990:6:74"},"scope":8842,"src":"5921:410:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8750,"nodeType":"Block","src":"6571:1388:74","statements":[{"assignments":[8677],"declarations":[{"constant":false,"id":8677,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":8750,"src":"6681:18:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8676,"name":"uint256","nodeType":"ElementaryTypeName","src":"6681:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8682,"initialValue":{"baseExpression":{"expression":{"id":8678,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"6702:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"6702:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8681,"indexExpression":{"id":8680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8671,"src":"6715:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6681:40:74"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8683,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8677,"src":"6736:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6750:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:15:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8748,"nodeType":"Block","src":"7916:37:74","statements":[{"expression":{"hexValue":"66616c7365","id":8746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7937:5:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8675,"id":8747,"nodeType":"Return","src":"7930:12:74"}]},"id":8749,"nodeType":"IfStatement","src":"6732:1221:74","trueBody":{"id":8745,"nodeType":"Block","src":"6753:1157:74","statements":[{"assignments":[8687],"declarations":[{"constant":false,"id":8687,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":8745,"src":"7105:21:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8686,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8691,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8688,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8677,"src":"7129:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7129:14:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7105:38:74"},{"assignments":[8693],"declarations":[{"constant":false,"id":8693,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":8745,"src":"7157:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8692,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8699,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8694,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7177:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"7177:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7177:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7198:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7177:22:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7157:42:74"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8700,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"7299:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8701,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"7316:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7299:26:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8729,"nodeType":"IfStatement","src":"7295:389:74","trueBody":{"id":8728,"nodeType":"Block","src":"7327:357:74","statements":[{"assignments":[8704],"declarations":[{"constant":false,"id":8704,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":8728,"src":"7345:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7345:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8709,"initialValue":{"baseExpression":{"expression":{"id":8705,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7365:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"7365:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8708,"indexExpression":{"id":8707,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"7377:9:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7365:22:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7345:42:74"},{"expression":{"id":8716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8710,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7487:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"7487:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8714,"indexExpression":{"id":8712,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"7499:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7487:26:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8715,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8704,"src":"7516:9:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7487:38:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8717,"nodeType":"ExpressionStatement","src":"7487:38:74"},{"expression":{"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8718,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7599:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"7599:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8722,"indexExpression":{"id":8720,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8704,"src":"7612:9:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7599:23:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8723,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8687,"src":"7625:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7625:17:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7599:43:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8727,"nodeType":"ExpressionStatement","src":"7599:43:74"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":8730,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7762:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"7762:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7762:15:74","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:17:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8736,"nodeType":"ExpressionStatement","src":"7762:17:74"},{"expression":{"id":8741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7847:26:74","subExpression":{"baseExpression":{"expression":{"id":8737,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"7854:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"7854:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8740,"indexExpression":{"id":8739,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8671,"src":"7867:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7854:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8742,"nodeType":"ExpressionStatement","src":"7847:26:74"},{"expression":{"hexValue":"74727565","id":8743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7895:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8675,"id":8744,"nodeType":"Return","src":"7888:11:74"}]}}]},"documentation":{"id":8667,"nodeType":"StructuredDocumentation","src":"6337:150:74","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was present."},"id":8751,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":8672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8669,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8751,"src":"6508:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8668,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"6508:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8671,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8751,"src":"6532:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6532:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6507:39:74"},"returnParameters":{"id":8675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8751,"src":"6565:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8673,"name":"bool","nodeType":"ElementaryTypeName","src":"6565:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6564:6:74"},"scope":8842,"src":"6492:1467:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8768,"nodeType":"Block","src":"8126:48:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8761,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8754,"src":"8143:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"8143:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8764,"indexExpression":{"id":8763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8756,"src":"8156:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8143:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8166:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8143:24:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8760,"id":8767,"nodeType":"Return","src":"8136:31:74"}]},"documentation":{"id":8752,"nodeType":"StructuredDocumentation","src":"7965:70:74","text":" @dev Returns true if the value is in the set. O(1)."},"id":8769,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":8757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8754,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8769,"src":"8058:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8753,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"8058:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8756,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8769,"src":"8082:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8082:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8057:39:74"},"returnParameters":{"id":8760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8759,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8769,"src":"8120:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8758,"name":"bool","nodeType":"ElementaryTypeName","src":"8120:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8119:6:74"},"scope":8842,"src":"8040:134:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8781,"nodeType":"Block","src":"8327:42:74","statements":[{"expression":{"expression":{"expression":{"id":8777,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8772,"src":"8344:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"8344:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8344:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8776,"id":8780,"nodeType":"Return","src":"8337:25:74"}]},"documentation":{"id":8770,"nodeType":"StructuredDocumentation","src":"8180:70:74","text":" @dev Returns the number of values on the set. O(1)."},"id":8782,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":8773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8772,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8782,"src":"8271:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8771,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"8271:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8270:24:74"},"returnParameters":{"id":8776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8775,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8782,"src":"8318:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8774,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:74"},"scope":8842,"src":"8255:114:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8807,"nodeType":"Block","src":"8794:116:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8793,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8785,"src":"8813:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"8813:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8813:18:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8796,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8787,"src":"8834:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8813:26:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8798,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"8841:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1019,"src":"8841:20:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8792,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"8804:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8804:58:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8801,"nodeType":"ExpressionStatement","src":"8804:58:74"},{"expression":{"arguments":[{"id":8803,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8785,"src":"8892:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":8804,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8787,"src":"8897:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8802,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[8600,8824],"referencedDeclaration":8824,"src":"8879:12:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$8625_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"}},"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8879:24:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8791,"id":8806,"nodeType":"Return","src":"8872:31:74"}]},"documentation":{"id":8783,"nodeType":"StructuredDocumentation","src":"8375:331:74","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":8808,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":8788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8785,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8808,"src":"8723:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8784,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"8723:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8787,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8808,"src":"8747:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8786,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8722:39:74"},"returnParameters":{"id":8791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8790,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8808,"src":"8785:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8785:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8784:9:74"},"scope":8842,"src":"8711:199:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8823,"nodeType":"Block","src":"9368:42:74","statements":[{"expression":{"baseExpression":{"expression":{"id":8818,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8811,"src":"9385:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8620,"src":"9385:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8821,"indexExpression":{"id":8820,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"9397:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9385:18:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8817,"id":8822,"nodeType":"Return","src":"9378:25:74"}]},"documentation":{"id":8809,"nodeType":"StructuredDocumentation","src":"8916:301:74","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":8824,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":8814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8811,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8824,"src":"9297:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8810,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"9297:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8813,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8824,"src":"9321:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8812,"name":"uint256","nodeType":"ElementaryTypeName","src":"9321:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9296:39:74"},"returnParameters":{"id":8817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8816,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8824,"src":"9359:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9359:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9358:9:74"},"scope":8842,"src":"9275:135:74","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8840,"nodeType":"Block","src":"9507:47:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8833,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"9524:3:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8624,"src":"9524:12:74","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8836,"indexExpression":{"id":8835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8828,"src":"9537:5:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9524:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9524:23:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8832,"id":8839,"nodeType":"Return","src":"9517:30:74"}]},"id":8841,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":8829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8826,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8841,"src":"9436:22:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8825,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8625,"src":"9436:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8625_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8828,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8841,"src":"9460:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9460:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9435:39:74"},"returnParameters":{"id":8832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8831,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8841,"src":"9498:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8830,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9497:9:74"},"scope":8842,"src":"9416:138:74","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8843,"src":"1210:8346:74"}],"src":"406:9151:74"},"id":74},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[8898]},"id":8899,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8844,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"374:23:75"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8845,"nodeType":"ImportDirective","scope":8899,"sourceUnit":1492,"src":"399:90:75","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":8846,"nodeType":"StructuredDocumentation","src":"491:750:75","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":8898,"linearizedBaseContracts":[8898],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8849,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":8898,"src":"2030:41:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8847,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":8848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2070:1:75","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":8852,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":8898,"src":"2077:37:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":8851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:75","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":8854,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":8898,"src":"2121:23:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8853,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":8861,"nodeType":"Block","src":"2165:39:75","statements":[{"expression":{"id":8859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8857,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"2175:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8858,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8849,"src":"2185:12:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2175:22:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8860,"nodeType":"ExpressionStatement","src":"2175:22:75"}]},"id":8862,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8855,"nodeType":"ParameterList","parameters":[],"src":"2162:2:75"},"returnParameters":{"id":8856,"nodeType":"ParameterList","parameters":[],"src":"2165:0:75"},"scope":8898,"src":"2151:53:75","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8872,"nodeType":"Block","src":"2603:77:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8865,"name":"_enterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8889,"src":"2613:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:20:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8867,"nodeType":"ExpressionStatement","src":"2613:20:75"},{"id":8868,"nodeType":"PlaceholderStatement","src":"2643:1:75"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8869,"name":"_exitNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8897,"src":"2654:17:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2654:19:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8871,"nodeType":"ExpressionStatement","src":"2654:19:75"}]},"documentation":{"id":8863,"nodeType":"StructuredDocumentation","src":"2210:364:75","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":8873,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":8864,"nodeType":"ParameterList","parameters":[],"src":"2600:2:75"},"src":"2579:101:75","virtual":false,"visibility":"internal"},{"body":{"id":8888,"nodeType":"Block","src":"2724:233:75","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8877,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"2818:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8878,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8852,"src":"2829:8:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2818:19:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8880,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2839:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REENTRANCY","nodeType":"MemberAccess","referencedDeclaration":1250,"src":"2839:17:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8876,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"2809:8:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2809:48:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8883,"nodeType":"ExpressionStatement","src":"2809:48:75"},{"expression":{"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8884,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"2932:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8885,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8852,"src":"2942:8:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:18:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8887,"nodeType":"ExpressionStatement","src":"2932:18:75"}]},"id":8889,"implemented":true,"kind":"function","modifiers":[],"name":"_enterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":8874,"nodeType":"ParameterList","parameters":[],"src":"2713:2:75"},"returnParameters":{"id":8875,"nodeType":"ParameterList","parameters":[],"src":"2724:0:75"},"scope":8898,"src":"2686:271:75","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8896,"nodeType":"Block","src":"3000:171:75","statements":[{"expression":{"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8892,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"3142:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8893,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8849,"src":"3152:12:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3142:22:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8895,"nodeType":"ExpressionStatement","src":"3142:22:75"}]},"id":8897,"implemented":true,"kind":"function","modifiers":[],"name":"_exitNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":8890,"nodeType":"ParameterList","parameters":[],"src":"2989:2:75"},"returnParameters":{"id":8891,"nodeType":"ParameterList","parameters":[],"src":"3000:0:75"},"scope":8898,"src":"2963:208:75","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":8899,"src":"1242:1931:75"}],"src":"374:2800:75"},"id":75},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","exportedSymbols":{"SafeCast":[8953]},"id":8954,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8900,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:76"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8901,"nodeType":"ImportDirective","scope":8954,"sourceUnit":1492,"src":"58:90:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8902,"nodeType":"StructuredDocumentation","src":"150:709:76","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":8953,"linearizedBaseContracts":[8953],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":8925,"nodeType":"Block","src":"1117:114:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8911,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"1136:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":8912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:3:76","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1136:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1136:17:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8916,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1155:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"MemberAccess","referencedDeclaration":1313,"src":"1155:38:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8910,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1127:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:67:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8919,"nodeType":"ExpressionStatement","src":"1127:67:76"},{"expression":{"arguments":[{"id":8922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"1218:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":8920,"name":"int256","nodeType":"ElementaryTypeName","src":"1211:6:76","typeDescriptions":{}}},"id":8923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1211:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8909,"id":8924,"nodeType":"Return","src":"1204:20:76"}]},"documentation":{"id":8903,"nodeType":"StructuredDocumentation","src":"883:165:76","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":8926,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":8906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8905,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8926,"src":"1071:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8904,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1070:15:76"},"returnParameters":{"id":8909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8908,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8926,"src":"1109:6:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8907,"name":"int256","nodeType":"ElementaryTypeName","src":"1109:6:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1108:8:76"},"scope":8953,"src":"1053:178:76","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8951,"nodeType":"Block","src":"1474:122:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8929,"src":"1493:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1507:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8937,"name":"uint64","nodeType":"ElementaryTypeName","src":"1507:6:76","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":8936,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1502:4:76","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1502:12:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1502:16:76","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1493:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8942,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1520:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":8943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"1520:38:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8934,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1484:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:75:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8945,"nodeType":"ExpressionStatement","src":"1484:75:76"},{"expression":{"arguments":[{"id":8948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8929,"src":"1583:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1576:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8946,"name":"uint64","nodeType":"ElementaryTypeName","src":"1576:6:76","typeDescriptions":{}}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1576:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8933,"id":8950,"nodeType":"Return","src":"1569:20:76"}]},"documentation":{"id":8927,"nodeType":"StructuredDocumentation","src":"1237:168:76","text":" @dev Converts an unsigned uint256 into an unsigned uint64.\n Requirements:\n - input must be less than or equal to maxUint64."},"id":8952,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nodeType":"FunctionDefinition","parameters":{"id":8930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8929,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8952,"src":"1428:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:15:76"},"returnParameters":{"id":8933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8932,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8952,"src":"1466:6:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8931,"name":"uint64","nodeType":"ElementaryTypeName","src":"1466:6:76","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1465:8:76"},"scope":8953,"src":"1410:186:76","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8954,"src":"860:738:76"}],"src":"33:1566:76"},"id":76},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","exportedSymbols":{"SafeERC20":[9107]},"id":9108,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8955,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"313:23:77"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8956,"nodeType":"ImportDirective","scope":9108,"sourceUnit":1492,"src":"338:90:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":8957,"nodeType":"ImportDirective","scope":9108,"sourceUnit":1723,"src":"429:87:77","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8958,"nodeType":"StructuredDocumentation","src":"518:457:77","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":9107,"linearizedBaseContracts":[9107],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":9016,"nodeType":"Block","src":"1102:406:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8964,"src":"1218:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1218:10:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":8974,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1256:4:77","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}],"id":8973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1248:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8972,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:77","typeDescriptions":{}}},"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:13:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8978,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"1271:2:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1263:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8976,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:77","typeDescriptions":{}}},"id":8979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1263:11:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8970,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1232:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":8971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1681,"src":"1232:15:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1232:43:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:48:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1218:62:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9000,"nodeType":"IfStatement","src":"1214:183:77","trueBody":{"id":8999,"nodeType":"Block","src":"1282:115:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":8987,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1324:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":8986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1316:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8985,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:77","typeDescriptions":{}}},"id":8988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1316:14:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":8991,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1355:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":8992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1691,"src":"1355:13:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1355:22:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8994,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"1379:2:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":8995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1383:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8989,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1332:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1332:22:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:53:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8984,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"1296:19:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1296:90:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8998,"nodeType":"ExpressionStatement","src":"1296:90:77"}]}},{"expression":{"arguments":[{"arguments":[{"id":9004,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1435:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":9003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1427:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9002,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:77","typeDescriptions":{}}},"id":9005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:14:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":9008,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"1466:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1691,"src":"1466:13:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1466:22:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":9011,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"1490:2:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8964,"src":"1494:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9006,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1443:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1443:22:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:57:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9001,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"1407:19:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:94:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9015,"nodeType":"ExpressionStatement","src":"1407:94:77"}]},"id":9017,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":8965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8960,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9017,"src":"1031:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":8959,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1031:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8962,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":9017,"src":"1053:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8961,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8964,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9017,"src":"1073:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8963,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:71:77"},"returnParameters":{"id":8966,"nodeType":"ParameterList","parameters":[],"src":"1102:0:77"},"scope":9107,"src":"1001:507:77","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9041,"nodeType":"Block","src":"1616:112:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":9029,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"1654:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":9028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9027,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:77","typeDescriptions":{}}},"id":9030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:14:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":9033,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9019,"src":"1685:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1671,"src":"1685:14:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1685:23:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":9036,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"1710:2:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"1714:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9031,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1662:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1662:22:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:58:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9026,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"1626:19:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":9039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:95:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9040,"nodeType":"ExpressionStatement","src":"1626:95:77"}]},"id":9042,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":9024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9019,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9042,"src":"1545:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":9018,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1545:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9021,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":9042,"src":"1567:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9020,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9023,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9042,"src":"1587:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9022,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:71:77"},"returnParameters":{"id":9025,"nodeType":"ParameterList","parameters":[],"src":"1616:0:77"},"scope":9107,"src":"1514:214:77","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9069,"nodeType":"Block","src":"1862:122:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":9056,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9044,"src":"1900:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":9055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1892:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9054,"name":"address","nodeType":"ElementaryTypeName","src":"1892:7:77","typeDescriptions":{}}},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:14:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":9060,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9044,"src":"1931:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1703,"src":"1931:18:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1931:27:77","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":9063,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9046,"src":"1960:4:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9064,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"1966:2:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9065,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"1970:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9058,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1908:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1908:22:77","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:68:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9053,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"1872:19:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:105:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9068,"nodeType":"ExpressionStatement","src":"1872:105:77"}]},"id":9070,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":9051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9044,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9070,"src":"1769:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":9043,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1769:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9046,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":9070,"src":"1791:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9045,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9048,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":9070,"src":"1813:10:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9047,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9050,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9070,"src":"1833:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9049,"name":"uint256","nodeType":"ElementaryTypeName","src":"1833:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:93:77"},"returnParameters":{"id":9052,"nodeType":"ParameterList","parameters":[],"src":"1862:0:77"},"scope":9107,"src":"1734:250:77","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9105,"nodeType":"Block","src":"2395:843:77","statements":[{"assignments":[9079,9081],"declarations":[{"constant":false,"id":9079,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":9105,"src":"2626:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9078,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9081,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":9105,"src":"2640:23:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9080,"name":"bytes","nodeType":"ElementaryTypeName","src":"2640:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9086,"initialValue":{"arguments":[{"id":9084,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"2678:4:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9082,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9073,"src":"2667:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2667:10:77","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:16:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2625:58:77"},{"AST":{"nodeType":"YulBlock","src":"2848:156:77","statements":[{"body":{"nodeType":"YulBlock","src":"2880:114:77","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:77","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:77","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2919:14:77"},"nodeType":"YulFunctionCall","src":"2919:16:77"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2898:14:77"},"nodeType":"YulFunctionCall","src":"2898:38:77"},"nodeType":"YulExpressionStatement","src":"2898:38:77"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:1:77","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2963:14:77"},"nodeType":"YulFunctionCall","src":"2963:16:77"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2953:6:77"},"nodeType":"YulFunctionCall","src":"2953:27:77"},"nodeType":"YulExpressionStatement","src":"2953:27:77"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"2868:7:77"},{"kind":"number","nodeType":"YulLiteral","src":"2877:1:77","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2865:2:77"},"nodeType":"YulFunctionCall","src":"2865:14:77"},"nodeType":"YulIf","src":"2862:2:77"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":9079,"isOffset":false,"isSlot":false,"src":"2868:7:77","valueSize":1}],"id":9087,"nodeType":"InlineAssembly","src":"2839:165:77"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9089,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9081,"src":"3143:10:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3143:17:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3164:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3143:22:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":9095,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9081,"src":"3180:10:77","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":9097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3193:4:77","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":9096,"name":"bool","nodeType":"ElementaryTypeName","src":"3193:4:77","typeDescriptions":{}}}],"id":9098,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3192:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":9093,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3169:3:77","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3169:10:77","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:30:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3143:56:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9101,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3201:6:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_ERC20_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1304,"src":"3201:29:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9088,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3134:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:97:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9104,"nodeType":"ExpressionStatement","src":"3134:97:77"}]},"documentation":{"id":9071,"nodeType":"StructuredDocumentation","src":"1990:329:77","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert."},"id":9106,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":9076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9073,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9106,"src":"2353:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9072,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9075,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":9106,"src":"2368:17:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9074,"name":"bytes","nodeType":"ElementaryTypeName","src":"2368:5:77","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2352:34:77"},"returnParameters":{"id":9077,"nodeType":"ParameterList","parameters":[],"src":"2395:0:77"},"scope":9107,"src":"2324:914:77","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":9108,"src":"976:2264:77"}],"src":"313:2928:77"},"id":77},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","exportedSymbols":{"SafeMath":[9185]},"id":9186,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9109,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:78"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":9110,"nodeType":"ImportDirective","scope":9186,"sourceUnit":1492,"src":"58:90:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":9111,"nodeType":"StructuredDocumentation","src":"150:563:78","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":9185,"linearizedBaseContracts":[9185],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":9137,"nodeType":"Block","src":"1033:100:78","statements":[{"assignments":[9122],"declarations":[{"constant":false,"id":9122,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":9137,"src":"1043:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9126,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"1055:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9124,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9116,"src":"1059:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1055:5:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:17:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9128,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9122,"src":"1079:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9129,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"1084:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1079:6:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9131,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1087:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":989,"src":"1087:19:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9127,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1070:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1070:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9134,"nodeType":"ExpressionStatement","src":"1070:37:78"},{"expression":{"id":9135,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9122,"src":"1125:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9120,"id":9136,"nodeType":"Return","src":"1118:8:78"}]},"documentation":{"id":9112,"nodeType":"StructuredDocumentation","src":"737:224:78","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":9138,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":9117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9114,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":9138,"src":"979:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9113,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9116,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":9138,"src":"990:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9115,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:22:78"},"returnParameters":{"id":9120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9119,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9138,"src":"1024:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:78"},"scope":9185,"src":"966:167:78","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9155,"nodeType":"Block","src":"1471:54:78","statements":[{"expression":{"arguments":[{"id":9149,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9141,"src":"1492:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9150,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9143,"src":"1495:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9151,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1498:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":992,"src":"1498:19:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9148,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[9156,9184],"referencedDeclaration":9184,"src":"1488:3:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9147,"id":9154,"nodeType":"Return","src":"1481:37:78"}]},"documentation":{"id":9139,"nodeType":"StructuredDocumentation","src":"1139:260:78","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":9156,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":9144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9141,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":9156,"src":"1417:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9143,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":9156,"src":"1428:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9142,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:22:78"},"returnParameters":{"id":9147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9156,"src":"1462:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9145,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:78"},"scope":9185,"src":"1404:121:78","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9183,"nodeType":"Block","src":"1932:90:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9169,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"1951:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9170,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"1956:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1951:6:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9172,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9163,"src":"1959:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9168,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"1942:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:27:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9174,"nodeType":"ExpressionStatement","src":"1942:27:78"},{"assignments":[9176],"declarations":[{"constant":false,"id":9176,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":9183,"src":"1979:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9180,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9177,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9159,"src":"1991:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9178,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"1995:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1991:5:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1979:17:78"},{"expression":{"id":9181,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9176,"src":"2014:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9167,"id":9182,"nodeType":"Return","src":"2007:8:78"}]},"documentation":{"id":9157,"nodeType":"StructuredDocumentation","src":"1531:280:78","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":9184,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":9164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9159,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":9184,"src":"1838:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9161,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":9184,"src":"1857:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9160,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9163,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":9184,"src":"1876:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:71:78"},"returnParameters":{"id":9167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9184,"src":"1923:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9165,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1922:9:78"},"scope":9185,"src":"1816:206:78","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9186,"src":"714:1310:78"}],"src":"33:1992:78"},"id":78},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","exportedSymbols":{"ERC20Mock":[9229]},"id":9230,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9187,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:79"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":9188,"nodeType":"ImportDirective","scope":9230,"sourceUnit":8224,"src":"713:35:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9189,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"772:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":9190,"nodeType":"InheritanceSpecifier","src":"772:5:79"}],"contractDependencies":[1722,8223],"contractKind":"contract","fullyImplemented":true,"id":9229,"linearizedBaseContracts":[9229,8223,1722],"name":"ERC20Mock","nodeType":"ContractDefinition","nodes":[{"body":{"id":9201,"nodeType":"Block","src":"858:2:79","statements":[]},"id":9202,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9197,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9192,"src":"844:4:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9198,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9194,"src":"850:6:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9199,"modifierName":{"id":9196,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8223,"src":"838:5:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8223_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"838:19:79"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9192,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9202,"src":"796:18:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9191,"name":"string","nodeType":"ElementaryTypeName","src":"796:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9194,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":9202,"src":"816:20:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9193,"name":"string","nodeType":"ElementaryTypeName","src":"816:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"795:42:79"},"returnParameters":{"id":9200,"nodeType":"ParameterList","parameters":[],"src":"858:0:79"},"scope":9229,"src":"784:76:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9214,"nodeType":"Block","src":"924:41:79","statements":[{"expression":{"arguments":[{"id":9210,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9204,"src":"940:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9211,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9206,"src":"951:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9209,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"934:5:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:24:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9213,"nodeType":"ExpressionStatement","src":"934:24:79"}]},"functionSelector":"40c10f19","id":9215,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":9207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9204,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9215,"src":"880:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9203,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9206,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9215,"src":"899:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9205,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"879:35:79"},"returnParameters":{"id":9208,"nodeType":"ParameterList","parameters":[],"src":"924:0:79"},"scope":9229,"src":"866:99:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9227,"nodeType":"Block","src":"1026:38:79","statements":[{"expression":{"arguments":[{"id":9223,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"1042:6:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9224,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"1050:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9222,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"1036:5:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9226,"nodeType":"ExpressionStatement","src":"1036:21:79"}]},"functionSelector":"9dc29fac","id":9228,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":9220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9217,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9228,"src":"985:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9216,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9219,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9228,"src":"1001:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"984:32:79"},"returnParameters":{"id":9221,"nodeType":"ParameterList","parameters":[],"src":"1026:0:79"},"scope":9229,"src":"971:93:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9230,"src":"750:316:79"}],"src":"688:379:79"},"id":79},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","exportedSymbols":{"TestToken":[9288]},"id":9289,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9231,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:80"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","file":"../openzeppelin/ERC20Burnable.sol","id":9232,"nodeType":"ImportDirective","scope":9289,"sourceUnit":8281,"src":"713:43:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","file":"../openzeppelin/ERC20Permit.sol","id":9233,"nodeType":"ImportDirective","scope":9289,"sourceUnit":8390,"src":"757:41:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":9234,"nodeType":"ImportDirective","scope":9289,"sourceUnit":8224,"src":"799:35:80","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9235,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"858:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":9236,"nodeType":"InheritanceSpecifier","src":"858:5:80"},{"baseName":{"id":9237,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":8280,"src":"865:13:80","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$8280","typeString":"contract ERC20Burnable"}},"id":9238,"nodeType":"InheritanceSpecifier","src":"865:13:80"},{"baseName":{"id":9239,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":8389,"src":"880:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$8389","typeString":"contract ERC20Permit"}},"id":9240,"nodeType":"InheritanceSpecifier","src":"880:11:80"}],"contractDependencies":[1520,1722,1758,4860,7732,8223,8280,8389],"contractKind":"contract","fullyImplemented":true,"id":9288,"linearizedBaseContracts":[9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"TestToken","nodeType":"ContractDefinition","nodes":[{"body":{"id":9260,"nodeType":"Block","src":"1036:41:80","statements":[{"expression":{"arguments":[{"id":9257,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"1061:8:80","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9256,"name":"_setupDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8211,"src":"1046:14:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9259,"nodeType":"ExpressionStatement","src":"1046:24:80"}]},"id":9261,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9249,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9242,"src":"1004:4:80","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9250,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9244,"src":"1010:6:80","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9251,"modifierName":{"id":9248,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8223,"src":"998:5:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8223_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"998:19:80"},{"arguments":[{"id":9253,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9242,"src":"1030:4:80","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":9254,"modifierName":{"id":9252,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8389,"src":"1018:11:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$8389_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"1018:17:80"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9242,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9261,"src":"919:18:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9241,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:80","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9244,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":9261,"src":"947:20:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9243,"name":"string","nodeType":"ElementaryTypeName","src":"947:6:80","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9246,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":9261,"src":"977:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9245,"name":"uint8","nodeType":"ElementaryTypeName","src":"977:5:80","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"909:88:80"},"returnParameters":{"id":9255,"nodeType":"ParameterList","parameters":[],"src":"1036:0:80"},"scope":9288,"src":"898:179:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9273,"nodeType":"Block","src":"1141:41:80","statements":[{"expression":{"arguments":[{"id":9269,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"1157:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9270,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"1168:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9268,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1151:5:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1151:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9272,"nodeType":"ExpressionStatement","src":"1151:24:80"}]},"functionSelector":"40c10f19","id":9274,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":9266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9263,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9274,"src":"1097:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9262,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9265,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9274,"src":"1116:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9264,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1096:35:80"},"returnParameters":{"id":9267,"nodeType":"ParameterList","parameters":[],"src":"1141:0:80"},"scope":9288,"src":"1083:99:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9286,"nodeType":"Block","src":"1568:38:80","statements":[{"expression":{"arguments":[{"id":9282,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"1584:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9283,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"1592:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9281,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"1578:5:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1578:21:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9285,"nodeType":"ExpressionStatement","src":"1578:21:80"}]},"functionSelector":"7c602bc2","id":9287,"implemented":true,"kind":"function","modifiers":[],"name":"burnWithoutAllowance","nodeType":"FunctionDefinition","parameters":{"id":9279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9276,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9287,"src":"1527:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9275,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9278,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9287,"src":"1543:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1543:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1526:32:80"},"returnParameters":{"id":9280,"nodeType":"ParameterList","parameters":[],"src":"1568:0:80"},"scope":9288,"src":"1497:109:80","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9289,"src":"836:772:80"}],"src":"688:921:80"},"id":80},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","exportedSymbols":{"AssetHelpers":[9418]},"id":9419,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9290,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:81"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":9291,"nodeType":"ImportDirective","scope":9419,"sourceUnit":1723,"src":"713:87:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":9292,"nodeType":"ImportDirective","scope":9419,"sourceUnit":1645,"src":"801:78:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":9293,"nodeType":"ImportDirective","scope":9419,"sourceUnit":3152,"src":"880:65:81","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9418,"linearizedBaseContracts":[9418],"name":"AssetHelpers","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9295,"mutability":"immutable","name":"_weth","nodeType":"VariableDeclaration","scope":9418,"src":"1036:29:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"},"typeName":{"id":9294,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"1036:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"visibility":"private"},{"constant":true,"id":9301,"mutability":"constant","name":"_ETH","nodeType":"VariableDeclaration","scope":9418,"src":"1367:42:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9296,"name":"address","nodeType":"ElementaryTypeName","src":"1367:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":9299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1407:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1399:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9297,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:81","typeDescriptions":{}}},"id":9300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1399:10:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"private"},{"body":{"id":9310,"nodeType":"Block","src":"1440:29:81","statements":[{"expression":{"id":9308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9306,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"1450:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9307,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"1458:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"src":"1450:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"id":9309,"nodeType":"ExpressionStatement","src":"1450:12:81"}]},"id":9311,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":9311,"src":"1428:10:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"},"typeName":{"id":9302,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"1428:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1427:12:81"},"returnParameters":{"id":9305,"nodeType":"ParameterList","parameters":[],"src":"1440:0:81"},"scope":9418,"src":"1416:53:81","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9318,"nodeType":"Block","src":"1575:29:81","statements":[{"expression":{"id":9316,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"1592:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"functionReturnParameters":9315,"id":9317,"nodeType":"Return","src":"1585:12:81"}]},"id":9319,"implemented":true,"kind":"function","modifiers":[],"name":"_WETH","nodeType":"FunctionDefinition","parameters":{"id":9312,"nodeType":"ParameterList","parameters":[],"src":"1542:2:81"},"returnParameters":{"id":9315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9319,"src":"1568:5:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"},"typeName":{"id":9313,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"1568:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1567:7:81"},"scope":9418,"src":"1528:76:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9334,"nodeType":"Block","src":"1764:46:81","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9329,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9322,"src":"1789:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":9328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1781:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9327,"name":"address","nodeType":"ElementaryTypeName","src":"1781:7:81","typeDescriptions":{}}},"id":9330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:14:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9331,"name":"_ETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"1799:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1781:22:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9326,"id":9333,"nodeType":"Return","src":"1774:29:81"}]},"documentation":{"id":9320,"nodeType":"StructuredDocumentation","src":"1610:90:81","text":" @dev Returns true if `asset` is the sentinel value that represents ETH."},"id":9335,"implemented":true,"kind":"function","modifiers":[],"name":"_isETH","nodeType":"FunctionDefinition","parameters":{"id":9323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9322,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":9335,"src":"1721:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":9321,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"1721:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"1720:14:81"},"returnParameters":{"id":9326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9325,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9335,"src":"1758:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9324,"name":"bool","nodeType":"ElementaryTypeName","src":"1758:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1757:6:81"},"scope":9418,"src":"1705:105:81","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9353,"nodeType":"Block","src":"2055:66:81","statements":[{"expression":{"condition":{"arguments":[{"id":9344,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9338,"src":"2079:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":9343,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"2072:6:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":9345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":9349,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9338,"src":"2108:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":9348,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"2098:9:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_contract$_IERC20_$1722_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2098:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2072:42:81","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9346,"name":"_WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9319,"src":"2088:5:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IWETH_$1644_$","typeString":"function () view returns (contract IWETH)"}},"id":9347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:7:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"functionReturnParameters":9342,"id":9352,"nodeType":"Return","src":"2065:49:81"}]},"documentation":{"id":9336,"nodeType":"StructuredDocumentation","src":"1816:161:81","text":" @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n to the WETH contract."},"id":9354,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":9339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9338,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":9354,"src":"2010:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":9337,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2010:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2009:14:81"},"returnParameters":{"id":9342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9341,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9354,"src":"2047:6:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":9340,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2047:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2046:8:81"},"scope":9418,"src":"1982:139:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9400,"nodeType":"Block","src":"2310:211:81","statements":[{"assignments":[9367],"declarations":[{"constant":false,"id":9367,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":9400,"src":"2320:22:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9365,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2320:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9366,"nodeType":"ArrayTypeName","src":"2320:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":9374,"initialValue":{"arguments":[{"expression":{"id":9371,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9358,"src":"2358:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":9372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2358:13:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2345:12:81","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":9368,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2349:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9369,"nodeType":"ArrayTypeName","src":"2349:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":9373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2320:52:81"},{"body":{"id":9396,"nodeType":"Block","src":"2426:66:81","statements":[{"expression":{"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9386,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9367,"src":"2440:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9388,"indexExpression":{"id":9387,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2447:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2440:9:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":9390,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9358,"src":"2471:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":9392,"indexExpression":{"id":9391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2478:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2471:9:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":9389,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[9354,9401],"referencedDeclaration":9354,"src":"2452:18:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAsset_$3151_$returns$_t_contract$_IERC20_$1722_$","typeString":"function (contract IAsset) view returns (contract IERC20)"}},"id":9393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:29:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"2440:41:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9395,"nodeType":"ExpressionStatement","src":"2440:41:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2402:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9380,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9358,"src":"2406:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":9381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2406:13:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2402:17:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9397,"initializationExpression":{"assignments":[9376],"declarations":[{"constant":false,"id":9376,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9397,"src":"2387:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9375,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9378,"initialValue":{"hexValue":"30","id":9377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2399:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2387:13:81"},"loopExpression":{"expression":{"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2421:3:81","subExpression":{"id":9383,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"2423:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9385,"nodeType":"ExpressionStatement","src":"2421:3:81"},"nodeType":"ForStatement","src":"2382:110:81"},{"expression":{"id":9398,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9367,"src":"2508:6:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":9363,"id":9399,"nodeType":"Return","src":"2501:13:81"}]},"documentation":{"id":9355,"nodeType":"StructuredDocumentation","src":"2127:86:81","text":" @dev Same as `_translateToIERC20(IAsset)`, but for an entire array."},"id":9401,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":9359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9358,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":9401,"src":"2246:22:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":9356,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2246:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":9357,"nodeType":"ArrayTypeName","src":"2246:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"2245:24:81"},"returnParameters":{"id":9363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9362,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9401,"src":"2293:15:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9360,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2293:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9361,"nodeType":"ArrayTypeName","src":"2293:8:81","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2292:17:81"},"scope":9418,"src":"2218:303:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9416,"nodeType":"Block","src":"2826:46:81","statements":[{"expression":{"arguments":[{"arguments":[{"id":9412,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"2858:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":9411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9410,"name":"address","nodeType":"ElementaryTypeName","src":"2850:7:81","typeDescriptions":{}}},"id":9413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2850:14:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9409,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2843:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":9414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2843:22:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"functionReturnParameters":9408,"id":9415,"nodeType":"Return","src":"2836:29:81"}]},"documentation":{"id":9402,"nodeType":"StructuredDocumentation","src":"2527:230:81","text":" @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value."},"id":9417,"implemented":true,"kind":"function","modifiers":[],"name":"_asIERC20","nodeType":"FunctionDefinition","parameters":{"id":9405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9404,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":9417,"src":"2781:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":9403,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2781:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2780:14:81"},"returnParameters":{"id":9408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9417,"src":"2818:6:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":9406,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2818:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2817:8:81"},"scope":9418,"src":"2762:110:81","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9419,"src":"947:1927:81"}],"src":"688:2187:81"},"id":81},"contracts/BALTokenHolder.sol":{"ast":{"absolutePath":"contracts/BALTokenHolder.sol","exportedSymbols":{"BALTokenHolder":[9523]},"id":9524,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9420,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:82"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":9421,"nodeType":"ImportDirective","scope":9524,"sourceUnit":212,"src":"713:84:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","id":9422,"nodeType":"ImportDirective","scope":9524,"sourceUnit":1819,"src":"798:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9423,"nodeType":"ImportDirective","scope":9524,"sourceUnit":3865,"src":"884:65:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9424,"nodeType":"ImportDirective","scope":9524,"sourceUnit":5267,"src":"951:88:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":9425,"nodeType":"ImportDirective","scope":9524,"sourceUnit":9108,"src":"1040:79:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9427,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":1818,"src":"1590:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$1818","typeString":"contract IBALTokenHolder"}},"id":9428,"nodeType":"InheritanceSpecifier","src":"1590:15:82"},{"baseName":{"id":9429,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"1607:23:82","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":9430,"nodeType":"InheritanceSpecifier","src":"1607:23:82"}],"contractDependencies":[1502,1818,4423,5266],"contractKind":"contract","documentation":{"id":9426,"nodeType":"StructuredDocumentation","src":"1121:441:82","text":" @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n final recipient of the funds to be configurable without having to alter the gauges themselves.\n There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake."},"fullyImplemented":true,"id":9523,"linearizedBaseContracts":[9523,5266,4423,1818,1502],"name":"BALTokenHolder","nodeType":"ContractDefinition","nodes":[{"id":9433,"libraryName":{"id":9431,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1643:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1637:27:82","typeName":{"id":9432,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1657:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":false,"id":9435,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":9523,"src":"1670:47:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9434,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"1670:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":9437,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":9523,"src":"1724:20:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":9436,"name":"string","nodeType":"ElementaryTypeName","src":"1724:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":9457,"nodeType":"Block","src":"1888:328:82","statements":[{"expression":{"id":9451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9449,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"2157:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9450,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9439,"src":"2174:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"src":"2157:30:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"id":9452,"nodeType":"ExpressionStatement","src":"2157:30:82"},{"expression":{"id":9455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9453,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9437,"src":"2197:5:82","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9454,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9443,"src":"2205:4:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2197:12:82","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9456,"nodeType":"ExpressionStatement","src":"2197:12:82"}]},"id":9458,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9446,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"1881:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":9447,"modifierName":{"id":9445,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1857:23:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1857:30:82"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9439,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":9458,"src":"1772:28:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9438,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"1772:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":9441,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9458,"src":"1810:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9440,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1810:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9443,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9458,"src":"1832:18:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9442,"name":"string","nodeType":"ElementaryTypeName","src":"1832:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1762:94:82"},"returnParameters":{"id":9448,"nodeType":"ParameterList","parameters":[],"src":"1888:0:82"},"scope":9523,"src":"1751:465:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9465,"nodeType":"Block","src":"2289:38:82","statements":[{"expression":{"id":9463,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"2306:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"functionReturnParameters":9462,"id":9464,"nodeType":"Return","src":"2299:21:82"}]},"functionSelector":"c0039699","id":9466,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":9459,"nodeType":"ParameterList","parameters":[],"src":"2247:2:82"},"returnParameters":{"id":9462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9461,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9466,"src":"2273:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9460,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"2273:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"2272:16:82"},"scope":9523,"src":"2222:105:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1801],"body":{"id":9474,"nodeType":"Block","src":"2399:29:82","statements":[{"expression":{"id":9472,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9437,"src":"2416:5:82","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":9471,"id":9473,"nodeType":"Return","src":"2409:12:82"}]},"functionSelector":"17d7de7c","id":9475,"implemented":true,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","overrides":{"id":9468,"nodeType":"OverrideSpecifier","overrides":[],"src":"2366:8:82"},"parameters":{"id":9467,"nodeType":"ParameterList","parameters":[],"src":"2349:2:82"},"returnParameters":{"id":9471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9470,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9475,"src":"2384:13:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9469,"name":"string","nodeType":"ElementaryTypeName","src":"2384:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2383:15:82"},"scope":9523,"src":"2333:95:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1808],"body":{"id":9493,"nodeType":"Block","src":"2523:71:82","statements":[{"expression":{"arguments":[{"id":9489,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9477,"src":"2569:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"2580:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9486,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"2540:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}],"id":9485,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2533:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2533:35:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":9491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:54:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9492,"nodeType":"ExpressionStatement","src":"2533:54:82"}]},"functionSelector":"c1075329","id":9494,"implemented":true,"kind":"function","modifiers":[{"id":9483,"modifierName":{"id":9482,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2510:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2510:12:82"}],"name":"withdrawFunds","nodeType":"FunctionDefinition","overrides":{"id":9481,"nodeType":"OverrideSpecifier","overrides":[],"src":"2501:8:82"},"parameters":{"id":9480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9477,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9494,"src":"2457:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9476,"name":"address","nodeType":"ElementaryTypeName","src":"2457:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9479,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9494,"src":"2476:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9478,"name":"uint256","nodeType":"ElementaryTypeName","src":"2476:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2456:35:82"},"returnParameters":{"id":9484,"nodeType":"ParameterList","parameters":[],"src":"2523:0:82"},"scope":9523,"src":"2434:160:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1817],"body":{"id":9521,"nodeType":"Block","src":"2731:124:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":9509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9507,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"2749:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9508,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"2758:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"src":"2749:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742073776565702042414c","id":9510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2774:18:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""},"value":"Cannot sweep BAL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""}],"id":9506,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2741:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2741:52:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9512,"nodeType":"ExpressionStatement","src":"2741:52:82"},{"expression":{"arguments":[{"id":9517,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9498,"src":"2830:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9518,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9500,"src":"2841:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9514,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9496,"src":"2810:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":9513,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2803:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":9515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2803:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:45:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9520,"nodeType":"ExpressionStatement","src":"2803:45:82"}]},"functionSelector":"8b6ca32c","id":9522,"implemented":true,"kind":"function","modifiers":[{"id":9504,"modifierName":{"id":9503,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2718:12:82","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2718:12:82"}],"name":"sweepTokens","nodeType":"FunctionDefinition","overrides":{"id":9502,"nodeType":"OverrideSpecifier","overrides":[],"src":"2709:8:82"},"parameters":{"id":9501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9496,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9522,"src":"2630:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":9495,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2630:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9498,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9522,"src":"2652:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9497,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9500,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9522,"src":"2679:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2620:79:82"},"returnParameters":{"id":9505,"nodeType":"ParameterList","parameters":[],"src":"2731:0:82"},"scope":9523,"src":"2600:255:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9524,"src":"1563:1294:82"}],"src":"688:2170:82"},"id":82},"contracts/BALTokenHolderFactory.sol":{"ast":{"absolutePath":"contracts/BALTokenHolderFactory.sol","exportedSymbols":{"BALTokenHolderFactory":[9630]},"id":9631,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9525,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:83"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":9526,"nodeType":"ImportDirective","scope":9631,"sourceUnit":212,"src":"713:84:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","id":9527,"nodeType":"ImportDirective","scope":9631,"sourceUnit":1849,"src":"798:92:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9528,"nodeType":"ImportDirective","scope":9631,"sourceUnit":3865,"src":"891:65:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":9529,"nodeType":"ImportDirective","scope":9631,"sourceUnit":4424,"src":"958:79:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BALTokenHolder.sol","file":"./BALTokenHolder.sol","id":9530,"nodeType":"ImportDirective","scope":9631,"sourceUnit":9524,"src":"1039:30:83","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9531,"name":"IBALTokenHolderFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":1848,"src":"1105:22:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolderFactory_$1848","typeString":"contract IBALTokenHolderFactory"}},"id":9532,"nodeType":"InheritanceSpecifier","src":"1105:22:83"}],"contractDependencies":[1848,9523],"contractKind":"contract","fullyImplemented":true,"id":9630,"linearizedBaseContracts":[9630,1848],"name":"BALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9534,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":9630,"src":"1134:47:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9533,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"1134:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":9536,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":9630,"src":"1187:31:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9535,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1187:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":9540,"mutability":"mutable","name":"_factoryCreatedHolders","nodeType":"VariableDeclaration","scope":9630,"src":"1225:55:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":9539,"keyType":{"id":9537,"name":"address","nodeType":"ElementaryTypeName","src":"1233:7:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1225:24:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":9538,"name":"bool","nodeType":"ElementaryTypeName","src":"1244:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"anonymous":false,"id":9546,"name":"BALTokenHolderCreated","nodeType":"EventDefinition","parameters":{"id":9545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9542,"indexed":false,"mutability":"mutable","name":"balTokenHolder","nodeType":"VariableDeclaration","scope":9546,"src":"1315:29:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"},"typeName":{"id":9541,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":9523,"src":"1315:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}},"visibility":"internal"},{"constant":false,"id":9544,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9546,"src":"1346:11:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9543,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1314:44:83"},"src":"1287:72:83"},{"body":{"id":9561,"nodeType":"Block","src":"1421:71:83","statements":[{"expression":{"id":9555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9553,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9534,"src":"1431:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9554,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9548,"src":"1448:13:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"src":"1431:30:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"id":9556,"nodeType":"ExpressionStatement","src":"1431:30:83"},{"expression":{"id":9559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9557,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9536,"src":"1471:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9558,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9550,"src":"1480:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"1471:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":9560,"nodeType":"ExpressionStatement","src":"1471:14:83"}]},"id":9562,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9548,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":9562,"src":"1377:28:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9547,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"1377:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":9550,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9562,"src":"1407:12:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9549,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1407:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1376:44:83"},"returnParameters":{"id":9552,"nodeType":"ParameterList","parameters":[],"src":"1421:0:83"},"scope":9630,"src":"1365:127:83","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1828],"body":{"id":9570,"nodeType":"Block","src":"1572:38:83","statements":[{"expression":{"id":9568,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9534,"src":"1589:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"functionReturnParameters":9567,"id":9569,"nodeType":"Return","src":"1582:21:83"}]},"functionSelector":"c0039699","id":9571,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":9564,"nodeType":"OverrideSpecifier","overrides":[],"src":"1538:8:83"},"parameters":{"id":9563,"nodeType":"ParameterList","parameters":[],"src":"1523:2:83"},"returnParameters":{"id":9567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9571,"src":"1556:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},"typeName":{"id":9565,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":211,"src":"1556:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1555:16:83"},"scope":9630,"src":"1498:112:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1833],"body":{"id":9579,"nodeType":"Block","src":"1674:30:83","statements":[{"expression":{"id":9577,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9536,"src":"1691:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":9576,"id":9578,"nodeType":"Return","src":"1684:13:83"}]},"functionSelector":"8d928af8","id":9580,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":9573,"nodeType":"OverrideSpecifier","overrides":[],"src":"1648:8:83"},"parameters":{"id":9572,"nodeType":"ParameterList","parameters":[],"src":"1633:2:83"},"returnParameters":{"id":9576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9575,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9580,"src":"1666:6:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9574,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1666:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1665:8:83"},"scope":9630,"src":"1616:88:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1840],"body":{"id":9592,"nodeType":"Block","src":"1793:54:83","statements":[{"expression":{"baseExpression":{"id":9588,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"1810:22:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9590,"indexExpression":{"id":9589,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9582,"src":"1833:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1810:30:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9587,"id":9591,"nodeType":"Return","src":"1803:37:83"}]},"functionSelector":"36390717","id":9593,"implemented":true,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","overrides":{"id":9584,"nodeType":"OverrideSpecifier","overrides":[],"src":"1769:8:83"},"parameters":{"id":9583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9582,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":9593,"src":"1739:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9581,"name":"address","nodeType":"ElementaryTypeName","src":"1739:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1738:16:83"},"returnParameters":{"id":9587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9593,"src":"1787:4:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9585,"name":"bool","nodeType":"ElementaryTypeName","src":"1787:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1786:6:83"},"scope":9630,"src":"1710:137:83","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1847],"body":{"id":9628,"nodeType":"Block","src":"1933:228:83","statements":[{"assignments":[9602],"declarations":[{"constant":false,"id":9602,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":9628,"src":"1943:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"},"typeName":{"id":9601,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":9523,"src":"1943:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}},"visibility":"internal"}],"id":9611,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9605,"name":"getBalancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9571,"src":"1986:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IBalancerToken_$211_$","typeString":"function () view returns (contract IBalancerToken)"}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1986:18:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9607,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"2006:8:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":9608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2006:10:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":9609,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9595,"src":"2018:4:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$211","typeString":"contract IBalancerToken"},{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1967:18:83","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IBalancerToken_$211_$_t_contract$_IVault_$3864_$_t_string_memory_ptr_$returns$_t_contract$_BALTokenHolder_$9523_$","typeString":"function (contract IBalancerToken,contract IVault,string memory) returns (contract BALTokenHolder)"},"typeName":{"id":9603,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":9523,"src":"1971:14:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}}},"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:56:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}},"nodeType":"VariableDeclarationStatement","src":"1943:80:83"},{"expression":{"id":9619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9612,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"2034:22:83","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9617,"indexExpression":{"arguments":[{"id":9615,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"2065:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}],"id":9614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2057:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9613,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:83","typeDescriptions":{}}},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2057:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2034:39:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2076:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2034:46:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9620,"nodeType":"ExpressionStatement","src":"2034:46:83"},{"eventCall":{"arguments":[{"id":9622,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"2117:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}},{"id":9623,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9595,"src":"2125:4:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9621,"name":"BALTokenHolderCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9546,"src":"2095:21:83","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_BALTokenHolder_$9523_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract BALTokenHolder,string memory)"}},"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2095:35:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9625,"nodeType":"EmitStatement","src":"2090:40:83"},{"expression":{"id":9626,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"2148:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$9523","typeString":"contract BALTokenHolder"}},"functionReturnParameters":9600,"id":9627,"nodeType":"Return","src":"2141:13:83"}]},"functionSelector":"b6a46b3b","id":9629,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","overrides":{"id":9597,"nodeType":"OverrideSpecifier","overrides":[],"src":"1898:8:83"},"parameters":{"id":9596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9595,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9629,"src":"1869:18:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9594,"name":"string","nodeType":"ElementaryTypeName","src":"1869:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1868:20:83"},"returnParameters":{"id":9600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9599,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9629,"src":"1916:15:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$1818","typeString":"contract IBALTokenHolder"},"typeName":{"id":9598,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":1818,"src":"1916:15:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$1818","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1915:17:83"},"scope":9630,"src":"1853:308:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9631,"src":"1071:1092:83"}],"src":"688:1476:83"},"id":83},"contracts/BalancerPoolDataQueries.sol":{"ast":{"absolutePath":"contracts/BalancerPoolDataQueries.sol","exportedSymbols":{"BalancerPoolDataQueries":[11568],"ILinearPool":[9658],"IPoolWithActualSupply":[9678],"IPoolWithAmp":[9706],"IPoolWithPercentFee":[9696],"IPoolWithScalingFactors":[9672],"IPoolWithSwapFeePercentage":[9690],"IPoolWithVirtualSupply":[9684],"IWeightedPool":[9665],"PoolDataQueryConfig":[9748],"PoolStatusQueryConfig":[9753],"SwapFeeType":[9645],"TotalSupplyType":[9642]},"id":11569,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9632,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:84"},{"id":9633,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:84"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9634,"nodeType":"ImportDirective","scope":11569,"sourceUnit":3865,"src":"747:65:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","id":9635,"nodeType":"ImportDirective","scope":11569,"sourceUnit":674,"src":"813:77:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":9636,"nodeType":"ImportDirective","scope":11569,"sourceUnit":1723,"src":"891:87:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","id":9637,"nodeType":"ImportDirective","scope":11569,"sourceUnit":1540,"src":"979:96:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","id":9638,"nodeType":"ImportDirective","scope":11569,"sourceUnit":709,"src":"1076:77:84","symbolAliases":[],"unitAlias":""},{"canonicalName":"TotalSupplyType","id":9642,"members":[{"id":9639,"name":"TOTAL_SUPPLY","nodeType":"EnumValue","src":"1178:12:84"},{"id":9640,"name":"VIRTUAL_SUPPLY","nodeType":"EnumValue","src":"1192:14:84"},{"id":9641,"name":"ACTUAL_SUPPLY","nodeType":"EnumValue","src":"1208:13:84"}],"name":"TotalSupplyType","nodeType":"EnumDefinition","src":"1155:68:84"},{"canonicalName":"SwapFeeType","id":9645,"members":[{"id":9643,"name":"SWAP_FEE_PERCENTAGE","nodeType":"EnumValue","src":"1243:19:84"},{"id":9644,"name":"PERCENT_FEE","nodeType":"EnumValue","src":"1264:11:84"}],"name":"SwapFeeType","nodeType":"EnumDefinition","src":"1224:53:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9658,"linearizedBaseContracts":[9658],"name":"ILinearPool","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f5431aa8","id":9650,"implemented":false,"kind":"function","modifiers":[],"name":"getWrappedTokenRate","nodeType":"FunctionDefinition","parameters":{"id":9646,"nodeType":"ParameterList","parameters":[],"src":"1421:2:84"},"returnParameters":{"id":9649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9650,"src":"1447:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9647,"name":"uint256","nodeType":"ElementaryTypeName","src":"1447:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:9:84"},"scope":9658,"src":"1393:63:84","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"63fe3b56","id":9657,"implemented":false,"kind":"function","modifiers":[],"name":"getTargets","nodeType":"FunctionDefinition","parameters":{"id":9651,"nodeType":"ParameterList","parameters":[],"src":"1481:2:84"},"returnParameters":{"id":9656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9653,"mutability":"mutable","name":"lowerTarget","nodeType":"VariableDeclaration","scope":9657,"src":"1507:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9652,"name":"uint256","nodeType":"ElementaryTypeName","src":"1507:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9655,"mutability":"mutable","name":"upperTarget","nodeType":"VariableDeclaration","scope":9657,"src":"1528:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1506:42:84"},"scope":9658,"src":"1462:87:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1365:186:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9665,"linearizedBaseContracts":[9665],"name":"IWeightedPool","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f89f27ed","id":9664,"implemented":false,"kind":"function","modifiers":[],"name":"getNormalizedWeights","nodeType":"FunctionDefinition","parameters":{"id":9659,"nodeType":"ParameterList","parameters":[],"src":"1612:2:84"},"returnParameters":{"id":9663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9662,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9664,"src":"1638:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9660,"name":"uint256","nodeType":"ElementaryTypeName","src":"1638:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9661,"nodeType":"ArrayTypeName","src":"1638:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1637:18:84"},"scope":9665,"src":"1583:73:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1553:105:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9672,"linearizedBaseContracts":[9672],"name":"IPoolWithScalingFactors","nodeType":"ContractDefinition","nodes":[{"functionSelector":"1dd746ea","id":9671,"implemented":false,"kind":"function","modifiers":[],"name":"getScalingFactors","nodeType":"FunctionDefinition","parameters":{"id":9666,"nodeType":"ParameterList","parameters":[],"src":"1726:2:84"},"returnParameters":{"id":9670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9669,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9671,"src":"1752:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9667,"name":"uint256","nodeType":"ElementaryTypeName","src":"1752:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9668,"nodeType":"ArrayTypeName","src":"1752:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1751:18:84"},"scope":9672,"src":"1700:70:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1660:112:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9678,"linearizedBaseContracts":[9678],"name":"IPoolWithActualSupply","nodeType":"ContractDefinition","nodes":[{"functionSelector":"876f303b","id":9677,"implemented":false,"kind":"function","modifiers":[],"name":"getActualSupply","nodeType":"FunctionDefinition","parameters":{"id":9673,"nodeType":"ParameterList","parameters":[],"src":"1836:2:84"},"returnParameters":{"id":9676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9675,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9677,"src":"1862:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1861:9:84"},"scope":9678,"src":"1812:59:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1774:99:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9684,"linearizedBaseContracts":[9684],"name":"IPoolWithVirtualSupply","nodeType":"ContractDefinition","nodes":[{"functionSelector":"de82cd34","id":9683,"implemented":false,"kind":"function","modifiers":[],"name":"getVirtualSupply","nodeType":"FunctionDefinition","parameters":{"id":9679,"nodeType":"ParameterList","parameters":[],"src":"1939:2:84"},"returnParameters":{"id":9682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9681,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9683,"src":"1965:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1964:9:84"},"scope":9684,"src":"1914:60:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1875:101:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9690,"linearizedBaseContracts":[9690],"name":"IPoolWithSwapFeePercentage","nodeType":"ContractDefinition","nodes":[{"functionSelector":"55c67628","id":9689,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":9685,"nodeType":"ParameterList","parameters":[],"src":"2050:2:84"},"returnParameters":{"id":9688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9687,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9689,"src":"2076:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9686,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2075:9:84"},"scope":9690,"src":"2021:64:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"1978:109:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9696,"linearizedBaseContracts":[9696],"name":"IPoolWithPercentFee","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4c1a4115","id":9695,"implemented":false,"kind":"function","modifiers":[],"name":"percentFee","nodeType":"FunctionDefinition","parameters":{"id":9691,"nodeType":"ParameterList","parameters":[],"src":"2144:2:84"},"returnParameters":{"id":9694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9693,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9695,"src":"2170:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9692,"name":"uint256","nodeType":"ElementaryTypeName","src":"2170:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2169:9:84"},"scope":9696,"src":"2125:54:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"2089:92:84"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":9706,"linearizedBaseContracts":[9706],"name":"IPoolWithAmp","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6daccffa","id":9705,"implemented":false,"kind":"function","modifiers":[],"name":"getAmplificationParameter","nodeType":"FunctionDefinition","parameters":{"id":9697,"nodeType":"ParameterList","parameters":[],"src":"2246:2:84"},"returnParameters":{"id":9704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9699,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9705,"src":"2309:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9698,"name":"uint256","nodeType":"ElementaryTypeName","src":"2309:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9701,"mutability":"mutable","name":"isUpdating","nodeType":"VariableDeclaration","scope":9705,"src":"2336:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9700,"name":"bool","nodeType":"ElementaryTypeName","src":"2336:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9703,"mutability":"mutable","name":"precision","nodeType":"VariableDeclaration","scope":9705,"src":"2365:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2365:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2295:97:84"},"scope":9706,"src":"2212:181:84","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11569,"src":"2183:212:84"},{"canonicalName":"PoolDataQueryConfig","id":9748,"members":[{"constant":false,"id":9708,"mutability":"mutable","name":"loadTokenBalanceUpdatesAfterBlock","nodeType":"VariableDeclaration","scope":9748,"src":"2430:38:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9707,"name":"bool","nodeType":"ElementaryTypeName","src":"2430:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9710,"mutability":"mutable","name":"loadTotalSupply","nodeType":"VariableDeclaration","scope":9748,"src":"2474:20:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9709,"name":"bool","nodeType":"ElementaryTypeName","src":"2474:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9712,"mutability":"mutable","name":"loadSwapFees","nodeType":"VariableDeclaration","scope":9748,"src":"2500:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9711,"name":"bool","nodeType":"ElementaryTypeName","src":"2500:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9714,"mutability":"mutable","name":"loadLinearWrappedTokenRates","nodeType":"VariableDeclaration","scope":9748,"src":"2523:32:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9713,"name":"bool","nodeType":"ElementaryTypeName","src":"2523:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9716,"mutability":"mutable","name":"loadLinearTargets","nodeType":"VariableDeclaration","scope":9748,"src":"2561:22:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9715,"name":"bool","nodeType":"ElementaryTypeName","src":"2561:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9718,"mutability":"mutable","name":"loadNormalizedWeights","nodeType":"VariableDeclaration","scope":9748,"src":"2589:26:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9717,"name":"bool","nodeType":"ElementaryTypeName","src":"2589:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9720,"mutability":"mutable","name":"loadScalingFactors","nodeType":"VariableDeclaration","scope":9748,"src":"2621:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9719,"name":"bool","nodeType":"ElementaryTypeName","src":"2621:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9722,"mutability":"mutable","name":"loadAmps","nodeType":"VariableDeclaration","scope":9748,"src":"2650:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9721,"name":"bool","nodeType":"ElementaryTypeName","src":"2650:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9724,"mutability":"mutable","name":"loadRates","nodeType":"VariableDeclaration","scope":9748,"src":"2669:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9723,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9726,"mutability":"mutable","name":"blockNumber","nodeType":"VariableDeclaration","scope":9748,"src":"2689:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9725,"name":"uint256","nodeType":"ElementaryTypeName","src":"2689:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9729,"mutability":"mutable","name":"totalSupplyTypes","nodeType":"VariableDeclaration","scope":9748,"src":"2714:34:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_storage_ptr","typeString":"enum TotalSupplyType[]"},"typeName":{"baseType":{"id":9727,"name":"TotalSupplyType","nodeType":"UserDefinedTypeName","referencedDeclaration":9642,"src":"2714:15:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"id":9728,"nodeType":"ArrayTypeName","src":"2714:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_storage_ptr","typeString":"enum TotalSupplyType[]"}},"visibility":"internal"},{"constant":false,"id":9732,"mutability":"mutable","name":"swapFeeTypes","nodeType":"VariableDeclaration","scope":9748,"src":"2754:26:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_storage_ptr","typeString":"enum SwapFeeType[]"},"typeName":{"baseType":{"id":9730,"name":"SwapFeeType","nodeType":"UserDefinedTypeName","referencedDeclaration":9645,"src":"2754:11:84","typeDescriptions":{"typeIdentifier":"t_enum$_SwapFeeType_$9645","typeString":"enum SwapFeeType"}},"id":9731,"nodeType":"ArrayTypeName","src":"2754:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_storage_ptr","typeString":"enum SwapFeeType[]"}},"visibility":"internal"},{"constant":false,"id":9735,"mutability":"mutable","name":"linearPoolIdxs","nodeType":"VariableDeclaration","scope":9748,"src":"2786:24:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9733,"name":"uint256","nodeType":"ElementaryTypeName","src":"2786:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9734,"nodeType":"ArrayTypeName","src":"2786:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9738,"mutability":"mutable","name":"weightedPoolIdxs","nodeType":"VariableDeclaration","scope":9748,"src":"2816:26:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9736,"name":"uint256","nodeType":"ElementaryTypeName","src":"2816:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9737,"nodeType":"ArrayTypeName","src":"2816:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9741,"mutability":"mutable","name":"scalingFactorPoolIdxs","nodeType":"VariableDeclaration","scope":9748,"src":"2848:31:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9739,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9740,"nodeType":"ArrayTypeName","src":"2848:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9744,"mutability":"mutable","name":"ampPoolIdxs","nodeType":"VariableDeclaration","scope":9748,"src":"2885:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2885:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9743,"nodeType":"ArrayTypeName","src":"2885:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9747,"mutability":"mutable","name":"ratePoolIdxs","nodeType":"VariableDeclaration","scope":9748,"src":"2912:22:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9745,"name":"uint256","nodeType":"ElementaryTypeName","src":"2912:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9746,"nodeType":"ArrayTypeName","src":"2912:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"PoolDataQueryConfig","nodeType":"StructDefinition","scope":11569,"src":"2397:540:84","visibility":"public"},{"canonicalName":"PoolStatusQueryConfig","id":9753,"members":[{"constant":false,"id":9750,"mutability":"mutable","name":"loadInRecoveryMode","nodeType":"VariableDeclaration","scope":9753,"src":"2974:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9749,"name":"bool","nodeType":"ElementaryTypeName","src":"2974:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9752,"mutability":"mutable","name":"loadIsPaused","nodeType":"VariableDeclaration","scope":9753,"src":"3003:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9751,"name":"bool","nodeType":"ElementaryTypeName","src":"3003:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PoolStatusQueryConfig","nodeType":"StructDefinition","scope":11569,"src":"2939:84:84","visibility":"public"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":9754,"nodeType":"StructuredDocumentation","src":"3025:382:84","text":" @dev This contract builds on top of the Balancer V2 architecture to provide useful helpers for fetching on chain data\n for Balancer pools. It is especially helpful for SOR (Smart order router) initialization. It allows for bulking\n actions for many pools at once, with the overall goal to reduce network-in and network-out required for loading\n useful onchain data."},"fullyImplemented":true,"id":11568,"linearizedBaseContracts":[11568],"name":"BalancerPoolDataQueries","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"fbfa77cf","id":9756,"mutability":"immutable","name":"vault","nodeType":"VariableDeclaration","scope":11568,"src":"3447:29:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9755,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3447:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"public"},{"body":{"id":9765,"nodeType":"Block","src":"3510:31:84","statements":[{"expression":{"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9761,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9756,"src":"3520:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9762,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9758,"src":"3528:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"3520:14:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":9764,"nodeType":"ExpressionStatement","src":"3520:14:84"}]},"id":9766,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9758,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":9766,"src":"3495:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":9757,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3495:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3494:15:84"},"returnParameters":{"id":9760,"nodeType":"ParameterList","parameters":[],"src":"3510:0:84"},"scope":11568,"src":"3483:58:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":10187,"nodeType":"Block","src":"4845:3036:84","statements":[{"assignments":[9810],"declarations":[{"constant":false,"id":9810,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10187,"src":"4855:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9809,"name":"uint256","nodeType":"ElementaryTypeName","src":"4855:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9811,"nodeType":"VariableDeclarationStatement","src":"4855:9:84"},{"assignments":[9816],"declarations":[{"constant":false,"id":9816,"mutability":"mutable","name":"pools","nodeType":"VariableDeclaration","scope":10187,"src":"4874:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9814,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9815,"nodeType":"ArrayTypeName","src":"4874:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":9823,"initialValue":{"arguments":[{"expression":{"id":9820,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"4913:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":9821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4913:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4899:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":9817,"name":"address","nodeType":"ElementaryTypeName","src":"4903:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9818,"nodeType":"ArrayTypeName","src":"4903:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":9822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4899:29:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4874:54:84"},{"body":{"id":9847,"nodeType":"Block","src":"4976:65:84","statements":[{"expression":{"id":9845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":9835,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"4991:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9837,"indexExpression":{"id":9836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4997:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4991:8:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},null],"id":9838,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4990:12:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$__$","typeString":"tuple(address,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":9841,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"5019:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":9843,"indexExpression":{"id":9842,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5027:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5019:10:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9839,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9756,"src":"5005:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"5005:13:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":9844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5005:25:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"src":"4990:40:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9846,"nodeType":"ExpressionStatement","src":"4990:40:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9828,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4951:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9829,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"4955:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4955:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4951:18:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9848,"initializationExpression":{"expression":{"id":9826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4944:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4948:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4944:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9827,"nodeType":"ExpressionStatement","src":"4944:5:84"},"loopExpression":{"expression":{"id":9833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4971:3:84","subExpression":{"id":9832,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4971:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9834,"nodeType":"ExpressionStatement","src":"4971:3:84"},"nodeType":"ForStatement","src":"4939:102:84"},{"condition":{"expression":{"id":9849,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5055:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadTokenBalanceUpdatesAfterBlock","nodeType":"MemberAccess","referencedDeclaration":9708,"src":"5055:40:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9860,"nodeType":"IfStatement","src":"5051:152:84","trueBody":{"id":9859,"nodeType":"Block","src":"5097:106:84","statements":[{"expression":{"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9851,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"5111:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9853,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"5164:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},{"expression":{"id":9854,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5173:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"blockNumber","nodeType":"MemberAccess","referencedDeclaration":9726,"src":"5173:18:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9852,"name":"getPoolTokenBalancesWithUpdatesAfterBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10336,"src":"5122:41:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory,uint256) view returns (uint256[] memory[] memory)"}},"id":9856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5122:70:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"src":"5111:81:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":9858,"nodeType":"ExpressionStatement","src":"5111:81:84"}]}},{"condition":{"expression":{"id":9861,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5217:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadTotalSupply","nodeType":"MemberAccess","referencedDeclaration":9710,"src":"5217:22:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9872,"nodeType":"IfStatement","src":"5213:123:84","trueBody":{"id":9871,"nodeType":"Block","src":"5241:95:84","statements":[{"expression":{"id":9869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9863,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9780,"src":"5255:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9865,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"5294:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":9866,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5301:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"totalSupplyTypes","nodeType":"MemberAccess","referencedDeclaration":9729,"src":"5301:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr","typeString":"enum TotalSupplyType[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr","typeString":"enum TotalSupplyType[] memory"}],"id":9864,"name":"getTotalSupplyForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10667,"src":"5271:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory,enum TotalSupplyType[] memory) view returns (uint256[] memory)"}},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5271:54:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5255:70:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9870,"nodeType":"ExpressionStatement","src":"5255:70:84"}]}},{"condition":{"expression":{"id":9873,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5350:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadSwapFees","nodeType":"MemberAccess","referencedDeclaration":9712,"src":"5350:19:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9884,"nodeType":"IfStatement","src":"5346:117:84","trueBody":{"id":9883,"nodeType":"Block","src":"5371:92:84","statements":[{"expression":{"id":9881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9875,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"5385:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9877,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"5425:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":9878,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5432:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"swapFeeTypes","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"5432:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_memory_ptr","typeString":"enum SwapFeeType[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_memory_ptr","typeString":"enum SwapFeeType[] memory"}],"id":9876,"name":"getSwapFeePercentageForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10580,"src":"5396:28:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_SwapFeeType_$9645_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory,enum SwapFeeType[] memory) view returns (uint256[] memory)"}},"id":9880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5396:56:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5385:67:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9882,"nodeType":"ExpressionStatement","src":"5385:67:84"}]}},{"condition":{"expression":{"id":9885,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5477:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadLinearWrappedTokenRates","nodeType":"MemberAccess","referencedDeclaration":9714,"src":"5477:34:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9932,"nodeType":"IfStatement","src":"5473:372:84","trueBody":{"id":9931,"nodeType":"Block","src":"5513:332:84","statements":[{"assignments":[9891],"declarations":[{"constant":false,"id":9891,"mutability":"mutable","name":"linearPools","nodeType":"VariableDeclaration","scope":9931,"src":"5527:28:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9889,"name":"address","nodeType":"ElementaryTypeName","src":"5527:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9890,"nodeType":"ArrayTypeName","src":"5527:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":9899,"initialValue":{"arguments":[{"expression":{"expression":{"id":9895,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5572:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"5572:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5572:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5558:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":9892,"name":"address","nodeType":"ElementaryTypeName","src":"5562:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9893,"nodeType":"ArrayTypeName","src":"5562:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":9898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5527:74:84"},{"body":{"id":9923,"nodeType":"Block","src":"5667:81:84","statements":[{"expression":{"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9912,"name":"linearPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5685:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9914,"indexExpression":{"id":9913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5697:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5685:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9915,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"5702:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9920,"indexExpression":{"baseExpression":{"expression":{"id":9916,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5708:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"5708:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9919,"indexExpression":{"id":9918,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5730:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5708:24:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5702:31:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5685:48:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9922,"nodeType":"ExpressionStatement","src":"5685:48:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5628:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9905,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5632:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"5632:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5632:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5628:32:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9924,"initializationExpression":{"expression":{"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9900,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5621:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5625:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5621:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9903,"nodeType":"ExpressionStatement","src":"5621:5:84"},"loopExpression":{"expression":{"id":9910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5662:3:84","subExpression":{"id":9909,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"5662:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9911,"nodeType":"ExpressionStatement","src":"5662:3:84"},"nodeType":"ForStatement","src":"5616:132:84"},{"expression":{"id":9929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9925,"name":"linearWrappedTokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9786,"src":"5762:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9927,"name":"linearPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5822:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":9926,"name":"getWrappedTokenRateForLinearPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"5788:33:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory)"}},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5788:46:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5762:72:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9930,"nodeType":"ExpressionStatement","src":"5762:72:84"}]}},{"condition":{"expression":{"id":9933,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5859:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadNormalizedWeights","nodeType":"MemberAccess","referencedDeclaration":9718,"src":"5859:28:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9980,"nodeType":"IfStatement","src":"5855:357:84","trueBody":{"id":9979,"nodeType":"Block","src":"5889:323:84","statements":[{"assignments":[9939],"declarations":[{"constant":false,"id":9939,"mutability":"mutable","name":"weightedPools","nodeType":"VariableDeclaration","scope":9979,"src":"5903:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9937,"name":"address","nodeType":"ElementaryTypeName","src":"5903:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9938,"nodeType":"ArrayTypeName","src":"5903:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":9947,"initialValue":{"arguments":[{"expression":{"expression":{"id":9943,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"5950:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weightedPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9738,"src":"5950:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5950:30:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5936:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":9940,"name":"address","nodeType":"ElementaryTypeName","src":"5940:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9941,"nodeType":"ArrayTypeName","src":"5940:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":9946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5936:45:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5903:78:84"},{"body":{"id":9971,"nodeType":"Block","src":"6049:85:84","statements":[{"expression":{"id":9969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9960,"name":"weightedPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9939,"src":"6067:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9962,"indexExpression":{"id":9961,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6081:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6067:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9963,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"6086:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9968,"indexExpression":{"baseExpression":{"expression":{"id":9964,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6092:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weightedPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9738,"src":"6092:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9967,"indexExpression":{"id":9966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6116:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6092:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6086:33:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6067:52:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9970,"nodeType":"ExpressionStatement","src":"6067:52:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6008:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9953,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6012:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weightedPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9738,"src":"6012:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6012:30:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6008:34:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9972,"initializationExpression":{"expression":{"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9948,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6001:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6005:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6001:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9951,"nodeType":"ExpressionStatement","src":"6001:5:84"},"loopExpression":{"expression":{"id":9958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6044:3:84","subExpression":{"id":9957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6044:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9959,"nodeType":"ExpressionStatement","src":"6044:3:84"},"nodeType":"ForStatement","src":"5996:138:84"},{"expression":{"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9973,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"6148:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9975,"name":"weightedPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9939,"src":"6187:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":9974,"name":"getNormalizedWeightsForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10717,"src":"6158:28:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory[] memory)"}},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6158:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"src":"6148:53:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":9978,"nodeType":"ExpressionStatement","src":"6148:53:84"}]}},{"condition":{"expression":{"id":9981,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6226:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadScalingFactors","nodeType":"MemberAccess","referencedDeclaration":9720,"src":"6226:25:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10028,"nodeType":"IfStatement","src":"6222:388:84","trueBody":{"id":10027,"nodeType":"Block","src":"6253:357:84","statements":[{"assignments":[9987],"declarations":[{"constant":false,"id":9987,"mutability":"mutable","name":"scalingFactorPools","nodeType":"VariableDeclaration","scope":10027,"src":"6267:35:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9985,"name":"address","nodeType":"ElementaryTypeName","src":"6267:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9986,"nodeType":"ArrayTypeName","src":"6267:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":9995,"initialValue":{"arguments":[{"expression":{"expression":{"id":9991,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6319:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":9992,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"scalingFactorPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9741,"src":"6319:28:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6319:35:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6305:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":9988,"name":"address","nodeType":"ElementaryTypeName","src":"6309:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9989,"nodeType":"ArrayTypeName","src":"6309:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6305:50:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6267:88:84"},{"body":{"id":10019,"nodeType":"Block","src":"6428:95:84","statements":[{"expression":{"id":10017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10008,"name":"scalingFactorPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"6446:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10010,"indexExpression":{"id":10009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6465:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6446:21:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":10011,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"6470:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10016,"indexExpression":{"baseExpression":{"expression":{"id":10012,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6476:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"scalingFactorPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9741,"src":"6476:28:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10015,"indexExpression":{"id":10014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6505:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6476:31:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6470:38:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6446:62:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10018,"nodeType":"ExpressionStatement","src":"6446:62:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10000,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6382:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10001,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6386:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"scalingFactorPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9741,"src":"6386:28:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6386:35:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6382:39:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10020,"initializationExpression":{"expression":{"id":9998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9996,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6375:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6379:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6375:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9999,"nodeType":"ExpressionStatement","src":"6375:5:84"},"loopExpression":{"expression":{"id":10006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6423:3:84","subExpression":{"id":10005,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6423:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10007,"nodeType":"ExpressionStatement","src":"6423:3:84"},"nodeType":"ForStatement","src":"6370:153:84"},{"expression":{"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10021,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"6537:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10023,"name":"scalingFactorPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"6580:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10022,"name":"getScalingFactorsForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10767,"src":"6554:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory[] memory)"}},"id":10024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6554:45:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"src":"6537:62:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10026,"nodeType":"ExpressionStatement","src":"6537:62:84"}]}},{"condition":{"expression":{"id":10029,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6624:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadAmps","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"6624:15:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10076,"nodeType":"IfStatement","src":"6620:297:84","trueBody":{"id":10075,"nodeType":"Block","src":"6641:276:84","statements":[{"assignments":[10035],"declarations":[{"constant":false,"id":10035,"mutability":"mutable","name":"ampPools","nodeType":"VariableDeclaration","scope":10075,"src":"6655:25:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10033,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10034,"nodeType":"ArrayTypeName","src":"6655:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":10043,"initialValue":{"arguments":[{"expression":{"expression":{"id":10039,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6697:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ampPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"6697:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6697:25:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6683:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":10036,"name":"address","nodeType":"ElementaryTypeName","src":"6687:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10037,"nodeType":"ArrayTypeName","src":"6687:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6683:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6655:68:84"},{"body":{"id":10067,"nodeType":"Block","src":"6786:75:84","statements":[{"expression":{"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10056,"name":"ampPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"6804:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10058,"indexExpression":{"id":10057,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6813:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6804:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":10059,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"6818:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10064,"indexExpression":{"baseExpression":{"expression":{"id":10060,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6824:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ampPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"6824:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10063,"indexExpression":{"id":10062,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6843:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6824:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6818:28:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6804:42:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10066,"nodeType":"ExpressionStatement","src":"6804:42:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6750:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10049,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6754:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ampPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"6754:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6754:25:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6750:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10068,"initializationExpression":{"expression":{"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6743:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6747:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6743:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10047,"nodeType":"ExpressionStatement","src":"6743:5:84"},"loopExpression":{"expression":{"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6781:3:84","subExpression":{"id":10053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"6781:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10055,"nodeType":"ExpressionStatement","src":"6781:3:84"},"nodeType":"ForStatement","src":"6738:123:84"},{"expression":{"id":10073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10069,"name":"amps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9801,"src":"6875:4:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10071,"name":"ampPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"6897:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10070,"name":"getAmpForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10430,"src":"6882:14:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory)"}},"id":10072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6882:24:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"6875:31:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10074,"nodeType":"ExpressionStatement","src":"6875:31:84"}]}},{"condition":{"expression":{"id":10077,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"6931:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadRates","nodeType":"MemberAccess","referencedDeclaration":9724,"src":"6931:16:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10124,"nodeType":"IfStatement","src":"6927:306:84","trueBody":{"id":10123,"nodeType":"Block","src":"6949:284:84","statements":[{"assignments":[10083],"declarations":[{"constant":false,"id":10083,"mutability":"mutable","name":"ratePools","nodeType":"VariableDeclaration","scope":10123,"src":"6963:26:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10081,"name":"address","nodeType":"ElementaryTypeName","src":"6963:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10082,"nodeType":"ArrayTypeName","src":"6963:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":10091,"initialValue":{"arguments":[{"expression":{"expression":{"id":10087,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7006:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ratePoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"7006:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7006:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6992:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":10084,"name":"address","nodeType":"ElementaryTypeName","src":"6996:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10085,"nodeType":"ArrayTypeName","src":"6996:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6992:41:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6963:70:84"},{"body":{"id":10115,"nodeType":"Block","src":"7097:77:84","statements":[{"expression":{"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10104,"name":"ratePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10083,"src":"7115:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10106,"indexExpression":{"id":10105,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7125:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7115:12:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":10107,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"7130:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10112,"indexExpression":{"baseExpression":{"expression":{"id":10108,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7136:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ratePoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"7136:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10111,"indexExpression":{"id":10110,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7156:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7136:22:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7130:29:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7115:44:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10114,"nodeType":"ExpressionStatement","src":"7115:44:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10096,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7060:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10097,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7064:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ratePoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"7064:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7064:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7060:30:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10116,"initializationExpression":{"expression":{"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10092,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7053:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7057:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7053:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10095,"nodeType":"ExpressionStatement","src":"7053:5:84"},"loopExpression":{"expression":{"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7092:3:84","subExpression":{"id":10101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7092:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10103,"nodeType":"ExpressionStatement","src":"7092:3:84"},"nodeType":"ForStatement","src":"7048:126:84"},{"expression":{"id":10121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10117,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"7188:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10119,"name":"ratePools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10083,"src":"7212:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10118,"name":"getRateForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"7196:15:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory)"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7196:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"7188:34:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10122,"nodeType":"ExpressionStatement","src":"7188:34:84"}]}},{"condition":{"expression":{"id":10125,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7247:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadLinearTargets","nodeType":"MemberAccess","referencedDeclaration":9716,"src":"7247:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10172,"nodeType":"IfStatement","src":"7243:361:84","trueBody":{"id":10171,"nodeType":"Block","src":"7273:331:84","statements":[{"assignments":[10131],"declarations":[{"constant":false,"id":10131,"mutability":"mutable","name":"linearTargetPools","nodeType":"VariableDeclaration","scope":10171,"src":"7287:34:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10129,"name":"address","nodeType":"ElementaryTypeName","src":"7287:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10130,"nodeType":"ArrayTypeName","src":"7287:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":10139,"initialValue":{"arguments":[{"expression":{"expression":{"id":10135,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7338:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"7338:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7338:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7324:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":10132,"name":"address","nodeType":"ElementaryTypeName","src":"7328:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10133,"nodeType":"ArrayTypeName","src":"7328:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":10138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7324:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7287:80:84"},{"body":{"id":10163,"nodeType":"Block","src":"7433:87:84","statements":[{"expression":{"id":10161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10152,"name":"linearTargetPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"7451:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10154,"indexExpression":{"id":10153,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7469:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7451:20:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":10155,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"7474:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10160,"indexExpression":{"baseExpression":{"expression":{"id":10156,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7480:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"7480:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10159,"indexExpression":{"id":10158,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7502:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7480:24:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7474:31:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7451:54:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10162,"nodeType":"ExpressionStatement","src":"7451:54:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10144,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7394:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10145,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7398:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":10146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"7398:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7398:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7394:32:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10164,"initializationExpression":{"expression":{"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7387:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7391:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7387:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10143,"nodeType":"ExpressionStatement","src":"7387:5:84"},"loopExpression":{"expression":{"id":10150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7428:3:84","subExpression":{"id":10149,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"7428:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10151,"nodeType":"ExpressionStatement","src":"7428:3:84"},"nodeType":"ForStatement","src":"7382:138:84"},{"expression":{"id":10169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10165,"name":"linearTargets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9790,"src":"7534:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10167,"name":"linearTargetPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"7575:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10166,"name":"getLinearTargetsForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10817,"src":"7550:24:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (uint256[] memory[] memory)"}},"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7550:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"src":"7534:59:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10170,"nodeType":"ExpressionStatement","src":"7534:59:84"}]}},{"expression":{"id":10185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10173,"name":"ignoreIdxs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9807,"src":"7614:10:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10175,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9770,"src":"7665:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},{"id":10176,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9772,"src":"7686:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},{"id":10177,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9780,"src":"7706:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10178,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"7733:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10179,"name":"linearWrappedTokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9786,"src":"7755:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10180,"name":"amps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9801,"src":"7792:4:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10181,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"7810:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10182,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9798,"src":"7829:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},{"id":10183,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"7857:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"},{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}],"id":10174,"name":"_getErrorIdxsFromResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11567,"src":"7627:24:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_PoolDataQueryConfig_$9748_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory,struct PoolDataQueryConfig memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory[] memory,uint256[] memory[] memory) pure returns (uint256[] memory)"}},"id":10184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7627:247:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"7614:260:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10186,"nodeType":"ExpressionStatement","src":"7614:260:84"}]},"documentation":{"id":9767,"nodeType":"StructuredDocumentation","src":"3547:727:84","text":" @dev Under most circumstances, you will use getPoolData as the main entry point for this contract.\n It allows you to fetch various types of pool data for many pools in a single query. The response\n is optimized for data out. We return the minimum amount of data from this query to facilitate\n faster network requests. getPoolData replaces the generic multicall approach that over fetches data\n in most situations and will revert if any query in the multicall reverts, making it difficult to identify\n pools that need to be filtered from routing. This function returns an array ignoreIdxs that contains the\n enumerated idxs in the poolIds array that should be filtered out."},"functionSelector":"ed5017f6","id":10188,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolData","nodeType":"FunctionDefinition","parameters":{"id":9773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9770,"mutability":"mutable","name":"poolIds","nodeType":"VariableDeclaration","scope":10188,"src":"4300:24:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":9768,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4300:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":9769,"nodeType":"ArrayTypeName","src":"4300:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":9772,"mutability":"mutable","name":"config","nodeType":"VariableDeclaration","scope":10188,"src":"4326:33:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig"},"typeName":{"id":9771,"name":"PoolDataQueryConfig","nodeType":"UserDefinedTypeName","referencedDeclaration":9748,"src":"4326:19:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_storage_ptr","typeString":"struct PoolDataQueryConfig"}},"visibility":"internal"}],"src":"4299:61:84"},"returnParameters":{"id":9808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9777,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":10188,"src":"4421:27:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":9774,"name":"uint256","nodeType":"ElementaryTypeName","src":"4421:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9775,"nodeType":"ArrayTypeName","src":"4421:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":9776,"nodeType":"ArrayTypeName","src":"4421:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"},{"constant":false,"id":9780,"mutability":"mutable","name":"totalSupplies","nodeType":"VariableDeclaration","scope":10188,"src":"4462:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9778,"name":"uint256","nodeType":"ElementaryTypeName","src":"4462:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9779,"nodeType":"ArrayTypeName","src":"4462:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9783,"mutability":"mutable","name":"swapFees","nodeType":"VariableDeclaration","scope":10188,"src":"4506:25:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9781,"name":"uint256","nodeType":"ElementaryTypeName","src":"4506:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9782,"nodeType":"ArrayTypeName","src":"4506:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9786,"mutability":"mutable","name":"linearWrappedTokenRates","nodeType":"VariableDeclaration","scope":10188,"src":"4545:40:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9784,"name":"uint256","nodeType":"ElementaryTypeName","src":"4545:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9785,"nodeType":"ArrayTypeName","src":"4545:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9790,"mutability":"mutable","name":"linearTargets","nodeType":"VariableDeclaration","scope":10188,"src":"4599:32:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":9787,"name":"uint256","nodeType":"ElementaryTypeName","src":"4599:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9788,"nodeType":"ArrayTypeName","src":"4599:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":9789,"nodeType":"ArrayTypeName","src":"4599:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"},{"constant":false,"id":9794,"mutability":"mutable","name":"weights","nodeType":"VariableDeclaration","scope":10188,"src":"4645:26:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":9791,"name":"uint256","nodeType":"ElementaryTypeName","src":"4645:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9792,"nodeType":"ArrayTypeName","src":"4645:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":9793,"nodeType":"ArrayTypeName","src":"4645:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"},{"constant":false,"id":9798,"mutability":"mutable","name":"scalingFactors","nodeType":"VariableDeclaration","scope":10188,"src":"4685:33:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":9795,"name":"uint256","nodeType":"ElementaryTypeName","src":"4685:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9796,"nodeType":"ArrayTypeName","src":"4685:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":9797,"nodeType":"ArrayTypeName","src":"4685:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"},{"constant":false,"id":9801,"mutability":"mutable","name":"amps","nodeType":"VariableDeclaration","scope":10188,"src":"4732:21:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9799,"name":"uint256","nodeType":"ElementaryTypeName","src":"4732:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9800,"nodeType":"ArrayTypeName","src":"4732:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9804,"mutability":"mutable","name":"rates","nodeType":"VariableDeclaration","scope":10188,"src":"4767:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9802,"name":"uint256","nodeType":"ElementaryTypeName","src":"4767:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9803,"nodeType":"ArrayTypeName","src":"4767:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9807,"mutability":"mutable","name":"ignoreIdxs","nodeType":"VariableDeclaration","scope":10188,"src":"4803:27:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9805,"name":"uint256","nodeType":"ElementaryTypeName","src":"4803:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9806,"nodeType":"ArrayTypeName","src":"4803:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4407:433:84"},"scope":11568,"src":"4279:3602:84","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10262,"nodeType":"Block","src":"8078:414:84","statements":[{"assignments":[10203],"declarations":[{"constant":false,"id":10203,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10262,"src":"8088:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10202,"name":"uint256","nodeType":"ElementaryTypeName","src":"8088:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10204,"nodeType":"VariableDeclarationStatement","src":"8088:9:84"},{"assignments":[10209],"declarations":[{"constant":false,"id":10209,"mutability":"mutable","name":"pools","nodeType":"VariableDeclaration","scope":10262,"src":"8107:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10207,"name":"address","nodeType":"ElementaryTypeName","src":"8107:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10208,"nodeType":"ArrayTypeName","src":"8107:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":10216,"initialValue":{"arguments":[{"expression":{"id":10213,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10191,"src":"8146:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8146:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8132:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":10210,"name":"address","nodeType":"ElementaryTypeName","src":"8136:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10211,"nodeType":"ArrayTypeName","src":"8136:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":10215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8132:29:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8107:54:84"},{"body":{"id":10240,"nodeType":"Block","src":"8209:65:84","statements":[{"expression":{"id":10238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":10228,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"8224:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10230,"indexExpression":{"id":10229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8230:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8224:8:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},null],"id":10231,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8223:12:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$__$","typeString":"tuple(address,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10234,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10191,"src":"8252:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10236,"indexExpression":{"id":10235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8260:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8252:10:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10232,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9756,"src":"8238:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":10233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"8238:13:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8238:25:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"src":"8223:40:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10239,"nodeType":"ExpressionStatement","src":"8223:40:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10221,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8184:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10222,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10191,"src":"8188:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8188:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8184:18:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10241,"initializationExpression":{"expression":{"id":10219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8177:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8181:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8177:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10220,"nodeType":"ExpressionStatement","src":"8177:5:84"},"loopExpression":{"expression":{"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8204:3:84","subExpression":{"id":10225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8204:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10227,"nodeType":"ExpressionStatement","src":"8204:3:84"},"nodeType":"ForStatement","src":"8172:102:84"},{"condition":{"expression":{"id":10242,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"8288:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolStatusQueryConfig_$9753_memory_ptr","typeString":"struct PoolStatusQueryConfig memory"}},"id":10243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadIsPaused","nodeType":"MemberAccess","referencedDeclaration":9752,"src":"8288:19:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10251,"nodeType":"IfStatement","src":"8284:87:84","trueBody":{"id":10250,"nodeType":"Block","src":"8309:62:84","statements":[{"expression":{"id":10248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10244,"name":"isPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10197,"src":"8323:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10246,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"8354:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10245,"name":"getIsPausedForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10911,"src":"8334:19:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (bool[] memory)"}},"id":10247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8334:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"src":"8323:37:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":10249,"nodeType":"ExpressionStatement","src":"8323:37:84"}]}},{"condition":{"expression":{"id":10252,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"8385:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolStatusQueryConfig_$9753_memory_ptr","typeString":"struct PoolStatusQueryConfig memory"}},"id":10253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":9750,"src":"8385:25:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10261,"nodeType":"IfStatement","src":"8381:105:84","trueBody":{"id":10260,"nodeType":"Block","src":"8412:74:84","statements":[{"expression":{"id":10258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10254,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10200,"src":"8426:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10256,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"8469:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":10255,"name":"getInRecoveryModeForPools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"8443:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (address[] memory) view returns (bool[] memory)"}},"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8443:32:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"src":"8426:49:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":10259,"nodeType":"ExpressionStatement","src":"8426:49:84"}]}}]},"functionSelector":"4b3dcc1e","id":10263,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolStatus","nodeType":"FunctionDefinition","parameters":{"id":10194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10191,"mutability":"mutable","name":"poolIds","nodeType":"VariableDeclaration","scope":10263,"src":"7910:24:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":10189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7910:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10190,"nodeType":"ArrayTypeName","src":"7910:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":10193,"mutability":"mutable","name":"config","nodeType":"VariableDeclaration","scope":10263,"src":"7936:35:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolStatusQueryConfig_$9753_memory_ptr","typeString":"struct PoolStatusQueryConfig"},"typeName":{"id":10192,"name":"PoolStatusQueryConfig","nodeType":"UserDefinedTypeName","referencedDeclaration":9753,"src":"7936:21:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolStatusQueryConfig_$9753_storage_ptr","typeString":"struct PoolStatusQueryConfig"}},"visibility":"internal"}],"src":"7909:63:84"},"returnParameters":{"id":10201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10197,"mutability":"mutable","name":"isPaused","nodeType":"VariableDeclaration","scope":10263,"src":"8020:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10195,"name":"bool","nodeType":"ElementaryTypeName","src":"8020:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10196,"nodeType":"ArrayTypeName","src":"8020:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"},{"constant":false,"id":10200,"mutability":"mutable","name":"inRecoveryMode","nodeType":"VariableDeclaration","scope":10263,"src":"8044:28:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10198,"name":"bool","nodeType":"ElementaryTypeName","src":"8044:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10199,"nodeType":"ArrayTypeName","src":"8044:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"8019:54:84"},"scope":11568,"src":"7887:605:84","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":10335,"nodeType":"Block","src":"8665:428:84","statements":[{"assignments":[10279],"declarations":[{"constant":false,"id":10279,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":10335,"src":"8675:25:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10277,"name":"uint256","nodeType":"ElementaryTypeName","src":"8675:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10278,"nodeType":"ArrayTypeName","src":"8675:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10280,"nodeType":"VariableDeclarationStatement","src":"8675:25:84"},{"assignments":[10282],"declarations":[{"constant":false,"id":10282,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":10335,"src":"8710:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10281,"name":"uint256","nodeType":"ElementaryTypeName","src":"8710:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10283,"nodeType":"VariableDeclarationStatement","src":"8710:23:84"},{"assignments":[10289],"declarations":[{"constant":false,"id":10289,"mutability":"mutable","name":"allBalances","nodeType":"VariableDeclaration","scope":10335,"src":"8743:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8743:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10287,"nodeType":"ArrayTypeName","src":"8743:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10288,"nodeType":"ArrayTypeName","src":"8743:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"id":10297,"initialValue":{"arguments":[{"expression":{"id":10294,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10266,"src":"8792:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8792:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8776:15:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory[] memory)"},"typeName":{"baseType":{"baseType":{"id":10290,"name":"uint256","nodeType":"ElementaryTypeName","src":"8780:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10291,"nodeType":"ArrayTypeName","src":"8780:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10292,"nodeType":"ArrayTypeName","src":"8780:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8776:31:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8743:64:84"},{"body":{"id":10331,"nodeType":"Block","src":"8863:195:84","statements":[{"expression":{"id":10318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":10309,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"8880:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10310,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"8890:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10311,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8877:29:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10314,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10266,"src":"8929:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10316,"indexExpression":{"id":10315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"8937:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8929:10:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10312,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9756,"src":"8909:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":10313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3620,"src":"8909:19:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"}},"id":10317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8909:31:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"src":"8877:63:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10319,"nodeType":"ExpressionStatement","src":"8877:63:84"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10320,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"8959:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10321,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10268,"src":"8977:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8959:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10330,"nodeType":"IfStatement","src":"8955:93:84","trueBody":{"id":10329,"nodeType":"Block","src":"8990:58:84","statements":[{"expression":{"id":10327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10323,"name":"allBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10289,"src":"9008:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10325,"indexExpression":{"id":10324,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"9020:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9008:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10326,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"9025:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"9008:25:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10328,"nodeType":"ExpressionStatement","src":"9008:25:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"8838:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10303,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10266,"src":"8842:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8842:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8838:18:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10332,"initializationExpression":{"assignments":[10299],"declarations":[{"constant":false,"id":10299,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10332,"src":"8823:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10298,"name":"uint256","nodeType":"ElementaryTypeName","src":"8823:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10301,"initialValue":{"hexValue":"30","id":10300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8835:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8823:13:84"},"loopExpression":{"expression":{"id":10307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8858:3:84","subExpression":{"id":10306,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"8858:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10308,"nodeType":"ExpressionStatement","src":"8858:3:84"},"nodeType":"ForStatement","src":"8818:240:84"},{"expression":{"id":10333,"name":"allBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10289,"src":"9075:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"functionReturnParameters":10274,"id":10334,"nodeType":"Return","src":"9068:18:84"}]},"functionSelector":"716bb27a","id":10336,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolTokenBalancesWithUpdatesAfterBlock","nodeType":"FunctionDefinition","parameters":{"id":10269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10266,"mutability":"mutable","name":"poolIds","nodeType":"VariableDeclaration","scope":10336,"src":"8549:24:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":10264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8549:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10265,"nodeType":"ArrayTypeName","src":"8549:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":10268,"mutability":"mutable","name":"blockNumber","nodeType":"VariableDeclaration","scope":10336,"src":"8575:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10267,"name":"uint256","nodeType":"ElementaryTypeName","src":"8575:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8548:47:84"},"returnParameters":{"id":10274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10273,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10336,"src":"8641:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10270,"name":"uint256","nodeType":"ElementaryTypeName","src":"8641:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10271,"nodeType":"ArrayTypeName","src":"8641:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10272,"nodeType":"ArrayTypeName","src":"8641:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"src":"8640:20:84"},"scope":11568,"src":"8498:595:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10382,"nodeType":"Block","src":"9213:241:84","statements":[{"assignments":[10349],"declarations":[{"constant":false,"id":10349,"mutability":"mutable","name":"rates","nodeType":"VariableDeclaration","scope":10382,"src":"9223:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10347,"name":"uint256","nodeType":"ElementaryTypeName","src":"9223:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10348,"nodeType":"ArrayTypeName","src":"9223:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10356,"initialValue":{"arguments":[{"expression":{"id":10353,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"9262:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9262:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9248:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10350,"name":"uint256","nodeType":"ElementaryTypeName","src":"9252:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10351,"nodeType":"ArrayTypeName","src":"9252:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9248:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9223:60:84"},{"body":{"id":10378,"nodeType":"Block","src":"9345:80:84","statements":[{"expression":{"id":10376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10368,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"9359:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10370,"indexExpression":{"id":10369,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10358,"src":"9365:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9359:8:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10372,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"9397:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10374,"indexExpression":{"id":10373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10358,"src":"9411:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9397:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10371,"name":"_getLinearWrappedTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10937,"src":"9370:26:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9370:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9359:55:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10377,"nodeType":"ExpressionStatement","src":"9359:55:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10358,"src":"9314:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10362,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10339,"src":"9318:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9318:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9314:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10379,"initializationExpression":{"assignments":[10358],"declarations":[{"constant":false,"id":10358,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10379,"src":"9299:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10357,"name":"uint256","nodeType":"ElementaryTypeName","src":"9299:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10360,"initialValue":{"hexValue":"30","id":10359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9311:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9299:13:84"},"loopExpression":{"expression":{"id":10366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9340:3:84","subExpression":{"id":10365,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10358,"src":"9340:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10367,"nodeType":"ExpressionStatement","src":"9340:3:84"},"nodeType":"ForStatement","src":"9294:131:84"},{"expression":{"id":10380,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10349,"src":"9442:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10344,"id":10381,"nodeType":"Return","src":"9435:12:84"}]},"functionSelector":"17615f32","id":10383,"implemented":true,"kind":"function","modifiers":[],"name":"getWrappedTokenRateForLinearPools","nodeType":"FunctionDefinition","parameters":{"id":10340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10339,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10383,"src":"9142:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10337,"name":"address","nodeType":"ElementaryTypeName","src":"9142:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10338,"nodeType":"ArrayTypeName","src":"9142:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"9141:32:84"},"returnParameters":{"id":10344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10343,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10383,"src":"9195:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10341,"name":"uint256","nodeType":"ElementaryTypeName","src":"9195:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10342,"nodeType":"ArrayTypeName","src":"9195:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9194:18:84"},"scope":11568,"src":"9099:355:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10429,"nodeType":"Block","src":"9555:223:84","statements":[{"assignments":[10396],"declarations":[{"constant":false,"id":10396,"mutability":"mutable","name":"amps","nodeType":"VariableDeclaration","scope":10429,"src":"9565:21:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10394,"name":"uint256","nodeType":"ElementaryTypeName","src":"9565:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10395,"nodeType":"ArrayTypeName","src":"9565:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10403,"initialValue":{"arguments":[{"expression":{"id":10400,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"9603:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9603:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9589:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10397,"name":"uint256","nodeType":"ElementaryTypeName","src":"9593:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10398,"nodeType":"ArrayTypeName","src":"9593:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9589:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9565:59:84"},{"body":{"id":10425,"nodeType":"Block","src":"9686:64:84","statements":[{"expression":{"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10415,"name":"amps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"9700:4:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10417,"indexExpression":{"id":10416,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"9705:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9700:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10419,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"9722:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10421,"indexExpression":{"id":10420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"9736:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9722:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10418,"name":"_getPoolAmp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"9710:11:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9710:29:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9700:39:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10424,"nodeType":"ExpressionStatement","src":"9700:39:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"9655:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10409,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"9659:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9659:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9655:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10426,"initializationExpression":{"assignments":[10405],"declarations":[{"constant":false,"id":10405,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10426,"src":"9640:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10404,"name":"uint256","nodeType":"ElementaryTypeName","src":"9640:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10407,"initialValue":{"hexValue":"30","id":10406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9652:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9640:13:84"},"loopExpression":{"expression":{"id":10413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9681:3:84","subExpression":{"id":10412,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"9681:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10414,"nodeType":"ExpressionStatement","src":"9681:3:84"},"nodeType":"ForStatement","src":"9635:115:84"},{"expression":{"id":10427,"name":"amps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"9767:4:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10391,"id":10428,"nodeType":"Return","src":"9760:11:84"}]},"functionSelector":"7b2de533","id":10430,"implemented":true,"kind":"function","modifiers":[],"name":"getAmpForPools","nodeType":"FunctionDefinition","parameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10386,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10430,"src":"9484:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10384,"name":"address","nodeType":"ElementaryTypeName","src":"9484:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10385,"nodeType":"ArrayTypeName","src":"9484:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"9483:32:84"},"returnParameters":{"id":10391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10390,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10430,"src":"9537:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10388,"name":"uint256","nodeType":"ElementaryTypeName","src":"9537:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10389,"nodeType":"ArrayTypeName","src":"9537:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9536:18:84"},"scope":11568,"src":"9460:318:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10476,"nodeType":"Block","src":"9880:227:84","statements":[{"assignments":[10443],"declarations":[{"constant":false,"id":10443,"mutability":"mutable","name":"rates","nodeType":"VariableDeclaration","scope":10476,"src":"9890:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10441,"name":"uint256","nodeType":"ElementaryTypeName","src":"9890:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10442,"nodeType":"ArrayTypeName","src":"9890:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10450,"initialValue":{"arguments":[{"expression":{"id":10447,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10433,"src":"9929:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9929:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9915:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10444,"name":"uint256","nodeType":"ElementaryTypeName","src":"9919:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10445,"nodeType":"ArrayTypeName","src":"9919:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9915:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9890:60:84"},{"body":{"id":10472,"nodeType":"Block","src":"10012:66:84","statements":[{"expression":{"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10462,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"10026:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10464,"indexExpression":{"id":10463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"10032:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10026:8:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10466,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10433,"src":"10050:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10468,"indexExpression":{"id":10467,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"10064:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10050:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10465,"name":"_getPoolRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"10037:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10037:30:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10026:41:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10471,"nodeType":"ExpressionStatement","src":"10026:41:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10455,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"9981:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10456,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10433,"src":"9985:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9985:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9981:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10473,"initializationExpression":{"assignments":[10452],"declarations":[{"constant":false,"id":10452,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10473,"src":"9966:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10451,"name":"uint256","nodeType":"ElementaryTypeName","src":"9966:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10454,"initialValue":{"hexValue":"30","id":10453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9978:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9966:13:84"},"loopExpression":{"expression":{"id":10460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10007:3:84","subExpression":{"id":10459,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"10007:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10461,"nodeType":"ExpressionStatement","src":"10007:3:84"},"nodeType":"ForStatement","src":"9961:117:84"},{"expression":{"id":10474,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"10095:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10438,"id":10475,"nodeType":"Return","src":"10088:12:84"}]},"functionSelector":"c4fb0f82","id":10477,"implemented":true,"kind":"function","modifiers":[],"name":"getRateForPools","nodeType":"FunctionDefinition","parameters":{"id":10434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10433,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10477,"src":"9809:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10431,"name":"address","nodeType":"ElementaryTypeName","src":"9809:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10432,"nodeType":"ArrayTypeName","src":"9809:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"9808:32:84"},"returnParameters":{"id":10438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10437,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10477,"src":"9862:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10435,"name":"uint256","nodeType":"ElementaryTypeName","src":"9862:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10436,"nodeType":"ArrayTypeName","src":"9862:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9861:18:84"},"scope":11568,"src":"9784:323:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10579,"nodeType":"Block","src":"10285:902:84","statements":[{"assignments":[10493],"declarations":[{"constant":false,"id":10493,"mutability":"mutable","name":"swapFees","nodeType":"VariableDeclaration","scope":10579,"src":"10295:25:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10491,"name":"uint256","nodeType":"ElementaryTypeName","src":"10295:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10492,"nodeType":"ArrayTypeName","src":"10295:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10500,"initialValue":{"arguments":[{"expression":{"id":10497,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10480,"src":"10337:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"10337:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10323:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10494,"name":"uint256","nodeType":"ElementaryTypeName","src":"10327:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10495,"nodeType":"ArrayTypeName","src":"10327:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10323:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10295:63:84"},{"body":{"id":10575,"nodeType":"Block","src":"10420:735:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapFeeType_$9645","typeString":"enum SwapFeeType"},"id":10517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10512,"name":"swapFeeTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10483,"src":"10438:12:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_memory_ptr","typeString":"enum SwapFeeType[] memory"}},"id":10514,"indexExpression":{"id":10513,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10451:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10438:15:84","typeDescriptions":{"typeIdentifier":"t_enum$_SwapFeeType_$9645","typeString":"enum SwapFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10515,"name":"SwapFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9645,"src":"10457:11:84","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapFeeType_$9645_$","typeString":"type(enum SwapFeeType)"}},"id":10516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"PERCENT_FEE","nodeType":"MemberAccess","src":"10457:23:84","typeDescriptions":{"typeIdentifier":"t_enum$_SwapFeeType_$9645","typeString":"enum SwapFeeType"}},"src":"10438:42:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10573,"nodeType":"Block","src":"10726:419:84","statements":[{"clauses":[{"block":{"id":10562,"nodeType":"Block","src":"11006:62:84","statements":[{"expression":{"id":10560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10556,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"11028:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10558,"indexExpression":{"id":10557,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"11037:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11028:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10559,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10554,"src":"11042:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11028:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10561,"nodeType":"ExpressionStatement","src":"11028:21:84"}]},"errorName":"","id":10563,"nodeType":"TryCatchClause","parameters":{"id":10555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10554,"mutability":"mutable","name":"swapFee","nodeType":"VariableDeclaration","scope":10563,"src":"10989:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10553,"name":"uint256","nodeType":"ElementaryTypeName","src":"10989:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10988:17:84"},"src":"10980:88:84"},{"block":{"id":10570,"nodeType":"Block","src":"11075:56:84","statements":[{"expression":{"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10564,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"11097:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10566,"indexExpression":{"id":10565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"11106:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11097:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11111:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11097:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10569,"nodeType":"ExpressionStatement","src":"11097:15:84"}]},"errorName":"","id":10571,"nodeType":"TryCatchClause","src":"11069:62:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":10547,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10480,"src":"10939:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10549,"indexExpression":{"id":10548,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10953:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10939:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10546,"name":"IPoolWithSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"10912:26:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithSwapFeePercentage_$9690_$","typeString":"type(contract IPoolWithSwapFeePercentage)"}},"id":10550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10912:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithSwapFeePercentage_$9690","typeString":"contract IPoolWithSwapFeePercentage"}},"id":10551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":9689,"src":"10912:65:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10912:67:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10572,"nodeType":"TryStatement","src":"10908:223:84"}]},"id":10574,"nodeType":"IfStatement","src":"10434:711:84","trueBody":{"id":10545,"nodeType":"Block","src":"10482:238:84","statements":[{"clauses":[{"block":{"id":10534,"nodeType":"Block","src":"10581:62:84","statements":[{"expression":{"id":10532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10528,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"10603:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10530,"indexExpression":{"id":10529,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10612:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10603:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10531,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10526,"src":"10617:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10603:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10533,"nodeType":"ExpressionStatement","src":"10603:21:84"}]},"errorName":"","id":10535,"nodeType":"TryCatchClause","parameters":{"id":10527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10526,"mutability":"mutable","name":"swapFee","nodeType":"VariableDeclaration","scope":10535,"src":"10564:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10525,"name":"uint256","nodeType":"ElementaryTypeName","src":"10564:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10563:17:84"},"src":"10555:88:84"},{"block":{"id":10542,"nodeType":"Block","src":"10650:56:84","statements":[{"expression":{"id":10540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10536,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"10672:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10538,"indexExpression":{"id":10537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10681:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10672:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10686:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10672:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10541,"nodeType":"ExpressionStatement","src":"10672:15:84"}]},"errorName":"","id":10543,"nodeType":"TryCatchClause","src":"10644:62:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":10519,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10480,"src":"10524:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10521,"indexExpression":{"id":10520,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10538:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10524:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10518,"name":"IPoolWithPercentFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9696,"src":"10504:19:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithPercentFee_$9696_$","typeString":"type(contract IPoolWithPercentFee)"}},"id":10522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10504:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithPercentFee_$9696","typeString":"contract IPoolWithPercentFee"}},"id":10523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"percentFee","nodeType":"MemberAccess","referencedDeclaration":9695,"src":"10504:48:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10504:50:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10544,"nodeType":"TryStatement","src":"10500:206:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10505,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10389:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10506,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10480,"src":"10393:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"10393:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10576,"initializationExpression":{"assignments":[10502],"declarations":[{"constant":false,"id":10502,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10576,"src":"10374:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10501,"name":"uint256","nodeType":"ElementaryTypeName","src":"10374:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10504,"initialValue":{"hexValue":"30","id":10503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10386:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10374:13:84"},"loopExpression":{"expression":{"id":10510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10415:3:84","subExpression":{"id":10509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"10415:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10511,"nodeType":"ExpressionStatement","src":"10415:3:84"},"nodeType":"ForStatement","src":"10369:786:84"},{"expression":{"id":10577,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10493,"src":"11172:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10488,"id":10578,"nodeType":"Return","src":"11165:15:84"}]},"functionSelector":"04013a7d","id":10580,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapFeePercentageForPools","nodeType":"FunctionDefinition","parameters":{"id":10484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10480,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10580,"src":"10151:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10478,"name":"address","nodeType":"ElementaryTypeName","src":"10151:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10479,"nodeType":"ArrayTypeName","src":"10151:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10483,"mutability":"mutable","name":"swapFeeTypes","nodeType":"VariableDeclaration","scope":10580,"src":"10183:33:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_memory_ptr","typeString":"enum SwapFeeType[]"},"typeName":{"baseType":{"id":10481,"name":"SwapFeeType","nodeType":"UserDefinedTypeName","referencedDeclaration":9645,"src":"10183:11:84","typeDescriptions":{"typeIdentifier":"t_enum$_SwapFeeType_$9645","typeString":"enum SwapFeeType"}},"id":10482,"nodeType":"ArrayTypeName","src":"10183:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_SwapFeeType_$9645_$dyn_storage_ptr","typeString":"enum SwapFeeType[]"}},"visibility":"internal"}],"src":"10150:67:84"},"returnParameters":{"id":10488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10487,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10580,"src":"10263:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10485,"name":"uint256","nodeType":"ElementaryTypeName","src":"10263:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10486,"nodeType":"ArrayTypeName","src":"10263:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10262:18:84"},"scope":11568,"src":"10113:1074:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10666,"nodeType":"Block","src":"11367:600:84","statements":[{"assignments":[10596],"declarations":[{"constant":false,"id":10596,"mutability":"mutable","name":"totalSupplies","nodeType":"VariableDeclaration","scope":10666,"src":"11377:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10594,"name":"uint256","nodeType":"ElementaryTypeName","src":"11377:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10595,"nodeType":"ArrayTypeName","src":"11377:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10603,"initialValue":{"arguments":[{"expression":{"id":10600,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"11424:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11424:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11410:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10597,"name":"uint256","nodeType":"ElementaryTypeName","src":"11414:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10598,"nodeType":"ArrayTypeName","src":"11414:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11410:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11377:68:84"},{"body":{"id":10662,"nodeType":"Block","src":"11507:423:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"},"id":10620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10615,"name":"totalSupplyTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"11525:16:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr","typeString":"enum TotalSupplyType[] memory"}},"id":10617,"indexExpression":{"id":10616,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11542:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11525:19:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10618,"name":"TotalSupplyType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"11548:15:84","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TotalSupplyType_$9642_$","typeString":"type(enum TotalSupplyType)"}},"id":10619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"VIRTUAL_SUPPLY","nodeType":"MemberAccess","src":"11548:30:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"src":"11525:53:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"},"id":10637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10632,"name":"totalSupplyTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"11681:16:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr","typeString":"enum TotalSupplyType[] memory"}},"id":10634,"indexExpression":{"id":10633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11698:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11681:19:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10635,"name":"TotalSupplyType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9642,"src":"11704:15:84","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TotalSupplyType_$9642_$","typeString":"type(enum TotalSupplyType)"}},"id":10636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"ACTUAL_SUPPLY","nodeType":"MemberAccess","src":"11704:29:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"src":"11681:52:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10659,"nodeType":"Block","src":"11831:89:84","statements":[{"expression":{"id":10657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10649,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10596,"src":"11849:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10651,"indexExpression":{"id":10650,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11863:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11849:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10653,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"11888:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10655,"indexExpression":{"id":10654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11902:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11888:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10652,"name":"_getPoolTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11048,"src":"11868:19:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11868:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11849:56:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10658,"nodeType":"ExpressionStatement","src":"11849:56:84"}]},"id":10660,"nodeType":"IfStatement","src":"11677:243:84","trueBody":{"id":10648,"nodeType":"Block","src":"11735:90:84","statements":[{"expression":{"id":10646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10638,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10596,"src":"11753:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10640,"indexExpression":{"id":10639,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11767:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11753:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10642,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"11793:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10644,"indexExpression":{"id":10643,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11807:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11793:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10641,"name":"_getPoolActualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11023,"src":"11772:20:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11772:38:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11753:57:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10647,"nodeType":"ExpressionStatement","src":"11753:57:84"}]}},"id":10661,"nodeType":"IfStatement","src":"11521:399:84","trueBody":{"id":10631,"nodeType":"Block","src":"11580:91:84","statements":[{"expression":{"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10621,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10596,"src":"11598:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10623,"indexExpression":{"id":10622,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11612:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11598:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10625,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"11639:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10627,"indexExpression":{"id":10626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11653:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11639:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10624,"name":"_getPoolVirtualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10998,"src":"11617:21:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11617:39:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11598:58:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10630,"nodeType":"ExpressionStatement","src":"11598:58:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10608,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11476:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10609,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"11480:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11480:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11476:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10663,"initializationExpression":{"assignments":[10605],"declarations":[{"constant":false,"id":10605,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10663,"src":"11461:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10604,"name":"uint256","nodeType":"ElementaryTypeName","src":"11461:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10607,"initialValue":{"hexValue":"30","id":10606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11473:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11461:13:84"},"loopExpression":{"expression":{"id":10613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11502:3:84","subExpression":{"id":10612,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10605,"src":"11502:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10614,"nodeType":"ExpressionStatement","src":"11502:3:84"},"nodeType":"ForStatement","src":"11456:474:84"},{"expression":{"id":10664,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10596,"src":"11947:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10591,"id":10665,"nodeType":"Return","src":"11940:20:84"}]},"functionSelector":"b4a9f0c8","id":10667,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupplyForPools","nodeType":"FunctionDefinition","parameters":{"id":10587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10583,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10667,"src":"11225:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10581,"name":"address","nodeType":"ElementaryTypeName","src":"11225:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10582,"nodeType":"ArrayTypeName","src":"11225:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10586,"mutability":"mutable","name":"totalSupplyTypes","nodeType":"VariableDeclaration","scope":10667,"src":"11257:41:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_memory_ptr","typeString":"enum TotalSupplyType[]"},"typeName":{"baseType":{"id":10584,"name":"TotalSupplyType","nodeType":"UserDefinedTypeName","referencedDeclaration":9642,"src":"11257:15:84","typeDescriptions":{"typeIdentifier":"t_enum$_TotalSupplyType_$9642","typeString":"enum TotalSupplyType"}},"id":10585,"nodeType":"ArrayTypeName","src":"11257:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TotalSupplyType_$9642_$dyn_storage_ptr","typeString":"enum TotalSupplyType[]"}},"visibility":"internal"}],"src":"11224:75:84"},"returnParameters":{"id":10591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10590,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10667,"src":"11345:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10588,"name":"uint256","nodeType":"ElementaryTypeName","src":"11345:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10589,"nodeType":"ArrayTypeName","src":"11345:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11344:18:84"},"scope":11568,"src":"11193:774:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10716,"nodeType":"Block","src":"12084:259:84","statements":[{"assignments":[10682],"declarations":[{"constant":false,"id":10682,"mutability":"mutable","name":"allWeights","nodeType":"VariableDeclaration","scope":10716,"src":"12094:29:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10679,"name":"uint256","nodeType":"ElementaryTypeName","src":"12094:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10680,"nodeType":"ArrayTypeName","src":"12094:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10681,"nodeType":"ArrayTypeName","src":"12094:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"id":10690,"initialValue":{"arguments":[{"expression":{"id":10687,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"12142:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12142:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12126:15:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory[] memory)"},"typeName":{"baseType":{"baseType":{"id":10683,"name":"uint256","nodeType":"ElementaryTypeName","src":"12130:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10684,"nodeType":"ArrayTypeName","src":"12130:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10685,"nodeType":"ArrayTypeName","src":"12130:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}}},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12126:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12094:69:84"},{"body":{"id":10712,"nodeType":"Block","src":"12225:84:84","statements":[{"expression":{"id":10710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10702,"name":"allWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10682,"src":"12239:10:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10704,"indexExpression":{"id":10703,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"12250:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12239:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10706,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"12281:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10708,"indexExpression":{"id":10707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"12295:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12281:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10705,"name":"_getPoolNormalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11149,"src":"12255:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256[] memory)"}},"id":10709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12255:43:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"12239:59:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10711,"nodeType":"ExpressionStatement","src":"12239:59:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"12194:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10696,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10670,"src":"12198:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12198:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12194:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10713,"initializationExpression":{"assignments":[10692],"declarations":[{"constant":false,"id":10692,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10713,"src":"12179:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10691,"name":"uint256","nodeType":"ElementaryTypeName","src":"12179:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10694,"initialValue":{"hexValue":"30","id":10693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12191:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12179:13:84"},"loopExpression":{"expression":{"id":10700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12220:3:84","subExpression":{"id":10699,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10692,"src":"12220:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10701,"nodeType":"ExpressionStatement","src":"12220:3:84"},"nodeType":"ForStatement","src":"12174:135:84"},{"expression":{"id":10714,"name":"allWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10682,"src":"12326:10:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"functionReturnParameters":10676,"id":10715,"nodeType":"Return","src":"12319:17:84"}]},"functionSelector":"b3a46001","id":10717,"implemented":true,"kind":"function","modifiers":[],"name":"getNormalizedWeightsForPools","nodeType":"FunctionDefinition","parameters":{"id":10671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10670,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10717,"src":"12011:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10668,"name":"address","nodeType":"ElementaryTypeName","src":"12011:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10669,"nodeType":"ArrayTypeName","src":"12011:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12010:32:84"},"returnParameters":{"id":10676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10675,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10717,"src":"12064:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10672,"name":"uint256","nodeType":"ElementaryTypeName","src":"12064:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10673,"nodeType":"ArrayTypeName","src":"12064:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10674,"nodeType":"ArrayTypeName","src":"12064:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"src":"12063:20:84"},"scope":11568,"src":"11973:370:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10766,"nodeType":"Block","src":"12457:277:84","statements":[{"assignments":[10732],"declarations":[{"constant":false,"id":10732,"mutability":"mutable","name":"allScalingFactors","nodeType":"VariableDeclaration","scope":10766,"src":"12467:36:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10729,"name":"uint256","nodeType":"ElementaryTypeName","src":"12467:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10730,"nodeType":"ArrayTypeName","src":"12467:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10731,"nodeType":"ArrayTypeName","src":"12467:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"id":10740,"initialValue":{"arguments":[{"expression":{"id":10737,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10720,"src":"12522:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12522:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12506:15:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory[] memory)"},"typeName":{"baseType":{"baseType":{"id":10733,"name":"uint256","nodeType":"ElementaryTypeName","src":"12510:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10734,"nodeType":"ArrayTypeName","src":"12510:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10735,"nodeType":"ArrayTypeName","src":"12510:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}}},"id":10739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12506:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12467:76:84"},{"body":{"id":10762,"nodeType":"Block","src":"12605:88:84","statements":[{"expression":{"id":10760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10752,"name":"allScalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"12619:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10754,"indexExpression":{"id":10753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10742,"src":"12637:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12619:20:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10756,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10720,"src":"12665:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10758,"indexExpression":{"id":10757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10742,"src":"12679:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12665:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10755,"name":"_getPoolScalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11111,"src":"12642:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256[] memory)"}},"id":10759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12642:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"12619:63:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10761,"nodeType":"ExpressionStatement","src":"12619:63:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10745,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10742,"src":"12574:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10746,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10720,"src":"12578:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12578:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12574:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10763,"initializationExpression":{"assignments":[10742],"declarations":[{"constant":false,"id":10742,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10763,"src":"12559:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10741,"name":"uint256","nodeType":"ElementaryTypeName","src":"12559:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10744,"initialValue":{"hexValue":"30","id":10743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12571:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12559:13:84"},"loopExpression":{"expression":{"id":10750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12600:3:84","subExpression":{"id":10749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10742,"src":"12600:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10751,"nodeType":"ExpressionStatement","src":"12600:3:84"},"nodeType":"ForStatement","src":"12554:139:84"},{"expression":{"id":10764,"name":"allScalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"12710:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"functionReturnParameters":10726,"id":10765,"nodeType":"Return","src":"12703:24:84"}]},"functionSelector":"828f7c7d","id":10767,"implemented":true,"kind":"function","modifiers":[],"name":"getScalingFactorsForPools","nodeType":"FunctionDefinition","parameters":{"id":10721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10720,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10767,"src":"12384:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10718,"name":"address","nodeType":"ElementaryTypeName","src":"12384:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10719,"nodeType":"ArrayTypeName","src":"12384:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12383:32:84"},"returnParameters":{"id":10726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10725,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10767,"src":"12437:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10722,"name":"uint256","nodeType":"ElementaryTypeName","src":"12437:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10723,"nodeType":"ArrayTypeName","src":"12437:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10724,"nodeType":"ArrayTypeName","src":"12437:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"src":"12436:20:84"},"scope":11568,"src":"12349:385:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10816,"nodeType":"Block","src":"12847:264:84","statements":[{"assignments":[10782],"declarations":[{"constant":false,"id":10782,"mutability":"mutable","name":"linearTargets","nodeType":"VariableDeclaration","scope":10816,"src":"12857:32:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10779,"name":"uint256","nodeType":"ElementaryTypeName","src":"12857:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10780,"nodeType":"ArrayTypeName","src":"12857:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10781,"nodeType":"ArrayTypeName","src":"12857:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"id":10790,"initialValue":{"arguments":[{"expression":{"id":10787,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10770,"src":"12908:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12908:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12892:15:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory[] memory)"},"typeName":{"baseType":{"baseType":{"id":10783,"name":"uint256","nodeType":"ElementaryTypeName","src":"12896:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10784,"nodeType":"ArrayTypeName","src":"12896:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10785,"nodeType":"ArrayTypeName","src":"12896:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}}},"id":10789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12892:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12857:72:84"},{"body":{"id":10812,"nodeType":"Block","src":"12991:83:84","statements":[{"expression":{"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10802,"name":"linearTargets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"13005:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":10804,"indexExpression":{"id":10803,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"13019:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13005:16:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10806,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10770,"src":"13046:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10808,"indexExpression":{"id":10807,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"13060:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13046:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10805,"name":"_getPoolLinearTargets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10973,"src":"13024:21:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256[] memory)"}},"id":10809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13024:39:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13005:58:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10811,"nodeType":"ExpressionStatement","src":"13005:58:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"12960:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10796,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10770,"src":"12964:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12964:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12960:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10813,"initializationExpression":{"assignments":[10792],"declarations":[{"constant":false,"id":10792,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10813,"src":"12945:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10791,"name":"uint256","nodeType":"ElementaryTypeName","src":"12945:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10794,"initialValue":{"hexValue":"30","id":10793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12957:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12945:13:84"},"loopExpression":{"expression":{"id":10800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12986:3:84","subExpression":{"id":10799,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"12986:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10801,"nodeType":"ExpressionStatement","src":"12986:3:84"},"nodeType":"ForStatement","src":"12940:134:84"},{"expression":{"id":10814,"name":"linearTargets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"13091:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"functionReturnParameters":10776,"id":10815,"nodeType":"Return","src":"13084:20:84"}]},"functionSelector":"ecfb5a7c","id":10817,"implemented":true,"kind":"function","modifiers":[],"name":"getLinearTargetsForPools","nodeType":"FunctionDefinition","parameters":{"id":10771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10770,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10817,"src":"12774:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10768,"name":"address","nodeType":"ElementaryTypeName","src":"12774:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10769,"nodeType":"ArrayTypeName","src":"12774:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12773:32:84"},"returnParameters":{"id":10776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10775,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10817,"src":"12827:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":10772,"name":"uint256","nodeType":"ElementaryTypeName","src":"12827:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10773,"nodeType":"ArrayTypeName","src":"12827:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":10774,"nodeType":"ArrayTypeName","src":"12827:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"src":"12826:20:84"},"scope":11568,"src":"12740:371:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10863,"nodeType":"Block","src":"13220:261:84","statements":[{"assignments":[10830],"declarations":[{"constant":false,"id":10830,"mutability":"mutable","name":"inRecoveryModes","nodeType":"VariableDeclaration","scope":10863,"src":"13230:29:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10828,"name":"bool","nodeType":"ElementaryTypeName","src":"13230:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10829,"nodeType":"ArrayTypeName","src":"13230:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":10837,"initialValue":{"arguments":[{"expression":{"id":10834,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"13273:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13273:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13262:10:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":10831,"name":"bool","nodeType":"ElementaryTypeName","src":"13266:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10832,"nodeType":"ArrayTypeName","src":"13266:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":10836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13262:32:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13230:64:84"},{"body":{"id":10859,"nodeType":"Block","src":"13356:86:84","statements":[{"expression":{"id":10857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10849,"name":"inRecoveryModes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10830,"src":"13370:15:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":10851,"indexExpression":{"id":10850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10839,"src":"13386:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13370:18:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10853,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"13414:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10855,"indexExpression":{"id":10854,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10839,"src":"13428:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13414:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10852,"name":"_getPoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11203,"src":"13391:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13391:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13370:61:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10858,"nodeType":"ExpressionStatement","src":"13370:61:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10842,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10839,"src":"13325:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10843,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10820,"src":"13329:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13329:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13325:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10860,"initializationExpression":{"assignments":[10839],"declarations":[{"constant":false,"id":10839,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10860,"src":"13310:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10838,"name":"uint256","nodeType":"ElementaryTypeName","src":"13310:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10841,"initialValue":{"hexValue":"30","id":10840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13322:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13310:13:84"},"loopExpression":{"expression":{"id":10847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13351:3:84","subExpression":{"id":10846,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10839,"src":"13351:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10848,"nodeType":"ExpressionStatement","src":"13351:3:84"},"nodeType":"ForStatement","src":"13305:137:84"},{"expression":{"id":10861,"name":"inRecoveryModes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10830,"src":"13459:15:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":10825,"id":10862,"nodeType":"Return","src":"13452:22:84"}]},"functionSelector":"96ebd934","id":10864,"implemented":true,"kind":"function","modifiers":[],"name":"getInRecoveryModeForPools","nodeType":"FunctionDefinition","parameters":{"id":10821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10820,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10864,"src":"13152:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10818,"name":"address","nodeType":"ElementaryTypeName","src":"13152:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10819,"nodeType":"ArrayTypeName","src":"13152:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13151:32:84"},"returnParameters":{"id":10825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10824,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10864,"src":"13205:13:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10822,"name":"bool","nodeType":"ElementaryTypeName","src":"13205:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10823,"nodeType":"ArrayTypeName","src":"13205:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"13204:15:84"},"scope":11568,"src":"13117:364:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10910,"nodeType":"Block","src":"13584:234:84","statements":[{"assignments":[10877],"declarations":[{"constant":false,"id":10877,"mutability":"mutable","name":"isPaused","nodeType":"VariableDeclaration","scope":10910,"src":"13594:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10875,"name":"bool","nodeType":"ElementaryTypeName","src":"13594:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10876,"nodeType":"ArrayTypeName","src":"13594:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":10884,"initialValue":{"arguments":[{"expression":{"id":10881,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"13630:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13630:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13619:10:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":10878,"name":"bool","nodeType":"ElementaryTypeName","src":"13623:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10879,"nodeType":"ArrayTypeName","src":"13623:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":10883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13619:32:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13594:57:84"},{"body":{"id":10906,"nodeType":"Block","src":"13713:73:84","statements":[{"expression":{"id":10904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10896,"name":"isPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10877,"src":"13727:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":10898,"indexExpression":{"id":10897,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"13736:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13727:11:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":10900,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"13758:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10902,"indexExpression":{"id":10901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"13772:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13758:16:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10899,"name":"_getPoolIsPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"13741:16:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":10903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13741:34:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13727:48:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10905,"nodeType":"ExpressionStatement","src":"13727:48:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"13682:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10890,"name":"poolAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"13686:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13686:20:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13682:24:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10907,"initializationExpression":{"assignments":[10886],"declarations":[{"constant":false,"id":10886,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10907,"src":"13667:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10885,"name":"uint256","nodeType":"ElementaryTypeName","src":"13667:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10888,"initialValue":{"hexValue":"30","id":10887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13679:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13667:13:84"},"loopExpression":{"expression":{"id":10894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13708:3:84","subExpression":{"id":10893,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"13708:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10895,"nodeType":"ExpressionStatement","src":"13708:3:84"},"nodeType":"ForStatement","src":"13662:124:84"},{"expression":{"id":10908,"name":"isPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10877,"src":"13803:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":10872,"id":10909,"nodeType":"Return","src":"13796:15:84"}]},"functionSelector":"fd436378","id":10911,"implemented":true,"kind":"function","modifiers":[],"name":"getIsPausedForPools","nodeType":"FunctionDefinition","parameters":{"id":10868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10867,"mutability":"mutable","name":"poolAddresses","nodeType":"VariableDeclaration","scope":10911,"src":"13516:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10865,"name":"address","nodeType":"ElementaryTypeName","src":"13516:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10866,"nodeType":"ArrayTypeName","src":"13516:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13515:32:84"},"returnParameters":{"id":10872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10871,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10911,"src":"13569:13:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":10869,"name":"bool","nodeType":"ElementaryTypeName","src":"13569:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10870,"nodeType":"ArrayTypeName","src":"13569:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"13568:15:84"},"scope":11568,"src":"13487:331:84","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10936,"nodeType":"Block","src":"14418:166:84","statements":[{"clauses":[{"block":{"id":10929,"nodeType":"Block","src":"14502:36:84","statements":[{"expression":{"id":10927,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10925,"src":"14523:4:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10918,"id":10928,"nodeType":"Return","src":"14516:11:84"}]},"errorName":"","id":10930,"nodeType":"TryCatchClause","parameters":{"id":10926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10925,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":10930,"src":"14488:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10924,"name":"uint256","nodeType":"ElementaryTypeName","src":"14488:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14487:14:84"},"src":"14479:59:84"},{"block":{"id":10933,"nodeType":"Block","src":"14545:33:84","statements":[{"expression":{"hexValue":"30","id":10931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14566:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10918,"id":10932,"nodeType":"Return","src":"14559:8:84"}]},"errorName":"","id":10934,"nodeType":"TryCatchClause","src":"14539:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10920,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10914,"src":"14444:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10919,"name":"ILinearPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9658,"src":"14432:11:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILinearPool_$9658_$","typeString":"type(contract ILinearPool)"}},"id":10921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14432:24:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILinearPool_$9658","typeString":"contract ILinearPool"}},"id":10922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWrappedTokenRate","nodeType":"MemberAccess","referencedDeclaration":9650,"src":"14432:44:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14432:46:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10935,"nodeType":"TryStatement","src":"14428:150:84"}]},"documentation":{"id":10912,"nodeType":"StructuredDocumentation","src":"13824:500:84","text":" @dev Our goal is to prevent queries from reverting even if one or more pools are in an invalid/corrupt state.\n We wrap each query below in a try/catch block, and return a value of 0 in instances where the query reverts.\n We use a 0 value as our sentinel value, but recognize it is possible for pools to return a 0 value in non error\n situations (ie: pool is uninitialized). In such situations, it is still appropriate for us to flag the pool to\n be ignored."},"id":10937,"implemented":true,"kind":"function","modifiers":[],"name":"_getLinearWrappedTokenRate","nodeType":"FunctionDefinition","parameters":{"id":10915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10914,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":10937,"src":"14365:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10913,"name":"address","nodeType":"ElementaryTypeName","src":"14365:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14364:21:84"},"returnParameters":{"id":10918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10917,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10937,"src":"14409:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10916,"name":"uint256","nodeType":"ElementaryTypeName","src":"14409:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14408:9:84"},"scope":11568,"src":"14329:255:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10972,"nodeType":"Block","src":"14683:160:84","statements":[{"assignments":[10949],"declarations":[{"constant":false,"id":10949,"mutability":"mutable","name":"targets","nodeType":"VariableDeclaration","scope":10972,"src":"14693:24:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10947,"name":"uint256","nodeType":"ElementaryTypeName","src":"14693:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10948,"nodeType":"ArrayTypeName","src":"14693:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10955,"initialValue":{"arguments":[{"hexValue":"32","id":10953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14734:1:84","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":10952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14720:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10950,"name":"uint256","nodeType":"ElementaryTypeName","src":"14724:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10951,"nodeType":"ArrayTypeName","src":"14724:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14720:16:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14693:43:84"},{"expression":{"id":10968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":10956,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10949,"src":"14748:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10958,"indexExpression":{"hexValue":"30","id":10957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14756:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14748:10:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":10959,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10949,"src":"14760:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10961,"indexExpression":{"hexValue":"31","id":10960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14768:1:84","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14760:10:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10962,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14747:24:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10964,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10939,"src":"14786:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10963,"name":"ILinearPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9658,"src":"14774:11:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILinearPool_$9658_$","typeString":"type(contract ILinearPool)"}},"id":10965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14774:24:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILinearPool_$9658","typeString":"contract ILinearPool"}},"id":10966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTargets","nodeType":"MemberAccess","referencedDeclaration":9657,"src":"14774:35:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256)"}},"id":10967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14774:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"14747:64:84","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10969,"nodeType":"ExpressionStatement","src":"14747:64:84"},{"expression":{"id":10970,"name":"targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10949,"src":"14829:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":10944,"id":10971,"nodeType":"Return","src":"14822:14:84"}]},"id":10973,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolLinearTargets","nodeType":"FunctionDefinition","parameters":{"id":10940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10939,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":10973,"src":"14621:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10938,"name":"address","nodeType":"ElementaryTypeName","src":"14621:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14620:21:84"},"returnParameters":{"id":10944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10943,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10973,"src":"14665:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10941,"name":"uint256","nodeType":"ElementaryTypeName","src":"14665:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10942,"nodeType":"ArrayTypeName","src":"14665:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14664:18:84"},"scope":11568,"src":"14590:253:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10997,"nodeType":"Block","src":"14933:192:84","statements":[{"clauses":[{"block":{"id":10990,"nodeType":"Block","src":"15034:45:84","statements":[{"expression":{"id":10988,"name":"virtualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10986,"src":"15055:13:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10979,"id":10989,"nodeType":"Return","src":"15048:20:84"}]},"errorName":"","id":10991,"nodeType":"TryCatchClause","parameters":{"id":10987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10986,"mutability":"mutable","name":"virtualSupply","nodeType":"VariableDeclaration","scope":10991,"src":"15011:21:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10985,"name":"uint256","nodeType":"ElementaryTypeName","src":"15011:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15010:23:84"},"src":"15002:77:84"},{"block":{"id":10994,"nodeType":"Block","src":"15086:33:84","statements":[{"expression":{"hexValue":"30","id":10992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10979,"id":10993,"nodeType":"Return","src":"15100:8:84"}]},"errorName":"","id":10995,"nodeType":"TryCatchClause","src":"15080:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10981,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10975,"src":"14970:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10980,"name":"IPoolWithVirtualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"14947:22:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithVirtualSupply_$9684_$","typeString":"type(contract IPoolWithVirtualSupply)"}},"id":10982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14947:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithVirtualSupply_$9684","typeString":"contract IPoolWithVirtualSupply"}},"id":10983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getVirtualSupply","nodeType":"MemberAccess","referencedDeclaration":9683,"src":"14947:52:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":10984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14947:54:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10996,"nodeType":"TryStatement","src":"14943:176:84"}]},"id":10998,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolVirtualSupply","nodeType":"FunctionDefinition","parameters":{"id":10976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10975,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":10998,"src":"14880:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10974,"name":"address","nodeType":"ElementaryTypeName","src":"14880:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14879:21:84"},"returnParameters":{"id":10979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10998,"src":"14924:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10977,"name":"uint256","nodeType":"ElementaryTypeName","src":"14924:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14923:9:84"},"scope":11568,"src":"14849:276:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11022,"nodeType":"Block","src":"15214:188:84","statements":[{"clauses":[{"block":{"id":11015,"nodeType":"Block","src":"15312:44:84","statements":[{"expression":{"id":11013,"name":"actualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11011,"src":"15333:12:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11004,"id":11014,"nodeType":"Return","src":"15326:19:84"}]},"errorName":"","id":11016,"nodeType":"TryCatchClause","parameters":{"id":11012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11011,"mutability":"mutable","name":"actualSupply","nodeType":"VariableDeclaration","scope":11016,"src":"15290:20:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11010,"name":"uint256","nodeType":"ElementaryTypeName","src":"15290:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15289:22:84"},"src":"15281:75:84"},{"block":{"id":11019,"nodeType":"Block","src":"15363:33:84","statements":[{"expression":{"hexValue":"30","id":11017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15384:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11004,"id":11018,"nodeType":"Return","src":"15377:8:84"}]},"errorName":"","id":11020,"nodeType":"TryCatchClause","src":"15357:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11006,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11000,"src":"15250:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11005,"name":"IPoolWithActualSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9678,"src":"15228:21:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithActualSupply_$9678_$","typeString":"type(contract IPoolWithActualSupply)"}},"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15228:34:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithActualSupply_$9678","typeString":"contract IPoolWithActualSupply"}},"id":11008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getActualSupply","nodeType":"MemberAccess","referencedDeclaration":9677,"src":"15228:50:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15228:52:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11021,"nodeType":"TryStatement","src":"15224:172:84"}]},"id":11023,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolActualSupply","nodeType":"FunctionDefinition","parameters":{"id":11001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11000,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11023,"src":"15161:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10999,"name":"address","nodeType":"ElementaryTypeName","src":"15161:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15160:21:84"},"returnParameters":{"id":11004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11003,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11023,"src":"15205:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11002,"name":"uint256","nodeType":"ElementaryTypeName","src":"15205:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15204:9:84"},"scope":11568,"src":"15131:271:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11047,"nodeType":"Block","src":"15490:167:84","statements":[{"clauses":[{"block":{"id":11040,"nodeType":"Block","src":"15568:43:84","statements":[{"expression":{"id":11038,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11036,"src":"15589:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11029,"id":11039,"nodeType":"Return","src":"15582:18:84"}]},"errorName":"","id":11041,"nodeType":"TryCatchClause","parameters":{"id":11037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11036,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":11041,"src":"15547:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11035,"name":"uint256","nodeType":"ElementaryTypeName","src":"15547:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15546:21:84"},"src":"15538:73:84"},{"block":{"id":11044,"nodeType":"Block","src":"15618:33:84","statements":[{"expression":{"hexValue":"30","id":11042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15639:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11029,"id":11043,"nodeType":"Return","src":"15632:8:84"}]},"errorName":"","id":11045,"nodeType":"TryCatchClause","src":"15612:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11031,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11025,"src":"15511:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11030,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"15504:6:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":11032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15504:19:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":11033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"15504:31:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15504:33:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11046,"nodeType":"TryStatement","src":"15500:151:84"}]},"id":11048,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":11026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11025,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11048,"src":"15437:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11024,"name":"address","nodeType":"ElementaryTypeName","src":"15437:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15436:21:84"},"returnParameters":{"id":11029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11028,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11048,"src":"15481:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11027,"name":"uint256","nodeType":"ElementaryTypeName","src":"15481:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15480:9:84"},"scope":11568,"src":"15408:249:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11072,"nodeType":"Block","src":"15738:156:84","statements":[{"clauses":[{"block":{"id":11065,"nodeType":"Block","src":"15812:36:84","statements":[{"expression":{"id":11063,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11061,"src":"15833:4:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11054,"id":11064,"nodeType":"Return","src":"15826:11:84"}]},"errorName":"","id":11066,"nodeType":"TryCatchClause","parameters":{"id":11062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11061,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":11066,"src":"15798:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11060,"name":"uint256","nodeType":"ElementaryTypeName","src":"15798:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15797:14:84"},"src":"15789:59:84"},{"block":{"id":11069,"nodeType":"Block","src":"15855:33:84","statements":[{"expression":{"hexValue":"30","id":11067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15876:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11054,"id":11068,"nodeType":"Return","src":"15869:8:84"}]},"errorName":"","id":11070,"nodeType":"TryCatchClause","src":"15849:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11056,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11050,"src":"15766:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11055,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"15752:13:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$673_$","typeString":"type(contract IRateProvider)"}},"id":11057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15752:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":672,"src":"15752:34:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15752:36:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11071,"nodeType":"TryStatement","src":"15748:140:84"}]},"id":11073,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolRate","nodeType":"FunctionDefinition","parameters":{"id":11051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11050,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11073,"src":"15685:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11049,"name":"address","nodeType":"ElementaryTypeName","src":"15685:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15684:21:84"},"returnParameters":{"id":11054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11073,"src":"15729:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11052,"name":"uint256","nodeType":"ElementaryTypeName","src":"15729:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15728:9:84"},"scope":11568,"src":"15663:231:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11110,"nodeType":"Block","src":"15994:265:84","statements":[{"clauses":[{"block":{"id":11092,"nodeType":"Block","src":"16107:46:84","statements":[{"expression":{"id":11090,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11088,"src":"16128:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":11080,"id":11091,"nodeType":"Return","src":"16121:21:84"}]},"errorName":"","id":11093,"nodeType":"TryCatchClause","parameters":{"id":11089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11088,"mutability":"mutable","name":"scalingFactors","nodeType":"VariableDeclaration","scope":11093,"src":"16074:31:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11086,"name":"uint256","nodeType":"ElementaryTypeName","src":"16074:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11087,"nodeType":"ArrayTypeName","src":"16074:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16073:33:84"},"src":"16065:88:84"},{"block":{"id":11107,"nodeType":"Block","src":"16160:93:84","statements":[{"assignments":[11098],"declarations":[{"constant":false,"id":11098,"mutability":"mutable","name":"empty","nodeType":"VariableDeclaration","scope":11107,"src":"16174:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11096,"name":"uint256","nodeType":"ElementaryTypeName","src":"16174:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11097,"nodeType":"ArrayTypeName","src":"16174:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11104,"initialValue":{"arguments":[{"hexValue":"30","id":11102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16213:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16199:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11099,"name":"uint256","nodeType":"ElementaryTypeName","src":"16203:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11100,"nodeType":"ArrayTypeName","src":"16203:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16199:16:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16174:41:84"},{"expression":{"id":11105,"name":"empty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11098,"src":"16237:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":11080,"id":11106,"nodeType":"Return","src":"16230:12:84"}]},"errorName":"","id":11108,"nodeType":"TryCatchClause","src":"16154:99:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11082,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11075,"src":"16032:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11081,"name":"IPoolWithScalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9672,"src":"16008:23:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithScalingFactors_$9672_$","typeString":"type(contract IPoolWithScalingFactors)"}},"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16008:36:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithScalingFactors_$9672","typeString":"contract IPoolWithScalingFactors"}},"id":11084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getScalingFactors","nodeType":"MemberAccess","referencedDeclaration":9671,"src":"16008:54:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view external returns (uint256[] memory)"}},"id":11085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16008:56:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11109,"nodeType":"TryStatement","src":"16004:249:84"}]},"id":11111,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolScalingFactors","nodeType":"FunctionDefinition","parameters":{"id":11076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11075,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11111,"src":"15932:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11074,"name":"address","nodeType":"ElementaryTypeName","src":"15932:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15931:21:84"},"returnParameters":{"id":11080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11079,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11111,"src":"15976:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11077,"name":"uint256","nodeType":"ElementaryTypeName","src":"15976:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11078,"nodeType":"ArrayTypeName","src":"15976:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15975:18:84"},"scope":11568,"src":"15900:359:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11148,"nodeType":"Block","src":"16362:264:84","statements":[{"clauses":[{"block":{"id":11130,"nodeType":"Block","src":"16471:49:84","statements":[{"expression":{"id":11128,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11126,"src":"16492:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":11118,"id":11129,"nodeType":"Return","src":"16485:24:84"}]},"errorName":"","id":11131,"nodeType":"TryCatchClause","parameters":{"id":11127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11126,"mutability":"mutable","name":"normalizedWeights","nodeType":"VariableDeclaration","scope":11131,"src":"16435:34:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11124,"name":"uint256","nodeType":"ElementaryTypeName","src":"16435:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11125,"nodeType":"ArrayTypeName","src":"16435:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16434:36:84"},"src":"16426:94:84"},{"block":{"id":11145,"nodeType":"Block","src":"16527:93:84","statements":[{"assignments":[11136],"declarations":[{"constant":false,"id":11136,"mutability":"mutable","name":"empty","nodeType":"VariableDeclaration","scope":11145,"src":"16541:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11134,"name":"uint256","nodeType":"ElementaryTypeName","src":"16541:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11135,"nodeType":"ArrayTypeName","src":"16541:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11142,"initialValue":{"arguments":[{"hexValue":"30","id":11140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16580:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16566:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11137,"name":"uint256","nodeType":"ElementaryTypeName","src":"16570:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11138,"nodeType":"ArrayTypeName","src":"16570:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16566:16:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16541:41:84"},{"expression":{"id":11143,"name":"empty","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11136,"src":"16604:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":11118,"id":11144,"nodeType":"Return","src":"16597:12:84"}]},"errorName":"","id":11146,"nodeType":"TryCatchClause","src":"16521:99:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11120,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"16390:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11119,"name":"IWeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9665,"src":"16376:13:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWeightedPool_$9665_$","typeString":"type(contract IWeightedPool)"}},"id":11121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16376:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWeightedPool_$9665","typeString":"contract IWeightedPool"}},"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getNormalizedWeights","nodeType":"MemberAccess","referencedDeclaration":9664,"src":"16376:47:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view external returns (uint256[] memory)"}},"id":11123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16376:49:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11147,"nodeType":"TryStatement","src":"16372:248:84"}]},"id":11149,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolNormalizedWeights","nodeType":"FunctionDefinition","parameters":{"id":11114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11113,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11149,"src":"16300:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11112,"name":"address","nodeType":"ElementaryTypeName","src":"16300:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16299:21:84"},"returnParameters":{"id":11118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11117,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11149,"src":"16344:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11115,"name":"uint256","nodeType":"ElementaryTypeName","src":"16344:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11116,"nodeType":"ArrayTypeName","src":"16344:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16343:18:84"},"scope":11568,"src":"16265:361:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11177,"nodeType":"Block","src":"16706:190:84","statements":[{"clauses":[{"block":{"id":11170,"nodeType":"Block","src":"16813:37:84","statements":[{"expression":{"id":11168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"16834:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11155,"id":11169,"nodeType":"Return","src":"16827:12:84"}]},"errorName":"","id":11171,"nodeType":"TryCatchClause","parameters":{"id":11167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11162,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11171,"src":"16783:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11161,"name":"uint256","nodeType":"ElementaryTypeName","src":"16783:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11164,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11171,"src":"16798:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11163,"name":"bool","nodeType":"ElementaryTypeName","src":"16798:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11171,"src":"16804:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11165,"name":"uint256","nodeType":"ElementaryTypeName","src":"16804:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16782:30:84"},"src":"16774:76:84"},{"block":{"id":11174,"nodeType":"Block","src":"16857:33:84","statements":[{"expression":{"hexValue":"30","id":11172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16878:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11155,"id":11173,"nodeType":"Return","src":"16871:8:84"}]},"errorName":"","id":11175,"nodeType":"TryCatchClause","src":"16851:39:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11157,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"16733:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11156,"name":"IPoolWithAmp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9706,"src":"16720:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolWithAmp_$9706_$","typeString":"type(contract IPoolWithAmp)"}},"id":11158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16720:25:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolWithAmp_$9706","typeString":"contract IPoolWithAmp"}},"id":11159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmplificationParameter","nodeType":"MemberAccess","referencedDeclaration":9705,"src":"16720:51:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_bool_$_t_uint256_$","typeString":"function () view external returns (uint256,bool,uint256)"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16720:53:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bool_$_t_uint256_$","typeString":"tuple(uint256,bool,uint256)"}},"id":11176,"nodeType":"TryStatement","src":"16716:174:84"}]},"id":11178,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolAmp","nodeType":"FunctionDefinition","parameters":{"id":11152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11151,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11178,"src":"16653:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11150,"name":"address","nodeType":"ElementaryTypeName","src":"16653:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16652:21:84"},"returnParameters":{"id":11155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11154,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11178,"src":"16697:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11153,"name":"uint256","nodeType":"ElementaryTypeName","src":"16697:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16696:9:84"},"scope":11568,"src":"16632:264:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11202,"nodeType":"Block","src":"16984:184:84","statements":[{"clauses":[{"block":{"id":11195,"nodeType":"Block","src":"17072:46:84","statements":[{"expression":{"id":11193,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"17093:14:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11184,"id":11194,"nodeType":"Return","src":"17086:21:84"}]},"errorName":"","id":11196,"nodeType":"TryCatchClause","parameters":{"id":11192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11191,"mutability":"mutable","name":"inRecoveryMode","nodeType":"VariableDeclaration","scope":11196,"src":"17051:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11190,"name":"bool","nodeType":"ElementaryTypeName","src":"17051:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17050:21:84"},"src":"17042:76:84"},{"block":{"id":11199,"nodeType":"Block","src":"17125:37:84","statements":[{"expression":{"hexValue":"66616c7365","id":11197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17146:5:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":11184,"id":11198,"nodeType":"Return","src":"17139:12:84"}]},"errorName":"","id":11200,"nodeType":"TryCatchClause","src":"17119:43:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11186,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11180,"src":"17012:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11185,"name":"IRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"16998:13:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRecoveryMode_$708_$","typeString":"type(contract IRecoveryMode)"}},"id":11187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16998:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRecoveryMode_$708","typeString":"contract IRecoveryMode"}},"id":11188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"inRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":707,"src":"16998:41:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":11189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16998:43:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11201,"nodeType":"TryStatement","src":"16994:168:84"}]},"id":11203,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolInRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":11181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11180,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11203,"src":"16934:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11179,"name":"address","nodeType":"ElementaryTypeName","src":"16934:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16933:21:84"},"returnParameters":{"id":11184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11203,"src":"16978:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11182,"name":"bool","nodeType":"ElementaryTypeName","src":"16978:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16977:6:84"},"scope":11568,"src":"16902:266:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11231,"nodeType":"Block","src":"17250:193:84","statements":[{"clauses":[{"block":{"id":11224,"nodeType":"Block","src":"17355:38:84","statements":[{"expression":{"id":11222,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"17376:6:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11209,"id":11223,"nodeType":"Return","src":"17369:13:84"}]},"errorName":"","id":11225,"nodeType":"TryCatchClause","parameters":{"id":11221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11216,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":11225,"src":"17324:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11215,"name":"bool","nodeType":"ElementaryTypeName","src":"17324:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11218,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11225,"src":"17337:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11217,"name":"uint256","nodeType":"ElementaryTypeName","src":"17337:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11220,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11225,"src":"17346:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11219,"name":"uint256","nodeType":"ElementaryTypeName","src":"17346:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17323:31:84"},"src":"17315:78:84"},{"block":{"id":11228,"nodeType":"Block","src":"17400:37:84","statements":[{"expression":{"hexValue":"66616c7365","id":11226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17421:5:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":11209,"id":11227,"nodeType":"Return","src":"17414:12:84"}]},"errorName":"","id":11229,"nodeType":"TryCatchClause","src":"17394:43:84"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11211,"name":"poolAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11205,"src":"17285:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11210,"name":"ITemporarilyPausable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"17264:20:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITemporarilyPausable_$1539_$","typeString":"type(contract ITemporarilyPausable)"}},"id":11212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17264:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$1539","typeString":"contract ITemporarilyPausable"}},"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPausedState","nodeType":"MemberAccess","referencedDeclaration":1538,"src":"17264:48:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (bool,uint256,uint256)"}},"id":11214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17264:50:84","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_uint256_$","typeString":"tuple(bool,uint256,uint256)"}},"id":11230,"nodeType":"TryStatement","src":"17260:177:84"}]},"id":11232,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolIsPaused","nodeType":"FunctionDefinition","parameters":{"id":11206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11205,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":11232,"src":"17200:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11204,"name":"address","nodeType":"ElementaryTypeName","src":"17200:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17199:21:84"},"returnParameters":{"id":11209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11208,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11232,"src":"17244:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11207,"name":"bool","nodeType":"ElementaryTypeName","src":"17244:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17243:6:84"},"scope":11568,"src":"17174:269:84","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11566,"nodeType":"Block","src":"17874:2197:84","statements":[{"assignments":[11270],"declarations":[{"constant":false,"id":11270,"mutability":"mutable","name":"errors","nodeType":"VariableDeclaration","scope":11566,"src":"17884:20:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":11268,"name":"bool","nodeType":"ElementaryTypeName","src":"17884:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11269,"nodeType":"ArrayTypeName","src":"17884:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":11277,"initialValue":{"arguments":[{"expression":{"id":11274,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11235,"src":"17918:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":11275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"17918:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17907:10:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":11271,"name":"bool","nodeType":"ElementaryTypeName","src":"17911:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11272,"nodeType":"ArrayTypeName","src":"17911:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":11276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17907:26:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17884:49:84"},{"assignments":[11279],"declarations":[{"constant":false,"id":11279,"mutability":"mutable","name":"numErrors","nodeType":"VariableDeclaration","scope":11566,"src":"17943:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11278,"name":"uint256","nodeType":"ElementaryTypeName","src":"17943:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11281,"initialValue":{"hexValue":"30","id":11280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17963:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17943:21:84"},{"assignments":[11283],"declarations":[{"constant":false,"id":11283,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11566,"src":"17974:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11282,"name":"uint256","nodeType":"ElementaryTypeName","src":"17974:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11284,"nodeType":"VariableDeclarationStatement","src":"17974:9:84"},{"body":{"id":11323,"nodeType":"Block","src":"18031:173:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11296,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18050:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadTotalSupply","nodeType":"MemberAccess","referencedDeclaration":9710,"src":"18050:22:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11298,"name":"totalSupplies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11240,"src":"18076:13:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11300,"indexExpression":{"id":11299,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18090:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18076:16:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18096:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18076:21:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18050:47:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":11304,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18049:49:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11305,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18103:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadSwapFees","nodeType":"MemberAccess","referencedDeclaration":9712,"src":"18103:19:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11307,"name":"swapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11243,"src":"18126:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11309,"indexExpression":{"id":11308,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18135:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18126:11:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18141:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18126:16:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18103:39:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":11313,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18102:41:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18049:94:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11322,"nodeType":"IfStatement","src":"18045:149:84","trueBody":{"id":11321,"nodeType":"Block","src":"18145:49:84","statements":[{"expression":{"id":11319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11315,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"18163:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11317,"indexExpression":{"id":11316,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18170:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18163:9:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18175:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18163:16:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11320,"nodeType":"ExpressionStatement","src":"18163:16:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18006:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11290,"name":"poolIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11235,"src":"18010:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":11291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"18010:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18006:18:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11324,"initializationExpression":{"expression":{"id":11287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"17999:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18003:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17999:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11288,"nodeType":"ExpressionStatement","src":"17999:5:84"},"loopExpression":{"expression":{"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18026:3:84","subExpression":{"id":11293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18026:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11295,"nodeType":"ExpressionStatement","src":"18026:3:84"},"nodeType":"ForStatement","src":"17994:210:84"},{"condition":{"expression":{"id":11325,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18218:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadLinearWrappedTokenRates","nodeType":"MemberAccess","referencedDeclaration":9714,"src":"18218:34:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11358,"nodeType":"IfStatement","src":"18214:264:84","trueBody":{"id":11357,"nodeType":"Block","src":"18254:224:84","statements":[{"body":{"id":11355,"nodeType":"Block","src":"18319:149:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11339,"name":"linearWrappedTokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11246,"src":"18341:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11341,"indexExpression":{"id":11340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18365:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18341:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18371:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18341:31:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11354,"nodeType":"IfStatement","src":"18337:117:84","trueBody":{"id":11353,"nodeType":"Block","src":"18374:80:84","statements":[{"expression":{"id":11351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11344,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"18396:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11349,"indexExpression":{"baseExpression":{"expression":{"id":11345,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18403:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"18403:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11348,"indexExpression":{"id":11347,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18425:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18403:24:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18396:32:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18431:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18396:39:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11352,"nodeType":"ExpressionStatement","src":"18396:39:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11331,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18280:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":11332,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18284:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"linearPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9735,"src":"18284:21:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"18284:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18280:32:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11356,"initializationExpression":{"expression":{"id":11329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11327,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18273:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18277:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18273:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11330,"nodeType":"ExpressionStatement","src":"18273:5:84"},"loopExpression":{"expression":{"id":11337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18314:3:84","subExpression":{"id":11336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18314:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11338,"nodeType":"ExpressionStatement","src":"18314:3:84"},"nodeType":"ForStatement","src":"18268:200:84"}]}},{"condition":{"expression":{"id":11359,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18492:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadAmps","nodeType":"MemberAccess","referencedDeclaration":9722,"src":"18492:15:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11392,"nodeType":"IfStatement","src":"18488:220:84","trueBody":{"id":11391,"nodeType":"Block","src":"18509:199:84","statements":[{"body":{"id":11389,"nodeType":"Block","src":"18571:127:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11373,"name":"amps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11249,"src":"18593:4:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11375,"indexExpression":{"id":11374,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18598:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18593:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18604:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18593:12:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11388,"nodeType":"IfStatement","src":"18589:95:84","trueBody":{"id":11387,"nodeType":"Block","src":"18607:77:84","statements":[{"expression":{"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11378,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"18629:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11383,"indexExpression":{"baseExpression":{"expression":{"id":11379,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18636:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ampPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"18636:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11382,"indexExpression":{"id":11381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18655:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18636:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18629:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18661:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18629:36:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11386,"nodeType":"ExpressionStatement","src":"18629:36:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11365,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18535:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":11366,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18539:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ampPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9744,"src":"18539:18:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"18539:25:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18535:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11390,"initializationExpression":{"expression":{"id":11363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18528:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18532:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18528:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11364,"nodeType":"ExpressionStatement","src":"18528:5:84"},"loopExpression":{"expression":{"id":11371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18566:3:84","subExpression":{"id":11370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18566:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11372,"nodeType":"ExpressionStatement","src":"18566:3:84"},"nodeType":"ForStatement","src":"18523:175:84"}]}},{"condition":{"expression":{"id":11393,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18722:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadRates","nodeType":"MemberAccess","referencedDeclaration":9724,"src":"18722:16:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11426,"nodeType":"IfStatement","src":"18718:224:84","trueBody":{"id":11425,"nodeType":"Block","src":"18740:202:84","statements":[{"body":{"id":11423,"nodeType":"Block","src":"18803:129:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11407,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11252,"src":"18825:5:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11409,"indexExpression":{"id":11408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18831:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18825:8:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18837:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18825:13:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11422,"nodeType":"IfStatement","src":"18821:97:84","trueBody":{"id":11421,"nodeType":"Block","src":"18840:78:84","statements":[{"expression":{"id":11419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11412,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"18862:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11417,"indexExpression":{"baseExpression":{"expression":{"id":11413,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18869:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ratePoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"18869:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11416,"indexExpression":{"id":11415,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18889:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18869:22:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18862:30:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18895:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18862:37:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11420,"nodeType":"ExpressionStatement","src":"18862:37:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11399,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18766:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":11400,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18770:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"ratePoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"18770:19:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"18770:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18766:30:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11424,"initializationExpression":{"expression":{"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11395,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18759:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18763:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18759:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11398,"nodeType":"ExpressionStatement","src":"18759:5:84"},"loopExpression":{"expression":{"id":11405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18798:3:84","subExpression":{"id":11404,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"18798:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11406,"nodeType":"ExpressionStatement","src":"18798:3:84"},"nodeType":"ForStatement","src":"18754:178:84"}]}},{"condition":{"expression":{"id":11427,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"18956:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadScalingFactors","nodeType":"MemberAccess","referencedDeclaration":9720,"src":"18956:25:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11461,"nodeType":"IfStatement","src":"18952:347:84","trueBody":{"id":11460,"nodeType":"Block","src":"18983:316:84","statements":[{"body":{"id":11458,"nodeType":"Block","src":"19055:234:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":11441,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11256,"src":"19157:14:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":11443,"indexExpression":{"id":11442,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19172:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19157:17:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19157:24:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19185:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19157:29:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11457,"nodeType":"IfStatement","src":"19153:122:84","trueBody":{"id":11456,"nodeType":"Block","src":"19188:87:84","statements":[{"expression":{"id":11454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11447,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19210:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11452,"indexExpression":{"baseExpression":{"expression":{"id":11448,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"19217:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"scalingFactorPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9741,"src":"19217:28:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11451,"indexExpression":{"id":11450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19246:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19217:31:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19210:39:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19252:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19210:46:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11455,"nodeType":"ExpressionStatement","src":"19210:46:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19009:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":11434,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"19013:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"scalingFactorPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9741,"src":"19013:28:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19013:35:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19009:39:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11459,"initializationExpression":{"expression":{"id":11431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11429,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19002:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19006:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19002:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11432,"nodeType":"ExpressionStatement","src":"19002:5:84"},"loopExpression":{"expression":{"id":11439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19050:3:84","subExpression":{"id":11438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19050:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11440,"nodeType":"ExpressionStatement","src":"19050:3:84"},"nodeType":"ForStatement","src":"18997:292:84"}]}},{"condition":{"expression":{"id":11462,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"19313:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"loadNormalizedWeights","nodeType":"MemberAccess","referencedDeclaration":9718,"src":"19313:28:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11496,"nodeType":"IfStatement","src":"19309:336:84","trueBody":{"id":11495,"nodeType":"Block","src":"19343:302:84","statements":[{"body":{"id":11493,"nodeType":"Block","src":"19410:225:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":11476,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11260,"src":"19515:7:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[] memory[] memory"}},"id":11478,"indexExpression":{"id":11477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19523:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19515:10:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19515:17:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19536:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19515:22:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11492,"nodeType":"IfStatement","src":"19511:110:84","trueBody":{"id":11491,"nodeType":"Block","src":"19539:82:84","statements":[{"expression":{"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11482,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19561:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11487,"indexExpression":{"baseExpression":{"expression":{"id":11483,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"19568:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weightedPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9738,"src":"19568:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11486,"indexExpression":{"id":11485,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19592:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19568:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19561:34:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19598:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19561:41:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11490,"nodeType":"ExpressionStatement","src":"19561:41:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11468,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19369:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":11469,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11237,"src":"19373:6:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig memory"}},"id":11470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"weightedPoolIdxs","nodeType":"MemberAccess","referencedDeclaration":9738,"src":"19373:23:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19373:30:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19369:34:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11494,"initializationExpression":{"expression":{"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11464,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19362:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19366:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19362:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11467,"nodeType":"ExpressionStatement","src":"19362:5:84"},"loopExpression":{"expression":{"id":11474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19405:3:84","subExpression":{"id":11473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19405:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11475,"nodeType":"ExpressionStatement","src":"19405:3:84"},"nodeType":"ForStatement","src":"19357:278:84"}]}},{"body":{"id":11518,"nodeType":"Block","src":"19691:91:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11508,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19709:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11510,"indexExpression":{"id":11509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19716:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19709:9:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":11511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19722:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19709:17:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11517,"nodeType":"IfStatement","src":"19705:67:84","trueBody":{"id":11516,"nodeType":"Block","src":"19728:44:84","statements":[{"expression":{"id":11514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19746:11:84","subExpression":{"id":11513,"name":"numErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11279,"src":"19746:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11515,"nodeType":"ExpressionStatement","src":"19746:11:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19667:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11502,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19671:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19671:13:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19667:17:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11519,"initializationExpression":{"expression":{"id":11499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19660:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19664:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19660:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11500,"nodeType":"ExpressionStatement","src":"19660:5:84"},"loopExpression":{"expression":{"id":11506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19686:3:84","subExpression":{"id":11505,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19686:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11507,"nodeType":"ExpressionStatement","src":"19686:3:84"},"nodeType":"ForStatement","src":"19655:127:84"},{"assignments":[11524],"declarations":[{"constant":false,"id":11524,"mutability":"mutable","name":"errorIdxs","nodeType":"VariableDeclaration","scope":11566,"src":"19792:26:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11522,"name":"uint256","nodeType":"ElementaryTypeName","src":"19792:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11523,"nodeType":"ArrayTypeName","src":"19792:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11530,"initialValue":{"arguments":[{"id":11528,"name":"numErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11279,"src":"19835:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19821:13:84","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11525,"name":"uint256","nodeType":"ElementaryTypeName","src":"19825:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11526,"nodeType":"ArrayTypeName","src":"19825:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19821:24:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"19792:53:84"},{"assignments":[11532],"declarations":[{"constant":false,"id":11532,"mutability":"mutable","name":"idx","nodeType":"VariableDeclaration","scope":11566,"src":"19855:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11531,"name":"uint256","nodeType":"ElementaryTypeName","src":"19855:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11534,"initialValue":{"hexValue":"30","id":11533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19869:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19855:15:84"},{"body":{"id":11562,"nodeType":"Block","src":"19917:121:84","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11546,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19935:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11548,"indexExpression":{"id":11547,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19942:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19935:9:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"74727565","id":11549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19948:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19935:17:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11561,"nodeType":"IfStatement","src":"19931:97:84","trueBody":{"id":11560,"nodeType":"Block","src":"19954:74:84","statements":[{"expression":{"id":11555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11551,"name":"errorIdxs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11524,"src":"19972:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11553,"indexExpression":{"id":11552,"name":"idx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11532,"src":"19982:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19972:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11554,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19989:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19972:18:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11556,"nodeType":"ExpressionStatement","src":"19972:18:84"},{"expression":{"id":11558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20008:5:84","subExpression":{"id":11557,"name":"idx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11532,"src":"20008:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11559,"nodeType":"ExpressionStatement","src":"20008:5:84"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19893:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11540,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11270,"src":"19897:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":11541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"19897:13:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19893:17:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11563,"initializationExpression":{"expression":{"id":11537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11535,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19886:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19890:1:84","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19886:5:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11538,"nodeType":"ExpressionStatement","src":"19886:5:84"},"loopExpression":{"expression":{"id":11544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19912:3:84","subExpression":{"id":11543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"19912:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11545,"nodeType":"ExpressionStatement","src":"19912:3:84"},"nodeType":"ForStatement","src":"19881:157:84"},{"expression":{"id":11564,"name":"errorIdxs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11524,"src":"20055:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":11265,"id":11565,"nodeType":"Return","src":"20048:16:84"}]},"id":11567,"implemented":true,"kind":"function","modifiers":[],"name":"_getErrorIdxsFromResults","nodeType":"FunctionDefinition","parameters":{"id":11261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11235,"mutability":"mutable","name":"poolIds","nodeType":"VariableDeclaration","scope":11567,"src":"17492:24:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":11233,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17492:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":11234,"nodeType":"ArrayTypeName","src":"17492:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":11237,"mutability":"mutable","name":"config","nodeType":"VariableDeclaration","scope":11567,"src":"17526:33:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_memory_ptr","typeString":"struct PoolDataQueryConfig"},"typeName":{"id":11236,"name":"PoolDataQueryConfig","nodeType":"UserDefinedTypeName","referencedDeclaration":9748,"src":"17526:19:84","typeDescriptions":{"typeIdentifier":"t_struct$_PoolDataQueryConfig_$9748_storage_ptr","typeString":"struct PoolDataQueryConfig"}},"visibility":"internal"},{"constant":false,"id":11240,"mutability":"mutable","name":"totalSupplies","nodeType":"VariableDeclaration","scope":11567,"src":"17569:30:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11238,"name":"uint256","nodeType":"ElementaryTypeName","src":"17569:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11239,"nodeType":"ArrayTypeName","src":"17569:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11243,"mutability":"mutable","name":"swapFees","nodeType":"VariableDeclaration","scope":11567,"src":"17609:25:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11241,"name":"uint256","nodeType":"ElementaryTypeName","src":"17609:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11242,"nodeType":"ArrayTypeName","src":"17609:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11246,"mutability":"mutable","name":"linearWrappedTokenRates","nodeType":"VariableDeclaration","scope":11567,"src":"17644:40:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11244,"name":"uint256","nodeType":"ElementaryTypeName","src":"17644:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11245,"nodeType":"ArrayTypeName","src":"17644:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11249,"mutability":"mutable","name":"amps","nodeType":"VariableDeclaration","scope":11567,"src":"17694:21:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11247,"name":"uint256","nodeType":"ElementaryTypeName","src":"17694:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11248,"nodeType":"ArrayTypeName","src":"17694:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11252,"mutability":"mutable","name":"rates","nodeType":"VariableDeclaration","scope":11567,"src":"17725:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11250,"name":"uint256","nodeType":"ElementaryTypeName","src":"17725:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11251,"nodeType":"ArrayTypeName","src":"17725:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11256,"mutability":"mutable","name":"scalingFactors","nodeType":"VariableDeclaration","scope":11567,"src":"17757:33:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":11253,"name":"uint256","nodeType":"ElementaryTypeName","src":"17757:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11254,"nodeType":"ArrayTypeName","src":"17757:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":11255,"nodeType":"ArrayTypeName","src":"17757:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"},{"constant":false,"id":11260,"mutability":"mutable","name":"weights","nodeType":"VariableDeclaration","scope":11567,"src":"17800:26:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr","typeString":"uint256[][]"},"typeName":{"baseType":{"baseType":{"id":11257,"name":"uint256","nodeType":"ElementaryTypeName","src":"17800:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11258,"nodeType":"ArrayTypeName","src":"17800:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"id":11259,"nodeType":"ArrayTypeName","src":"17800:11:84","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$dyn_storage_$dyn_storage_ptr","typeString":"uint256[][]"}},"visibility":"internal"}],"src":"17482:350:84"},"returnParameters":{"id":11265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11264,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11567,"src":"17856:16:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11262,"name":"uint256","nodeType":"ElementaryTypeName","src":"17856:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11263,"nodeType":"ArrayTypeName","src":"17856:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17855:18:84"},"scope":11568,"src":"17449:2622:84","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11569,"src":"3408:16665:84"}],"src":"688:19386:84"},"id":84},"contracts/BalancerQueries.sol":{"ast":{"absolutePath":"contracts/BalancerQueries.sol","exportedSymbols":{"BalancerQueries":[11940]},"id":11941,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11570,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:85"},{"id":11571,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:85"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":11572,"nodeType":"ImportDirective","scope":11941,"sourceUnit":1492,"src":"747:90:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":11573,"nodeType":"ImportDirective","scope":11941,"sourceUnit":1645,"src":"838:78:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11574,"nodeType":"ImportDirective","scope":11941,"sourceUnit":3865,"src":"917:65:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","id":11575,"nodeType":"ImportDirective","scope":11941,"sourceUnit":3291,"src":"983:68:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","id":11576,"nodeType":"ImportDirective","scope":11941,"sourceUnit":1912,"src":"1053:86:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":11577,"nodeType":"ImportDirective","scope":11941,"sourceUnit":9419,"src":"1141:60:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":11578,"nodeType":"ImportDirective","scope":11941,"sourceUnit":5173,"src":"1203:77:85","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11580,"name":"IBalancerQueries","nodeType":"UserDefinedTypeName","referencedDeclaration":1911,"src":"1628:16:85","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerQueries_$1911","typeString":"contract IBalancerQueries"}},"id":11581,"nodeType":"InheritanceSpecifier","src":"1628:16:85"},{"baseName":{"id":11582,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":9418,"src":"1646:12:85","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$9418","typeString":"contract AssetHelpers"}},"id":11583,"nodeType":"InheritanceSpecifier","src":"1646:12:85"}],"contractDependencies":[1911,9418],"contractKind":"contract","documentation":{"id":11579,"nodeType":"StructuredDocumentation","src":"1282:317:85","text":" @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n It connects different functionalities of the protocol components to allow accessing information that would\n have required a more cumbersome setup if we wanted to provide these already built-in."},"fullyImplemented":true,"id":11940,"linearizedBaseContracts":[11940,9418,1911],"name":"BalancerQueries","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"fbfa77cf","id":11585,"mutability":"immutable","name":"vault","nodeType":"VariableDeclaration","scope":11940,"src":"1665:29:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":11584,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1665:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"public"},{"body":{"id":11599,"nodeType":"Block","src":"1756:31:85","statements":[{"expression":{"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11595,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"1766:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11596,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11587,"src":"1774:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"1766:14:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11598,"nodeType":"ExpressionStatement","src":"1766:14:85"}]},"id":11600,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11590,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11587,"src":"1741:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3863,"src":"1741:11:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$1644_$","typeString":"function () view external returns (contract IWETH)"}},"id":11592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:13:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}}],"id":11593,"modifierName":{"id":11589,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9418,"src":"1728:12:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$9418_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"1728:27:85"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11587,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":11600,"src":"1713:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":11586,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1713:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1712:15:85"},"returnParameters":{"id":11594,"nodeType":"ParameterList","parameters":[],"src":"1756:0:85"},"scope":11940,"src":"1701:86:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1862],"body":{"id":11709,"nodeType":"Block","src":"1949:1837:85","statements":[{"assignments":[11613],"declarations":[{"constant":false,"id":11613,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":11709,"src":"2312:22:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":11611,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2312:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11612,"nodeType":"ArrayTypeName","src":"2312:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"id":11619,"initialValue":{"arguments":[{"hexValue":"32","id":11617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:85","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":11616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2337:12:85","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IAsset[] memory)"},"typeName":{"baseType":{"id":11614,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"2341:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11615,"nodeType":"ArrayTypeName","src":"2341:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}}},"id":11618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2337:15:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2312:40:85"},{"expression":{"id":11625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11620,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11613,"src":"2362:6:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":11622,"indexExpression":{"hexValue":"30","id":11621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2369:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2362:9:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11623,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2374:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetIn","nodeType":"MemberAccess","referencedDeclaration":3708,"src":"2374:18:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"src":"2362:30:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11626,"nodeType":"ExpressionStatement","src":"2362:30:85"},{"expression":{"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11627,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11613,"src":"2402:6:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":11629,"indexExpression":{"hexValue":"31","id":11628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2402:9:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11630,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2414:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetOut","nodeType":"MemberAccess","referencedDeclaration":3710,"src":"2414:19:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"src":"2402:31:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11633,"nodeType":"ExpressionStatement","src":"2402:31:85"},{"assignments":[11638],"declarations":[{"constant":false,"id":11638,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":11709,"src":"2444:35:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":11636,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"2444:20:85","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":11637,"nodeType":"ArrayTypeName","src":"2444:22:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"}],"id":11644,"initialValue":{"arguments":[{"hexValue":"31","id":11642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2482:26:85","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.BatchSwapStep memory[] memory)"},"typeName":{"baseType":{"id":11639,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"2486:20:85","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":11640,"nodeType":"ArrayTypeName","src":"2486:22:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}}},"id":11643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:29:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2444:67:85"},{"expression":{"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11645,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"2521:5:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":11647,"indexExpression":{"hexValue":"30","id":11646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2527:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2521:8:85","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11650,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2575:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":3704,"src":"2575:17:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":11652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2620:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":11653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2650:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":11654,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2673:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3712,"src":"2673:17:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11656,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2714:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3714,"src":"2714:19:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11648,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"2532:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":11649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"BatchSwapStep","nodeType":"MemberAccess","referencedDeclaration":3748,"src":"2532:20:85","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BatchSwapStep_$3748_storage_ptr_$","typeString":"type(struct IVault.BatchSwapStep storage pointer)"}},"id":11658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolId","assetInIndex","assetOutIndex","amount","userData"],"nodeType":"FunctionCall","src":"2532:212:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"src":"2521:223:85","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":11660,"nodeType":"ExpressionStatement","src":"2521:223:85"},{"assignments":[11665],"declarations":[{"constant":false,"id":11665,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":11709,"src":"2755:27:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":11663,"name":"int256","nodeType":"ElementaryTypeName","src":"2755:6:85","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":11664,"nodeType":"ArrayTypeName","src":"2755:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":11674,"initialValue":{"arguments":[{"expression":{"id":11668,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"2806:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3706,"src":"2806:15:85","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},{"id":11670,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11638,"src":"2823:5:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":11671,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11613,"src":"2830:6:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":11672,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"2838:5:85","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":11666,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"2785:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3787,"src":"2785:20:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3688_$_t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":11673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:59:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2755:89:85"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"id":11680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11675,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"3172:10:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3706,"src":"3172:15:85","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11677,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"3191:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":11678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SwapKind","nodeType":"MemberAccess","referencedDeclaration":3688,"src":"3191:15:85","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$3688_$","typeString":"type(enum IVault.SwapKind)"}},"id":11679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"GIVEN_IN","nodeType":"MemberAccess","src":"3191:24:85","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"src":"3172:43:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11707,"nodeType":"Block","src":"3549:231:85","statements":[{"expression":{"arguments":[{"baseExpression":{"id":11702,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11665,"src":"3754:11:85","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":11704,"indexExpression":{"hexValue":"30","id":11703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3766:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3754:14:85","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3746:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11700,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:85","typeDescriptions":{}}},"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3746:23:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11609,"id":11706,"nodeType":"Return","src":"3739:30:85"}]},"id":11708,"nodeType":"IfStatement","src":"3168:612:85","trueBody":{"id":11699,"nodeType":"Block","src":"3217:326:85","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11682,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11665,"src":"3441:11:85","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":11684,"indexExpression":{"hexValue":"31","id":11683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3441:14:85","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":11685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3459:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3441:19:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11687,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3462:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":11688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SHOULD_NOT_HAPPEN","nodeType":"MemberAccess","referencedDeclaration":1490,"src":"3462:24:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11681,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3432:8:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3432:55:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11690,"nodeType":"ExpressionStatement","src":"3432:55:85"},{"expression":{"arguments":[{"id":11696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3516:15:85","subExpression":{"baseExpression":{"id":11693,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11665,"src":"3517:11:85","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":11695,"indexExpression":{"hexValue":"31","id":11694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3529:1:85","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3517:14:85","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3508:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3508:7:85","typeDescriptions":{}}},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3508:24:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11609,"id":11698,"nodeType":"Return","src":"3501:31:85"}]}}]},"functionSelector":"e969f6b3","id":11710,"implemented":true,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","overrides":{"id":11606,"nodeType":"OverrideSpecifier","overrides":[],"src":"1910:8:85"},"parameters":{"id":11605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11602,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":11710,"src":"1812:35:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":11601,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3715,"src":"1812:17:85","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":11604,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":11710,"src":"1849:34:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":11603,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"1849:21:85","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1811:73:85"},"returnParameters":{"id":11609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11710,"src":"1936:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1936:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1935:9:85"},"scope":11940,"src":"1793:1993:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1878],"body":{"id":11735,"nodeType":"Block","src":"4029:72:85","statements":[{"expression":{"arguments":[{"id":11729,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11712,"src":"4067:4:85","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},{"id":11730,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"4073:5:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":11731,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11718,"src":"4080:6:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":11732,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11720,"src":"4088:5:85","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":11727,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"4046:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3787,"src":"4046:20:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3688_$_t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4046:48:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"functionReturnParameters":11726,"id":11734,"nodeType":"Return","src":"4039:55:85"}]},"functionSelector":"f84d066e","id":11736,"implemented":true,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","overrides":{"id":11722,"nodeType":"OverrideSpecifier","overrides":[],"src":"3982:8:85"},"parameters":{"id":11721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11712,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":11736,"src":"3825:20:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":11711,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"3825:15:85","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":11715,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":11736,"src":"3855:35:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":11713,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"3855:20:85","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":11714,"nodeType":"ArrayTypeName","src":"3855:22:85","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":11718,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":11736,"src":"3900:22:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":11716,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"3900:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11717,"nodeType":"ArrayTypeName","src":"3900:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":11720,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":11736,"src":"3932:34:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":11719,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"3932:21:85","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"3815:157:85"},"returnParameters":{"id":11726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11725,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":11736,"src":"4000:27:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":11723,"name":"int256","nodeType":"ElementaryTypeName","src":"4000:6:85","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":11724,"nodeType":"ArrayTypeName","src":"4000:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"3999:29:85"},"scope":11940,"src":"3792:309:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1894],"body":{"id":11799,"nodeType":"Block","src":"4325:518:85","statements":[{"assignments":[11754,null],"declarations":[{"constant":false,"id":11754,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11799,"src":"4336:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11753,"name":"address","nodeType":"ElementaryTypeName","src":"4336:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":11759,"initialValue":{"arguments":[{"id":11757,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"4368:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11755,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"4354:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"4354:13:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":11758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4354:21:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"4335:40:85"},{"assignments":[11764,11766],"declarations":[{"constant":false,"id":11764,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":11799,"src":"4386:25:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11762,"name":"uint256","nodeType":"ElementaryTypeName","src":"4386:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11763,"nodeType":"ArrayTypeName","src":"4386:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11766,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":11799,"src":"4413:23:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11765,"name":"uint256","nodeType":"ElementaryTypeName","src":"4413:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11772,"initialValue":{"arguments":[{"id":11768,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"4470:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":11769,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11744,"src":"4478:7:85","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":11770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3635,"src":"4478:14:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":11767,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11939,"src":"4440:29:85","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4440:53:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4385:108:85"},{"assignments":[11774],"declarations":[{"constant":false,"id":11774,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":11799,"src":"4503:36:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":11773,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"4503:22:85","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":11778,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11775,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"4542:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"4542:30:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":11777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4542:32:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"4503:71:85"},{"expression":{"id":11797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11779,"name":"bptOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11748,"src":"4586:6:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11780,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"4594:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":11781,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4585:19:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11786,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11738,"src":"4646:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11787,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11740,"src":"4666:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11788,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11742,"src":"4686:9:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11789,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11764,"src":"4709:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11790,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11766,"src":"4731:15:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11791,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"4760:13:85","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":11792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"4760:34:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4760:36:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11794,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11744,"src":"4810:7:85","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":11795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3640,"src":"4810:16:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":11783,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11754,"src":"4617:4:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11782,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"4607:9:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$3290_$","typeString":"type(contract IBasePool)"}},"id":11784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:15:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$3290","typeString":"contract IBasePool"}},"id":11785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryJoin","nodeType":"MemberAccess","referencedDeclaration":3266,"src":"4607:25:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":11796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:229:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"4585:251:85","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11798,"nodeType":"ExpressionStatement","src":"4585:251:85"}]},"functionSelector":"9ebbf05d","id":11800,"implemented":true,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","overrides":{"id":11746,"nodeType":"OverrideSpecifier","overrides":[],"src":"4263:8:85"},"parameters":{"id":11745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11738,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":11800,"src":"4135:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11737,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4135:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11740,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11800,"src":"4159:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11739,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11742,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11800,"src":"4183:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11741,"name":"address","nodeType":"ElementaryTypeName","src":"4183:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11744,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":11800,"src":"4210:37:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":11743,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3643,"src":"4210:22:85","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"4125:128:85"},"returnParameters":{"id":11752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11748,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":11800,"src":"4281:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11747,"name":"uint256","nodeType":"ElementaryTypeName","src":"4281:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11751,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":11800,"src":"4297:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11749,"name":"uint256","nodeType":"ElementaryTypeName","src":"4297:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11750,"nodeType":"ArrayTypeName","src":"4297:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4280:44:85"},"scope":11940,"src":"4107:736:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1910],"body":{"id":11863,"nodeType":"Block","src":"5067:518:85","statements":[{"assignments":[11818,null],"declarations":[{"constant":false,"id":11818,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":11863,"src":"5078:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11817,"name":"address","nodeType":"ElementaryTypeName","src":"5078:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":11823,"initialValue":{"arguments":[{"id":11821,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"5110:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11819,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"5096:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"5096:13:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":11822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5096:21:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"5077:40:85"},{"assignments":[11828,11830],"declarations":[{"constant":false,"id":11828,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":11863,"src":"5128:25:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11826,"name":"uint256","nodeType":"ElementaryTypeName","src":"5128:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11827,"nodeType":"ArrayTypeName","src":"5128:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11830,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":11863,"src":"5155:23:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5155:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11836,"initialValue":{"arguments":[{"id":11832,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"5212:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":11833,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11808,"src":"5220:7:85","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3658,"src":"5220:14:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":11831,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11939,"src":"5182:29:85","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":11835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5182:53:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5127:108:85"},{"assignments":[11838],"declarations":[{"constant":false,"id":11838,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":11863,"src":"5245:36:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":11837,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"5245:22:85","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":11842,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11839,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"5284:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"5284:30:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5284:32:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"5245:71:85"},{"expression":{"id":11861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11843,"name":"bptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11812,"src":"5328:5:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11844,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11815,"src":"5335:10:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":11845,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5327:19:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11850,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"5388:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11851,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11804,"src":"5408:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11852,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11806,"src":"5428:9:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11853,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11828,"src":"5451:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11854,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11830,"src":"5473:15:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11855,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11838,"src":"5502:13:85","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":11856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"5502:34:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:36:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11858,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11808,"src":"5552:7:85","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3663,"src":"5552:16:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":11847,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11818,"src":"5359:4:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11846,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"5349:9:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$3290_$","typeString":"type(contract IBasePool)"}},"id":11848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:15:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$3290","typeString":"contract IBasePool"}},"id":11849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryExit","nodeType":"MemberAccess","referencedDeclaration":3289,"src":"5349:25:85","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":11860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:229:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"5327:251:85","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11862,"nodeType":"ExpressionStatement","src":"5327:251:85"}]},"functionSelector":"c7b2c52c","id":11864,"implemented":true,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","overrides":{"id":11810,"nodeType":"OverrideSpecifier","overrides":[],"src":"5005:8:85"},"parameters":{"id":11809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11802,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":11864,"src":"4877:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4877:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11804,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11864,"src":"4901:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11803,"name":"address","nodeType":"ElementaryTypeName","src":"4901:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11806,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11864,"src":"4925:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11805,"name":"address","nodeType":"ElementaryTypeName","src":"4925:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11808,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":11864,"src":"4952:37:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":11807,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"4952:22:85","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"4867:128:85"},"returnParameters":{"id":11816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11812,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":11864,"src":"5023:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11811,"name":"uint256","nodeType":"ElementaryTypeName","src":"5023:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11815,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":11864,"src":"5038:27:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11813,"name":"uint256","nodeType":"ElementaryTypeName","src":"5038:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11814,"nodeType":"ArrayTypeName","src":"5038:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5022:44:85"},"scope":11940,"src":"4849:736:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11938,"nodeType":"Block","src":"5781:482:85","statements":[{"assignments":[11880],"declarations":[{"constant":false,"id":11880,"mutability":"mutable","name":"actualTokens","nodeType":"VariableDeclaration","scope":11938,"src":"5791:28:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":11878,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"5791:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":11879,"nodeType":"ArrayTypeName","src":"5791:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":11881,"nodeType":"VariableDeclarationStatement","src":"5791:28:85"},{"assignments":[11885],"declarations":[{"constant":false,"id":11885,"mutability":"mutable","name":"expectedTokens","nodeType":"VariableDeclaration","scope":11938,"src":"5829:30:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":11883,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"5829:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":11884,"nodeType":"ArrayTypeName","src":"5829:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":11889,"initialValue":{"arguments":[{"id":11887,"name":"expectedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11869,"src":"5881:14:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":11886,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[9354,9401],"referencedDeclaration":9401,"src":"5862:18:85","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (contract IAsset[] memory) view returns (contract IERC20[] memory)"}},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5862:34:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5829:67:85"},{"expression":{"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11890,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11880,"src":"5908:12:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":11891,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11873,"src":"5922:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11892,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"5932:15:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11893,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5907:41:85","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11896,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11866,"src":"5971:6:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11894,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"5951:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":11895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3620,"src":"5951:19:85","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"}},"id":11897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5951:27:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"src":"5907:71:85","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11899,"nodeType":"ExpressionStatement","src":"5907:71:85"},{"expression":{"arguments":[{"expression":{"id":11903,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11880,"src":"6024:12:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6024:19:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":11905,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11885,"src":"6045:14:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6045:21:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11900,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"5988:12:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5172_$","typeString":"type(library InputHelpers)"}},"id":11902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5080,"src":"5988:35:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":11907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5988:79:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11908,"nodeType":"ExpressionStatement","src":"5988:79:85"},{"body":{"id":11936,"nodeType":"Block","src":"6128:129:85","statements":[{"assignments":[11921],"declarations":[{"constant":false,"id":11921,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11936,"src":"6142:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":11920,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6142:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11925,"initialValue":{"baseExpression":{"id":11922,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11880,"src":"6157:12:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11924,"indexExpression":{"id":11923,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"6170:1:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6157:15:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6142:30:85"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":11931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11927,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11921,"src":"6195:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":11928,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11885,"src":"6204:14:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11930,"indexExpression":{"id":11929,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"6219:1:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6204:17:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"6195:26:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11932,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"6223:6:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":11933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TOKENS_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1445,"src":"6223:22:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11926,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"6186:8:85","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6186:60:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11935,"nodeType":"ExpressionStatement","src":"6186:60:85"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"6098:1:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11914,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11880,"src":"6102:12:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6102:19:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6098:23:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11937,"initializationExpression":{"assignments":[11910],"declarations":[{"constant":false,"id":11910,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11937,"src":"6083:9:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11909,"name":"uint256","nodeType":"ElementaryTypeName","src":"6083:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11912,"initialValue":{"hexValue":"30","id":11911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6095:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6083:13:85"},"loopExpression":{"expression":{"id":11918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6123:3:85","subExpression":{"id":11917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"6125:1:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11919,"nodeType":"ExpressionStatement","src":"6123:3:85"},"nodeType":"ForStatement","src":"6078:179:85"}]},"id":11939,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAssetsAndGetBalances","nodeType":"FunctionDefinition","parameters":{"id":11870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11866,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":11939,"src":"5630:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5630:7:85","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11869,"mutability":"mutable","name":"expectedAssets","nodeType":"VariableDeclaration","scope":11939,"src":"5646:30:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":11867,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"5646:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":11868,"nodeType":"ArrayTypeName","src":"5646:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"5629:48:85"},"returnParameters":{"id":11876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11873,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":11939,"src":"5725:25:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11871,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11872,"nodeType":"ArrayTypeName","src":"5725:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11875,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":11939,"src":"5752:23:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11874,"name":"uint256","nodeType":"ElementaryTypeName","src":"5752:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:52:85"},"scope":11940,"src":"5591:672:85","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":11941,"src":"1600:4665:85"}],"src":"688:5578:85"},"id":85},"contracts/BatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/BatchRelayerLibrary.sol","exportedSymbols":{"BatchRelayerLibrary":[12015]},"id":12016,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11942,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:86"},{"id":11943,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:86"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"./relayer/BaseRelayerLibrary.sol","id":11944,"nodeType":"ImportDirective","scope":12016,"sourceUnit":14475,"src":"747:42:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/AaveWrapping.sol","file":"./relayer/AaveWrapping.sol","id":11945,"nodeType":"ImportDirective","scope":12016,"sourceUnit":13887,"src":"791:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","file":"./relayer/ERC4626Wrapping.sol","id":11946,"nodeType":"ImportDirective","scope":12016,"sourceUnit":14697,"src":"828:39:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/EulerWrapping.sol","file":"./relayer/EulerWrapping.sol","id":11947,"nodeType":"ImportDirective","scope":12016,"sourceUnit":14824,"src":"868:37:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/GaugeActions.sol","file":"./relayer/GaugeActions.sol","id":11948,"nodeType":"ImportDirective","scope":12016,"sourceUnit":15165,"src":"906:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/GearboxWrapping.sol","file":"./relayer/GearboxWrapping.sol","id":11949,"nodeType":"ImportDirective","scope":12016,"sourceUnit":15282,"src":"943:39:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/LidoWrapping.sol","file":"./relayer/LidoWrapping.sol","id":11950,"nodeType":"ImportDirective","scope":12016,"sourceUnit":15709,"src":"983:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/CompoundV2Wrapping.sol","file":"./relayer/CompoundV2Wrapping.sol","id":11951,"nodeType":"ImportDirective","scope":12016,"sourceUnit":14602,"src":"1020:42:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","file":"./relayer/UnbuttonWrapping.sol","id":11952,"nodeType":"ImportDirective","scope":12016,"sourceUnit":16176,"src":"1063:40:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ReaperWrapping.sol","file":"./relayer/ReaperWrapping.sol","id":11953,"nodeType":"ImportDirective","scope":12016,"sourceUnit":15828,"src":"1104:38:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/TetuWrapping.sol","file":"./relayer/TetuWrapping.sol","id":11954,"nodeType":"ImportDirective","scope":12016,"sourceUnit":16083,"src":"1143:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/SiloWrapping.sol","file":"./relayer/SiloWrapping.sol","id":11955,"nodeType":"ImportDirective","scope":12016,"sourceUnit":15964,"src":"1180:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultActions.sol","file":"./relayer/VaultActions.sol","id":11956,"nodeType":"ImportDirective","scope":12016,"sourceUnit":17492,"src":"1217:36:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultPermit.sol","file":"./relayer/VaultPermit.sol","id":11957,"nodeType":"ImportDirective","scope":12016,"sourceUnit":17574,"src":"1254:35:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/YearnWrapping.sol","file":"./relayer/YearnWrapping.sol","id":11958,"nodeType":"ImportDirective","scope":12016,"sourceUnit":17670,"src":"1290:37:86","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11960,"name":"AaveWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":13886,"src":"1579:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$13886","typeString":"contract AaveWrapping"}},"id":11961,"nodeType":"InheritanceSpecifier","src":"1579:12:86"},{"baseName":{"id":11962,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":14474,"src":"1597:18:86","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}},"id":11963,"nodeType":"InheritanceSpecifier","src":"1597:18:86"},{"baseName":{"id":11964,"name":"ERC4626Wrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":14696,"src":"1621:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$14696","typeString":"contract ERC4626Wrapping"}},"id":11965,"nodeType":"InheritanceSpecifier","src":"1621:15:86"},{"baseName":{"id":11966,"name":"EulerWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":14823,"src":"1642:13:86","typeDescriptions":{"typeIdentifier":"t_contract$_EulerWrapping_$14823","typeString":"contract EulerWrapping"}},"id":11967,"nodeType":"InheritanceSpecifier","src":"1642:13:86"},{"baseName":{"id":11968,"name":"GaugeActions","nodeType":"UserDefinedTypeName","referencedDeclaration":15164,"src":"1661:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$15164","typeString":"contract GaugeActions"}},"id":11969,"nodeType":"InheritanceSpecifier","src":"1661:12:86"},{"baseName":{"id":11970,"name":"GearboxWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":15281,"src":"1679:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_GearboxWrapping_$15281","typeString":"contract GearboxWrapping"}},"id":11971,"nodeType":"InheritanceSpecifier","src":"1679:15:86"},{"baseName":{"id":11972,"name":"LidoWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":15708,"src":"1700:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$15708","typeString":"contract LidoWrapping"}},"id":11973,"nodeType":"InheritanceSpecifier","src":"1700:12:86"},{"baseName":{"id":11974,"name":"UnbuttonWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":16175,"src":"1718:16:86","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$16175","typeString":"contract UnbuttonWrapping"}},"id":11975,"nodeType":"InheritanceSpecifier","src":"1718:16:86"},{"baseName":{"id":11976,"name":"CompoundV2Wrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":14601,"src":"1740:18:86","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV2Wrapping_$14601","typeString":"contract CompoundV2Wrapping"}},"id":11977,"nodeType":"InheritanceSpecifier","src":"1740:18:86"},{"baseName":{"id":11978,"name":"ReaperWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":15827,"src":"1764:14:86","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$15827","typeString":"contract ReaperWrapping"}},"id":11979,"nodeType":"InheritanceSpecifier","src":"1764:14:86"},{"baseName":{"id":11980,"name":"SiloWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":15963,"src":"1784:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_SiloWrapping_$15963","typeString":"contract SiloWrapping"}},"id":11981,"nodeType":"InheritanceSpecifier","src":"1784:12:86"},{"baseName":{"id":11982,"name":"TetuWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":16082,"src":"1802:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_TetuWrapping_$16082","typeString":"contract TetuWrapping"}},"id":11983,"nodeType":"InheritanceSpecifier","src":"1802:12:86"},{"baseName":{"id":11984,"name":"VaultActions","nodeType":"UserDefinedTypeName","referencedDeclaration":17474,"src":"1820:12:86","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}},"id":11985,"nodeType":"InheritanceSpecifier","src":"1820:12:86"},{"baseName":{"id":11986,"name":"VaultPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":17573,"src":"1838:11:86","typeDescriptions":{"typeIdentifier":"t_contract$_VaultPermit_$17573","typeString":"contract VaultPermit"}},"id":11987,"nodeType":"InheritanceSpecifier","src":"1838:11:86"},{"baseName":{"id":11988,"name":"YearnWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":17669,"src":"1855:13:86","typeDescriptions":{"typeIdentifier":"t_contract$_YearnWrapping_$17669","typeString":"contract YearnWrapping"}},"id":11989,"nodeType":"InheritanceSpecifier","src":"1855:13:86"}],"contractDependencies":[9418,13886,14474,14601,14696,14823,15164,15281,15504,15708,15827,15963,16082,16175,17474,17573,17669],"contractKind":"contract","documentation":{"id":11959,"nodeType":"StructuredDocumentation","src":"1329:213:86","text":" @title Batch Relayer Library\n @notice This contract is not a relayer by itself and calls into it directly will fail.\n The associated relayer can be found by calling `getEntrypoint` on this contract."},"fullyImplemented":true,"id":12015,"linearizedBaseContracts":[12015,17669,17573,17474,16082,15963,15827,14601,16175,15708,15281,15164,14823,14696,14474,13886,15504,9418],"name":"BatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":12013,"nodeType":"Block","src":"2137:64:86","statements":[]},"id":12014,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12002,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11991,"src":"2056:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":12003,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11999,"src":"2063:7:86","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12004,"modifierName":{"id":12001,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14474,"src":"2037:18:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$14474_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"2037:34:86"},{"arguments":[{"id":12006,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11993,"src":"2085:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"id":12007,"modifierName":{"id":12005,"name":"LidoWrapping","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15708,"src":"2072:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LidoWrapping_$15708_$","typeString":"type(contract LidoWrapping)"}},"nodeType":"ModifierInvocation","src":"2072:20:86"},{"arguments":[{"id":12009,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11995,"src":"2106:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},{"id":12010,"name":"canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11997,"src":"2114:21:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12011,"modifierName":{"id":12008,"name":"GaugeActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15164,"src":"2093:12:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GaugeActions_$15164_$","typeString":"type(contract GaugeActions)"}},"nodeType":"ModifierInvocation","src":"2093:43:86"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11991,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12014,"src":"1896:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":11990,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1896:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":11993,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":12014,"src":"1918:13:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":11992,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1918:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11995,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":12014,"src":"1941:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"},"typeName":{"id":11994,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":134,"src":"1941:15:86","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":11997,"mutability":"mutable","name":"canCallUserCheckpoint","nodeType":"VariableDeclaration","scope":12014,"src":"1973:26:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11996,"name":"bool","nodeType":"ElementaryTypeName","src":"1973:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11999,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":12014,"src":"2009:21:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11998,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:86","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1886:150:86"},"returnParameters":{"id":12012,"nodeType":"ParameterList","parameters":[],"src":"2137:0:86"},"scope":12015,"src":"1875:326:86","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12016,"src":"1543:660:86"}],"src":"688:1516:86"},"id":86},"contracts/PoolRecoveryHelper.sol":{"ast":{"absolutePath":"contracts/PoolRecoveryHelper.sol","exportedSymbols":{"PoolRecoveryHelper":[12242]},"id":12243,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12017,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:87"},{"id":12018,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:87"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","id":12019,"nodeType":"ImportDirective","scope":12243,"sourceUnit":665,"src":"747:80:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","id":12020,"nodeType":"ImportDirective","scope":12243,"sourceUnit":686,"src":"828:81:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","id":12021,"nodeType":"ImportDirective","scope":12243,"sourceUnit":709,"src":"910:77:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":12022,"nodeType":"ImportDirective","scope":12243,"sourceUnit":5267,"src":"989:88:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":12023,"nodeType":"ImportDirective","scope":12243,"sourceUnit":8843,"src":"1078:83:87","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12025,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"1553:23:87","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":12026,"nodeType":"InheritanceSpecifier","src":"1553:23:87"}],"contractDependencies":[1502,4423,5266],"contractKind":"contract","documentation":{"id":12024,"nodeType":"StructuredDocumentation","src":"1163:358:87","text":" @dev This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode\n if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms\n identify failed pools and prevent further traffic from being routed to them (since in this state swap operations\n would fail)."},"fullyImplemented":true,"id":12242,"linearizedBaseContracts":[12242,5266,4423,1502],"name":"PoolRecoveryHelper","nodeType":"ContractDefinition","nodes":[{"id":12029,"libraryName":{"id":12027,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8842,"src":"1589:13:87","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$8842","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1583:49:87","typeName":{"id":12028,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"1607:24:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":12031,"mutability":"mutable","name":"_factories","nodeType":"VariableDeclaration","scope":12242,"src":"1638:43:87","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":12030,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"1638:24:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":12065,"nodeType":"Block","src":"1780:168:87","statements":[{"body":{"id":12063,"nodeType":"Block","src":"1844:98:87","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":12056,"name":"initialFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12036,"src":"1881:16:87","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12058,"indexExpression":{"id":12057,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12043,"src":"1898:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1881:19:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12054,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"1866:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8442,"src":"1866:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1866:35:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475706c696361746520696e697469616c20666163746f7279","id":12060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1903:27:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_a0c3ddd618fd924a2699c15d7298e3c0bf85f52475bc87c9e32de342c1ea66ca","typeString":"literal_string \"Duplicate initial factory\""},"value":"Duplicate initial factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a0c3ddd618fd924a2699c15d7298e3c0bf85f52475bc87c9e32de342c1ea66ca","typeString":"literal_string \"Duplicate initial factory\""}],"id":12053,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1858:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1858:73:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12062,"nodeType":"ExpressionStatement","src":"1858:73:87"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12046,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12043,"src":"1810:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12047,"name":"initialFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12036,"src":"1814:16:87","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1814:23:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1810:27:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12064,"initializationExpression":{"assignments":[12043],"declarations":[{"constant":false,"id":12043,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12064,"src":"1795:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12042,"name":"uint256","nodeType":"ElementaryTypeName","src":"1795:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12045,"initialValue":{"hexValue":"30","id":12044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1807:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1795:13:87"},"loopExpression":{"expression":{"id":12051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1839:3:87","subExpression":{"id":12050,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12043,"src":"1841:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12052,"nodeType":"ExpressionStatement","src":"1839:3:87"},"nodeType":"ForStatement","src":"1790:152:87"}]},"id":12066,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12039,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12033,"src":"1773:5:87","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":12040,"modifierName":{"id":12038,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1749:23:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1749:30:87"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12033,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12066,"src":"1700:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":12032,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1700:6:87","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":12036,"mutability":"mutable","name":"initialFactories","nodeType":"VariableDeclaration","scope":12066,"src":"1714:33:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12034,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12035,"nodeType":"ArrayTypeName","src":"1714:9:87","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1699:49:87"},"returnParameters":{"id":12041,"nodeType":"ParameterList","parameters":[],"src":"1780:0:87"},"scope":12242,"src":"1688:260:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12082,"nodeType":"Block","src":"2189:70:87","statements":[{"expression":{"arguments":[{"arguments":[{"id":12077,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12069,"src":"2222:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12075,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2207:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8442,"src":"2207:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2207:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475706c696361746520666163746f7279","id":12079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2232:19:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_333aaca7581959808bf36276468bbc724a0aafc678eb30711bf317f944947629","typeString":"literal_string \"Duplicate factory\""},"value":"Duplicate factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_333aaca7581959808bf36276468bbc724a0aafc678eb30711bf317f944947629","typeString":"literal_string \"Duplicate factory\""}],"id":12074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2199:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2199:53:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12081,"nodeType":"ExpressionStatement","src":"2199:53:87"}]},"documentation":{"id":12067,"nodeType":"StructuredDocumentation","src":"1954:167:87","text":" @notice Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be\n passed to `enableRecoveryMode()`."},"functionSelector":"dc867b79","id":12083,"implemented":true,"kind":"function","modifiers":[{"id":12072,"modifierName":{"id":12071,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2176:12:87","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2176:12:87"}],"name":"addPoolFactory","nodeType":"FunctionDefinition","parameters":{"id":12070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12069,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12083,"src":"2150:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12068,"name":"address","nodeType":"ElementaryTypeName","src":"2150:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2149:17:87"},"returnParameters":{"id":12073,"nodeType":"ParameterList","parameters":[],"src":"2189:0:87"},"scope":12242,"src":"2126:133:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12099,"nodeType":"Block","src":"2402:76:87","statements":[{"expression":{"arguments":[{"arguments":[{"id":12094,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12086,"src":"2438:7:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12092,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2420:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":8527,"src":"2420:17:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e7420666163746f7279","id":12096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2448:22:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_262b05b7c25872fd3e072c0b96689d4dfbf1788f29bf6e1637f885ae150673d2","typeString":"literal_string \"Non-existent factory\""},"value":"Non-existent factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_262b05b7c25872fd3e072c0b96689d4dfbf1788f29bf6e1637f885ae150673d2","typeString":"literal_string \"Non-existent factory\""}],"id":12091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2412:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2412:59:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12098,"nodeType":"ExpressionStatement","src":"2412:59:87"}]},"documentation":{"id":12084,"nodeType":"StructuredDocumentation","src":"2265:66:87","text":" @notice Removes a Pool Factory from the helper."},"functionSelector":"26e54479","id":12100,"implemented":true,"kind":"function","modifiers":[{"id":12089,"modifierName":{"id":12088,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2389:12:87","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2389:12:87"}],"name":"removePoolFactory","nodeType":"FunctionDefinition","parameters":{"id":12087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12086,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12100,"src":"2363:15:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12085,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2362:17:87"},"returnParameters":{"id":12090,"nodeType":"ParameterList","parameters":[],"src":"2402:0:87"},"scope":12242,"src":"2336:142:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12110,"nodeType":"Block","src":"2618:43:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12106,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2635:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":8558,"src":"2635:17:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2635:19:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12105,"id":12109,"nodeType":"Return","src":"2628:26:87"}]},"documentation":{"id":12101,"nodeType":"StructuredDocumentation","src":"2484:70:87","text":" @notice Returns the total number of Pool Factories."},"functionSelector":"d1047434","id":12111,"implemented":true,"kind":"function","modifiers":[],"name":"getFactoryCount","nodeType":"FunctionDefinition","parameters":{"id":12102,"nodeType":"ParameterList","parameters":[],"src":"2583:2:87"},"returnParameters":{"id":12105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12104,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12111,"src":"2609:7:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2609:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2608:9:87"},"scope":12242,"src":"2559:102:87","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12126,"nodeType":"Block","src":"2886:62:87","statements":[{"expression":{"arguments":[{"arguments":[{"id":12122,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12114,"src":"2934:5:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12120,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"2920:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":8584,"src":"2920:13:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":12123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2920:20:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12119,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"2903:16:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePoolFactory_$664_$","typeString":"type(contract IBasePoolFactory)"}},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2903:38:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"functionReturnParameters":12118,"id":12125,"nodeType":"Return","src":"2896:45:87"}]},"documentation":{"id":12112,"nodeType":"StructuredDocumentation","src":"2667:131:87","text":" @notice Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`."},"functionSelector":"a587bbe1","id":12127,"implemented":true,"kind":"function","modifiers":[],"name":"getFactoryAtIndex","nodeType":"FunctionDefinition","parameters":{"id":12115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12114,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":12127,"src":"2830:13:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12113,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:15:87"},"returnParameters":{"id":12118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12117,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12127,"src":"2868:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"},"typeName":{"id":12116,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":664,"src":"2868:16:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"visibility":"internal"}],"src":"2867:18:87"},"scope":12242,"src":"2803:145:87","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12172,"nodeType":"Block","src":"3122:329:87","statements":[{"assignments":[12136],"declarations":[{"constant":false,"id":12136,"mutability":"mutable","name":"totalFactories","nodeType":"VariableDeclaration","scope":12172,"src":"3132:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12135,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12140,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12137,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"3157:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":8558,"src":"3157:17:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":12139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3157:19:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3132:44:87"},{"body":{"id":12168,"nodeType":"Block","src":"3231:191:87","statements":[{"assignments":[12152],"declarations":[{"constant":false,"id":12152,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":12168,"src":"3245:24:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"},"typeName":{"id":12151,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":664,"src":"3245:16:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"visibility":"internal"}],"id":12159,"initialValue":{"arguments":[{"arguments":[{"id":12156,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"3313:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12154,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12031,"src":"3289:10:87","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":12155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":8600,"src":"3289:23:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":12157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3289:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12153,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"3272:16:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePoolFactory_$664_$","typeString":"type(contract IBasePoolFactory)"}},"id":12158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3272:44:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"nodeType":"VariableDeclarationStatement","src":"3245:71:87"},{"condition":{"arguments":[{"id":12162,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12130,"src":"3361:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12160,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12152,"src":"3335:7:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$664","typeString":"contract IBasePoolFactory"}},"id":12161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isPoolFromFactory","nodeType":"MemberAccess","referencedDeclaration":653,"src":"3335:25:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":12163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3335:31:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12167,"nodeType":"IfStatement","src":"3331:81:87","trueBody":{"id":12166,"nodeType":"Block","src":"3368:44:87","statements":[{"expression":{"hexValue":"74727565","id":12164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3393:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":12134,"id":12165,"nodeType":"Return","src":"3386:11:87"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12145,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"3206:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12146,"name":"totalFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"3210:14:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3206:18:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12169,"initializationExpression":{"assignments":[12142],"declarations":[{"constant":false,"id":12142,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12169,"src":"3191:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12141,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12144,"initialValue":{"hexValue":"30","id":12143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3203:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3191:13:87"},"loopExpression":{"expression":{"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3226:3:87","subExpression":{"id":12148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12142,"src":"3228:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12150,"nodeType":"ExpressionStatement","src":"3226:3:87"},"nodeType":"ForStatement","src":"3186:236:87"},{"expression":{"hexValue":"66616c7365","id":12170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3439:5:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":12134,"id":12171,"nodeType":"Return","src":"3432:12:87"}]},"documentation":{"id":12128,"nodeType":"StructuredDocumentation","src":"2954:90:87","text":" @notice Returns true if the Pool has been created from a known factory."},"functionSelector":"3a987dfa","id":12173,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromKnownFactory","nodeType":"FunctionDefinition","parameters":{"id":12131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12130,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12173,"src":"3081:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12129,"name":"address","nodeType":"ElementaryTypeName","src":"3081:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3080:14:87"},"returnParameters":{"id":12134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12133,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12173,"src":"3116:4:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12132,"name":"bool","nodeType":"ElementaryTypeName","src":"3116:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3115:6:87"},"scope":12242,"src":"3049:402:87","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12240,"nodeType":"Block","src":"4192:1220:87","statements":[{"expression":{"arguments":[{"arguments":[{"id":12181,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"4508:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12180,"name":"isPoolFromKnownFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12173,"src":"4485:22:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4485:28:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f7279","id":12183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4515:32:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_13e87f3ae685b578cfd5eed93ea21a329be7feef08ec3f31cede6af8b3982f02","typeString":"literal_string \"Pool is not from known factory\""},"value":"Pool is not from known factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13e87f3ae685b578cfd5eed93ea21a329be7feef08ec3f31cede6af8b3982f02","typeString":"literal_string \"Pool is not from known factory\""}],"id":12179,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4477:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4477:71:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12185,"nodeType":"ExpressionStatement","src":"4477:71:87"},{"assignments":[12189],"declarations":[{"constant":false,"id":12189,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":12240,"src":"4649:36:87","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":12187,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"4649:13:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":12188,"nodeType":"ArrayTypeName","src":"4649:15:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"id":12195,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12191,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"4706:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12190,"name":"IRateProviderPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"4688:17:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProviderPool_$685_$","typeString":"type(contract IRateProviderPool)"}},"id":12192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4688:23:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProviderPool_$685","typeString":"contract IRateProviderPool"}},"id":12193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRateProviders","nodeType":"MemberAccess","referencedDeclaration":684,"src":"4688:40:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr_$","typeString":"function () view external returns (contract IRateProvider[] memory)"}},"id":12194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4688:42:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4649:81:87"},{"body":{"id":12234,"nodeType":"Block","src":"4791:371:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"},"id":12213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":12207,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12189,"src":"4809:13:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":12209,"indexExpression":{"id":12208,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12197,"src":"4823:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4809:16:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4843:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12210,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"4829:13:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$673_$","typeString":"type(contract IRateProvider)"}},"id":12212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4829:16:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"src":"4809:36:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12233,"nodeType":"IfStatement","src":"4805:347:87","trueBody":{"id":12232,"nodeType":"Block","src":"4847:305:87","statements":[{"clauses":[{"block":{"id":12220,"nodeType":"Block","src":"4897:125:87","statements":[{"id":12219,"nodeType":"Continue","src":"4995:8:87"}]},"errorName":"","id":12221,"nodeType":"TryCatchClause","src":"4897:125:87"},{"block":{"id":12229,"nodeType":"Block","src":"5029:109:87","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12223,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"5065:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12222,"name":"IRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"5051:13:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRecoveryMode_$708_$","typeString":"type(contract IRecoveryMode)"}},"id":12224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5051:19:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRecoveryMode_$708","typeString":"contract IRecoveryMode"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"enableRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":697,"src":"5051:38:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5051:40:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12227,"nodeType":"ExpressionStatement","src":"5051:40:87"},{"functionReturnParameters":12178,"id":12228,"nodeType":"Return","src":"5113:7:87"}]},"errorName":"","id":12230,"nodeType":"TryCatchClause","src":"5023:115:87"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":12214,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12189,"src":"4869:13:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":12216,"indexExpression":{"id":12215,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12197,"src":"4883:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4869:16:87","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":12217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":672,"src":"4869:24:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4869:26:87","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12231,"nodeType":"TryStatement","src":"4865:273:87"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12200,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12197,"src":"4760:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12201,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12189,"src":"4764:13:87","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":12202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4764:20:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4760:24:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12235,"initializationExpression":{"assignments":[12197],"declarations":[{"constant":false,"id":12197,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12235,"src":"4745:9:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12196,"name":"uint256","nodeType":"ElementaryTypeName","src":"4745:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12199,"initialValue":{"hexValue":"30","id":12198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4757:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4745:13:87"},"loopExpression":{"expression":{"id":12205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4786:3:87","subExpression":{"id":12204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12197,"src":"4788:1:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12206,"nodeType":"ExpressionStatement","src":"4786:3:87"},"nodeType":"ForStatement","src":"4740:422:87"},{"expression":{"arguments":[{"hexValue":"506f6f6c277320726174652070726f76696465727320646f206e6f7420726576657274","id":12237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5367:37:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3980a55de7ecda2f3df6c4353d8eea765956ba30d3e5ad086a1a3d8455afff9","typeString":"literal_string \"Pool's rate providers do not revert\""},"value":"Pool's rate providers do not revert"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3980a55de7ecda2f3df6c4353d8eea765956ba30d3e5ad086a1a3d8455afff9","typeString":"literal_string \"Pool's rate providers do not revert\""}],"id":12236,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5360:6:87","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":12238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5360:45:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12239,"nodeType":"ExpressionStatement","src":"5360:45:87"}]},"documentation":{"id":12174,"nodeType":"StructuredDocumentation","src":"3457:679:87","text":" @notice Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()`\n reverts).\n Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex\n computations and does not call into any external contracts, which makes it a very dependable way to retrieve the\n underlying tokens.\n However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees\n accrued before enabling Recovery Mode will be forfeited.\n The Pool must have been created via a known Pool Factory contract."},"functionSelector":"dc3f574e","id":12241,"implemented":true,"kind":"function","modifiers":[],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":12177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12176,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12241,"src":"4169:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12175,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4168:14:87"},"returnParameters":{"id":12178,"nodeType":"ParameterList","parameters":[],"src":"4192:0:87"},"scope":12242,"src":"4141:1271:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12243,"src":"1522:3892:87"}],"src":"688:4727:87"},"id":87},"contracts/ProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"contracts/ProtocolFeePercentagesProvider.sol","exportedSymbols":{"ProtocolFeePercentagesProvider":[12638]},"id":12639,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12244,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:88"},{"id":12245,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:88"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","id":12246,"nodeType":"ImportDirective","scope":12639,"sourceUnit":3400,"src":"747:81:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","id":12247,"nodeType":"ImportDirective","scope":12639,"sourceUnit":2301,"src":"829:101:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":12248,"nodeType":"ImportDirective","scope":12639,"sourceUnit":5267,"src":"932:88:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","id":12249,"nodeType":"ImportDirective","scope":12639,"sourceUnit":8954,"src":"1021:78:88","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12250,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2287,"src":"1144:31:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"id":12251,"nodeType":"InheritanceSpecifier","src":"1144:31:88"},{"baseName":{"id":12252,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"1177:23:88","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":12253,"nodeType":"InheritanceSpecifier","src":"1177:23:88"}],"contractDependencies":[1502,2287,4423,5266],"contractKind":"contract","fullyImplemented":true,"id":12638,"linearizedBaseContracts":[12638,5266,4423,1502,2287],"name":"ProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"id":12256,"libraryName":{"id":12254,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":8953,"src":"1213:8:88","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$8953","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1207:27:88","typeName":{"id":12255,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":12258,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":12638,"src":"1240:63:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":12257,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"1240:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"canonicalName":"ProtocolFeePercentagesProvider.FeeTypeData","id":12267,"members":[{"constant":false,"id":12260,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12267,"src":"1339:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12259,"name":"uint64","nodeType":"ElementaryTypeName","src":"1339:6:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12262,"mutability":"mutable","name":"maximum","nodeType":"VariableDeclaration","scope":12267,"src":"1361:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12261,"name":"uint64","nodeType":"ElementaryTypeName","src":"1361:6:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12264,"mutability":"mutable","name":"registered","nodeType":"VariableDeclaration","scope":12267,"src":"1385:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12263,"name":"bool","nodeType":"ElementaryTypeName","src":"1385:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12266,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":12267,"src":"1410:11:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12265,"name":"string","nodeType":"ElementaryTypeName","src":"1410:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"FeeTypeData","nodeType":"StructDefinition","scope":12638,"src":"1310:118:88","visibility":"public"},{"constant":false,"id":12271,"mutability":"mutable","name":"_feeTypeData","nodeType":"VariableDeclaration","scope":12638,"src":"1434:52:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"typeName":{"id":12270,"keyType":{"id":12268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1434:31:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"valueType":{"id":12269,"name":"FeeTypeData","nodeType":"UserDefinedTypeName","referencedDeclaration":12267,"src":"1453:11:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData"}}},"visibility":"private"},{"constant":true,"id":12274,"mutability":"constant","name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":12638,"src":"1591:60:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":12273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:88","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":true,"id":12277,"mutability":"constant","name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":12638,"src":"1717:66:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":12276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1778:5:88","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"private"},{"constant":true,"id":12280,"mutability":"constant","name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":12638,"src":"1796:71:88","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12278,"name":"uint256","nodeType":"ElementaryTypeName","src":"1796:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653136","id":12279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:4:88","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"value":"1e16"},"visibility":"private"},{"body":{"id":12350,"nodeType":"Block","src":"2011:1101:88","statements":[{"assignments":[12293],"declarations":[{"constant":false,"id":12293,"mutability":"mutable","name":"protocolFeeCollector","nodeType":"VariableDeclaration","scope":12350,"src":"2021:43:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":12292,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"2021:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":12297,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12294,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"2067:5:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"2067:30:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":12296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:32:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"2021:78:88"},{"expression":{"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12298,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"2109:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12299,"name":"protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12293,"src":"2134:20:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"src":"2109:45:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12301,"nodeType":"ExpressionStatement","src":"2109:45:88"},{"expression":{"arguments":[{"expression":{"id":12303,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2346:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":2296,"src":"2346:21:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5969656c64","id":12305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2369:7:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},"value":"Yield"},{"id":12306,"name":"maxYieldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12284,"src":"2378:13:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":12307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2393:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12302,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12453,"src":"2329:16:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":12308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:66:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12309,"nodeType":"ExpressionStatement","src":"2329:66:88"},{"expression":{"arguments":[{"expression":{"id":12311,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2422:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AUM","nodeType":"MemberAccess","referencedDeclaration":2299,"src":"2422:19:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41737365747320556e646572204d616e6167656d656e74","id":12313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2443:25:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},"value":"Assets Under Management"},{"id":12314,"name":"maxAUMValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"2470:11:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":12315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12310,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12453,"src":"2405:16:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":12316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2405:80:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12317,"nodeType":"ExpressionStatement","src":"2405:80:88"},{"expression":{"id":12324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12318,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"2856:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12321,"indexExpression":{"expression":{"id":12319,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2869:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2290,"src":"2869:20:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2856:34:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":12264,"src":"2856:45:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2904:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2856:52:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12325,"nodeType":"ExpressionStatement","src":"2856:52:88"},{"expression":{"id":12332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12326,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"2918:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12329,"indexExpression":{"expression":{"id":12327,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2931:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2290,"src":"2931:20:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2918:34:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":12266,"src":"2918:39:88","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"53776170","id":12331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2960:6:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_bce316f0d9d2a3affa97de1d99bb2aac0538e2666d0d8545545ead241ef0ccab","typeString":"literal_string \"Swap\""},"value":"Swap"},"src":"2918:48:88","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":12333,"nodeType":"ExpressionStatement","src":"2918:48:88"},{"expression":{"id":12340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12334,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"2977:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12337,"indexExpression":{"expression":{"id":12335,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2990:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2293,"src":"2990:26:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2977:40:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":12264,"src":"2977:51:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3031:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2977:58:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12341,"nodeType":"ExpressionStatement","src":"2977:58:88"},{"expression":{"id":12348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12342,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"3045:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12345,"indexExpression":{"expression":{"id":12343,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"3058:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2293,"src":"3058:26:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3045:40:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":12266,"src":"3045:45:88","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"466c617368204c6f616e","id":12347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3093:12:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d188f900809220270edc6e745970c5466117e6e8142df613514e4ca80ce2e34","typeString":"literal_string \"Flash Loan\""},"value":"Flash Loan"},"src":"3045:60:88","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":12349,"nodeType":"ExpressionStatement","src":"3045:60:88"}]},"id":12351,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12289,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"2004:5:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":12290,"modifierName":{"id":12288,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1980:23:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1980:30:88"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12282,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12351,"src":"1901:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":12281,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1901:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":12284,"mutability":"mutable","name":"maxYieldValue","nodeType":"VariableDeclaration","scope":12351,"src":"1923:21:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12283,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12286,"mutability":"mutable","name":"maxAUMValue","nodeType":"VariableDeclaration","scope":12351,"src":"1954:19:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12285,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1891:88:88"},"returnParameters":{"id":12291,"nodeType":"ParameterList","parameters":[],"src":"2011:0:88"},"scope":12638,"src":"1880:1232:88","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12363,"nodeType":"Block","src":"3161:85:88","statements":[{"expression":{"arguments":[{"arguments":[{"id":12357,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12353,"src":"3194:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12356,"name":"isValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"3179:14:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":12358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3179:23:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e74206665652074797065","id":12359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3204:23:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""},"value":"Non-existent fee type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""}],"id":12355,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3171:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3171:57:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12361,"nodeType":"ExpressionStatement","src":"3171:57:88"},{"id":12362,"nodeType":"PlaceholderStatement","src":"3238:1:88"}]},"id":12364,"name":"withValidFeeType","nodeType":"ModifierDefinition","parameters":{"id":12354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12353,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12364,"src":"3144:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12352,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3143:17:88"},"src":"3118:128:88","virtual":false,"visibility":"internal"},{"baseFunctions":[2236],"body":{"id":12394,"nodeType":"Block","src":"3427:159:88","statements":[{"expression":{"arguments":[{"id":12383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3445:33:88","subExpression":{"expression":{"baseExpression":{"id":12379,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"3446:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12381,"indexExpression":{"id":12380,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12366,"src":"3459:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3446:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":12264,"src":"3446:32:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"466565207479706520616c72656164792072656769737465726564","id":12384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:29:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""},"value":"Fee type already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""}],"id":12378,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3437:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3437:73:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12386,"nodeType":"ExpressionStatement","src":"3437:73:88"},{"expression":{"arguments":[{"id":12388,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12366,"src":"3537:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12389,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12368,"src":"3546:4:88","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12390,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12370,"src":"3552:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12391,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12372,"src":"3566:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12387,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12453,"src":"3520:16:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":12392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:59:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12393,"nodeType":"ExpressionStatement","src":"3520:59:88"}]},"functionSelector":"7268d6ce","id":12395,"implemented":true,"kind":"function","modifiers":[{"id":12376,"modifierName":{"id":12375,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"3414:12:88","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3414:12:88"}],"name":"registerFeeType","nodeType":"FunctionDefinition","overrides":{"id":12374,"nodeType":"OverrideSpecifier","overrides":[],"src":"3405:8:88"},"parameters":{"id":12373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12366,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12395,"src":"3286:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12365,"name":"uint256","nodeType":"ElementaryTypeName","src":"3286:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12368,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":12395,"src":"3311:18:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12367,"name":"string","nodeType":"ElementaryTypeName","src":"3311:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12370,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":12395,"src":"3339:20:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12369,"name":"uint256","nodeType":"ElementaryTypeName","src":"3339:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12372,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":12395,"src":"3369:20:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12371,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3276:119:88"},"returnParameters":{"id":12377,"nodeType":"ParameterList","parameters":[],"src":"3427:0:88"},"scope":12638,"src":"3252:334:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12452,"nodeType":"Block","src":"3745:543:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12407,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12401,"src":"3764:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3779:1:88","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3764:16:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12410,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3763:18:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12411,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12401,"src":"3786:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12412,"name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12274,"src":"3802:28:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3786:44:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3785:46:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3763:68:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206d6178696d756d206665652070657263656e74616765","id":12416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3833:32:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""},"value":"Invalid maximum fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""}],"id":12406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3755:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:111:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12418,"nodeType":"ExpressionStatement","src":"3755:111:88"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12420,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12403,"src":"3884:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12421,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12401,"src":"3900:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3884:28:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420696e697469616c2070657263656e74616765","id":12423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:28:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""},"value":"Invalid initial percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""}],"id":12419,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3876:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3876:67:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12425,"nodeType":"ExpressionStatement","src":"3876:67:88"},{"expression":{"id":12439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12426,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"3954:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12428,"indexExpression":{"id":12427,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"3967:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3954:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":12430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4016:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":12431,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12399,"src":"4040:4:88","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12432,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12401,"src":"4067:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"4067:21:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":12434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4067:23:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12435,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12403,"src":"4111:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"4111:21:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":12437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4111:23:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":12429,"name":"FeeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"3978:11:88","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FeeTypeData_$12267_storage_ptr_$","typeString":"type(struct ProtocolFeePercentagesProvider.FeeTypeData storage pointer)"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["registered","name","maximum","value"],"nodeType":"FunctionCall","src":"3978:167:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_memory_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData memory"}},"src":"3954:191:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12440,"nodeType":"ExpressionStatement","src":"3954:191:88"},{"eventCall":{"arguments":[{"id":12442,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"4187:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12443,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12399,"src":"4196:4:88","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12444,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12401,"src":"4202:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12441,"name":"ProtocolFeeTypeRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2218,"src":"4161:25:88","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256)"}},"id":12445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4161:54:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12446,"nodeType":"EmitStatement","src":"4156:59:88"},{"eventCall":{"arguments":[{"id":12448,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"4259:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12449,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12403,"src":"4268:12:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12447,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"4230:28:88","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4230:51:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12451,"nodeType":"EmitStatement","src":"4225:56:88"}]},"id":12453,"implemented":true,"kind":"function","modifiers":[],"name":"_registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":12404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12397,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12453,"src":"3627:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12396,"name":"uint256","nodeType":"ElementaryTypeName","src":"3627:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12399,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":12453,"src":"3652:18:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12398,"name":"string","nodeType":"ElementaryTypeName","src":"3652:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12401,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":12453,"src":"3680:20:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12400,"name":"uint256","nodeType":"ElementaryTypeName","src":"3680:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12403,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":12453,"src":"3710:20:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12402,"name":"uint256","nodeType":"ElementaryTypeName","src":"3710:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3617:119:88"},"returnParameters":{"id":12405,"nodeType":"ParameterList","parameters":[],"src":"3745:0:88"},"scope":12638,"src":"3592:696:88","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2244],"body":{"id":12466,"nodeType":"Block","src":"4371:56:88","statements":[{"expression":{"expression":{"baseExpression":{"id":12461,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"4388:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12463,"indexExpression":{"id":12462,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12455,"src":"4401:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4388:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":12264,"src":"4388:32:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12460,"id":12465,"nodeType":"Return","src":"4381:39:88"}]},"functionSelector":"868897a0","id":12467,"implemented":true,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","overrides":{"id":12457,"nodeType":"OverrideSpecifier","overrides":[],"src":"4347:8:88"},"parameters":{"id":12456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12455,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12467,"src":"4318:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12454,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4317:17:88"},"returnParameters":{"id":12460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12459,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12467,"src":"4365:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12458,"name":"bool","nodeType":"ElementaryTypeName","src":"4365:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4364:6:88"},"scope":12638,"src":"4294:133:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2254],"body":{"id":12486,"nodeType":"Block","src":"4605:69:88","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12471,"src":"4622:5:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":12482,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12469,"src":"4659:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12481,"name":"getFeeTypeMaximumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12620,"src":"4631:27:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":12483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4631:36:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4622:45:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12479,"id":12485,"nodeType":"Return","src":"4615:52:88"}]},"functionSelector":"74735e0b","id":12487,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12475,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12469,"src":"4569:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12476,"modifierName":{"id":12474,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12364,"src":"4552:16:88","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4552:25:88"}],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":12473,"nodeType":"OverrideSpecifier","overrides":[],"src":"4535:8:88"},"parameters":{"id":12472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12469,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12487,"src":"4467:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12468,"name":"uint256","nodeType":"ElementaryTypeName","src":"4467:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12471,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12487,"src":"4484:13:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12470,"name":"uint256","nodeType":"ElementaryTypeName","src":"4484:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4466:32:88"},"returnParameters":{"id":12479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12478,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12487,"src":"4595:4:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12477,"name":"bool","nodeType":"ElementaryTypeName","src":"4595:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4594:6:88"},"scope":12638,"src":"4433:241:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2262],"body":{"id":12547,"nodeType":"Block","src":"4838:495:88","statements":[{"expression":{"arguments":[{"arguments":[{"id":12502,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"4881:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12503,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12491,"src":"4890:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12501,"name":"isValidFeeTypePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12487,"src":"4856:24:88","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) view returns (bool)"}},"id":12504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4856:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206665652070657263656e74616765","id":12505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4901:24:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""},"value":"Invalid fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""}],"id":12500,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4848:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4848:78:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12507,"nodeType":"ExpressionStatement","src":"4848:78:88"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12508,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"4941:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12509,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"4952:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2290,"src":"4952:20:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4941:31:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12519,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"5062:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12520,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5073:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2293,"src":"5073:26:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5062:37:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12539,"nodeType":"Block","src":"5190:74:88","statements":[{"expression":{"id":12537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12530,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"5204:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12532,"indexExpression":{"id":12531,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"5217:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5204:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":12260,"src":"5204:27:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12534,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12491,"src":"5234:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"5234:17:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":12536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5234:19:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5204:49:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":12538,"nodeType":"ExpressionStatement","src":"5204:49:88"}]},"id":12540,"nodeType":"IfStatement","src":"5058:206:88","trueBody":{"id":12529,"nodeType":"Block","src":"5101:83:88","statements":[{"expression":{"arguments":[{"id":12526,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12491,"src":"5164:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12523,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"5115:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3369,"src":"5115:48:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":12527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5115:58:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12528,"nodeType":"ExpressionStatement","src":"5115:58:88"}]}},"id":12541,"nodeType":"IfStatement","src":"4937:327:88","trueBody":{"id":12518,"nodeType":"Block","src":"4974:78:88","statements":[{"expression":{"arguments":[{"id":12515,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12491,"src":"5032:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12512,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"4988:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3364,"src":"4988:43:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4988:53:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12517,"nodeType":"ExpressionStatement","src":"4988:53:88"}]}},{"eventCall":{"arguments":[{"id":12543,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"5308:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12544,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12491,"src":"5317:8:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12542,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"5279:28:88","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5279:47:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12546,"nodeType":"EmitStatement","src":"5274:52:88"}]},"functionSelector":"4d44f0e9","id":12548,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12495,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"4804:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12496,"modifierName":{"id":12494,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12364,"src":"4787:16:88","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4787:25:88"},{"id":12498,"modifierName":{"id":12497,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"4821:12:88","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4821:12:88"}],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":12493,"nodeType":"OverrideSpecifier","overrides":[],"src":"4770:8:88"},"parameters":{"id":12492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12489,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12548,"src":"4710:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12488,"name":"uint256","nodeType":"ElementaryTypeName","src":"4710:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12491,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":12548,"src":"4727:16:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12490,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4709:35:88"},"returnParameters":{"id":12499,"nodeType":"ParameterList","parameters":[],"src":"4838:0:88"},"scope":12638,"src":"4680:653:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2270],"body":{"id":12585,"nodeType":"Block","src":"5453:326:88","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12559,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5467:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12560,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5478:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2290,"src":"5478:20:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5467:31:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12568,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5587:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12569,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5598:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2293,"src":"5598:26:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5587:37:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12582,"nodeType":"Block","src":"5714:59:88","statements":[{"expression":{"expression":{"baseExpression":{"id":12577,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"5735:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12579,"indexExpression":{"id":12578,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5748:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5735:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":12260,"src":"5735:27:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12558,"id":12581,"nodeType":"Return","src":"5728:34:88"}]},"id":12583,"nodeType":"IfStatement","src":"5583:190:88","trueBody":{"id":12576,"nodeType":"Block","src":"5626:82:88","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12572,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"5647:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"5647:48:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5647:50:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12558,"id":12575,"nodeType":"Return","src":"5640:57:88"}]}},"id":12584,"nodeType":"IfStatement","src":"5463:310:88","trueBody":{"id":12567,"nodeType":"Block","src":"5500:77:88","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12563,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12258,"src":"5521:22:88","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3374,"src":"5521:43:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":12565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5521:45:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12558,"id":12566,"nodeType":"Return","src":"5514:52:88"}]}}]},"functionSelector":"1a7c3263","id":12586,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12554,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"5426:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12555,"modifierName":{"id":12553,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12364,"src":"5409:16:88","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5409:25:88"}],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":12552,"nodeType":"OverrideSpecifier","overrides":[],"src":"5400:8:88"},"parameters":{"id":12551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12550,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12586,"src":"5369:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12549,"name":"uint256","nodeType":"ElementaryTypeName","src":"5369:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5368:17:88"},"returnParameters":{"id":12558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12557,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12586,"src":"5444:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12556,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5443:9:88"},"scope":12638,"src":"5339:440:88","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2278],"body":{"id":12619,"nodeType":"Block","src":"5948:305:88","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12597,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12588,"src":"5962:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12598,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5973:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2290,"src":"5973:20:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5962:31:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12604,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12588,"src":"6070:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12605,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"6081:15:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2300_$","typeString":"type(library ProtocolFeeType)"}},"id":12606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2293,"src":"6081:26:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6070:37:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12616,"nodeType":"Block","src":"6186:61:88","statements":[{"expression":{"expression":{"baseExpression":{"id":12611,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"6207:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12613,"indexExpression":{"id":12612,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12588,"src":"6220:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6207:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maximum","nodeType":"MemberAccess","referencedDeclaration":12262,"src":"6207:29:88","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":12596,"id":12615,"nodeType":"Return","src":"6200:36:88"}]},"id":12617,"nodeType":"IfStatement","src":"6066:181:88","trueBody":{"id":12610,"nodeType":"Block","src":"6109:71:88","statements":[{"expression":{"id":12608,"name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12280,"src":"6130:39:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12596,"id":12609,"nodeType":"Return","src":"6123:46:88"}]}},"id":12618,"nodeType":"IfStatement","src":"5958:289:88","trueBody":{"id":12603,"nodeType":"Block","src":"5995:65:88","statements":[{"expression":{"id":12601,"name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12277,"src":"6016:33:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12596,"id":12602,"nodeType":"Return","src":"6009:40:88"}]}}]},"functionSelector":"5e2cae4c","id":12620,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12592,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12588,"src":"5909:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12593,"modifierName":{"id":12591,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12364,"src":"5892:16:88","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5892:25:88"}],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","overrides":{"id":12590,"nodeType":"OverrideSpecifier","overrides":[],"src":"5875:8:88"},"parameters":{"id":12589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12588,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12620,"src":"5822:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12587,"name":"uint256","nodeType":"ElementaryTypeName","src":"5822:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5821:17:88"},"returnParameters":{"id":12596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12595,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12620,"src":"5935:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12594,"name":"uint256","nodeType":"ElementaryTypeName","src":"5935:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5934:9:88"},"scope":12638,"src":"5785:468:88","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2286],"body":{"id":12636,"nodeType":"Block","src":"6373:50:88","statements":[{"expression":{"expression":{"baseExpression":{"id":12631,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"6390:12:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$12267_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":12633,"indexExpression":{"id":12632,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12622,"src":"6403:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6390:21:88","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$12267_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":12634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":12266,"src":"6390:26:88","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":12630,"id":12635,"nodeType":"Return","src":"6383:33:88"}]},"functionSelector":"b661eda1","id":12637,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":12626,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12622,"src":"6340:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12627,"modifierName":{"id":12625,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12364,"src":"6323:16:88","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"6323:25:88"}],"name":"getFeeTypeName","nodeType":"FunctionDefinition","overrides":{"id":12624,"nodeType":"OverrideSpecifier","overrides":[],"src":"6314:8:88"},"parameters":{"id":12623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12622,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":12637,"src":"6283:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12621,"name":"uint256","nodeType":"ElementaryTypeName","src":"6283:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6282:17:88"},"returnParameters":{"id":12630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12629,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12637,"src":"6358:13:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12628,"name":"string","nodeType":"ElementaryTypeName","src":"6358:6:88","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6357:15:88"},"scope":12638,"src":"6259:164:88","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":12639,"src":"1101:5324:88"}],"src":"688:5738:88"},"id":88},"contracts/ProtocolFeeSplitter.sol":{"ast":{"absolutePath":"contracts/ProtocolFeeSplitter.sol","exportedSymbols":{"Pool":[12652],"ProtocolFeeSplitter":[13183]},"id":13184,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12640,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:89"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","id":12641,"nodeType":"ImportDirective","scope":13184,"sourceUnit":2427,"src":"721:90:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","id":12642,"nodeType":"ImportDirective","scope":13184,"sourceUnit":2501,"src":"812:93:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12643,"nodeType":"ImportDirective","scope":13184,"sourceUnit":3865,"src":"906:65:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":12644,"nodeType":"ImportDirective","scope":13184,"sourceUnit":5267,"src":"972:88:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":12645,"nodeType":"ImportDirective","scope":13184,"sourceUnit":5906,"src":"1061:72:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","id":12646,"nodeType":"ImportDirective","scope":13184,"sourceUnit":3400,"src":"1134:81:89","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":12652,"linearizedBaseContracts":[12652],"name":"Pool","nodeType":"ContractDefinition","nodes":[{"functionSelector":"893d20e8","id":12651,"implemented":false,"kind":"function","modifiers":[],"name":"getOwner","nodeType":"FunctionDefinition","parameters":{"id":12647,"nodeType":"ParameterList","parameters":[],"src":"1255:2:89"},"returnParameters":{"id":12650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12649,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12651,"src":"1281:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12648,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1280:9:89"},"scope":12652,"src":"1238:52:89","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13184,"src":"1217:75:89"},{"abstract":false,"baseContracts":[{"baseName":{"id":12654,"name":"IProtocolFeeSplitter","nodeType":"UserDefinedTypeName","referencedDeclaration":2426,"src":"2035:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeSplitter_$2426","typeString":"contract IProtocolFeeSplitter"}},"id":12655,"nodeType":"InheritanceSpecifier","src":"2035:20:89"},{"baseName":{"id":12656,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"2057:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":12657,"nodeType":"InheritanceSpecifier","src":"2057:23:89"}],"contractDependencies":[1502,2426,4423,5266],"contractKind":"contract","documentation":{"id":12653,"nodeType":"StructuredDocumentation","src":"1294:708:89","text":" @notice Support revenue sharing for individual pools between the DAO and designated recipients.\n @dev This contract is responsible for splitting the BPT profits collected by the ProtocolFeeCollector between\n a beneficiary specified by the pool's owner and the DAO fee recipient (e.g., the Balancer DAO treasury account).\n Only BPT tokens are involved in the split: any other tokens would remain in the `ProtocolFeeCollector`.\n BPT tokens are withdrawn using the ProtocolFeesWithdrawer, a wrapper around the ProtocolFeesCollector that allows\n governance to prevent certain tokens (on a denyList) from being withdrawn. `collectFees` would fail if the BPT\n token were on this denyList."},"fullyImplemented":true,"id":13183,"linearizedBaseContracts":[13183,5266,4423,1502,2426],"name":"ProtocolFeeSplitter","nodeType":"ContractDefinition","nodes":[{"id":12660,"libraryName":{"id":12658,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"2093:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2087:29:89","typeName":{"id":12659,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":12663,"mutability":"constant","name":"_MAX_REVENUE_SHARE_PERCENTAGE","nodeType":"VariableDeclaration","scope":13183,"src":"2239:62:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":12662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:5:89","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"private"},{"constant":false,"id":12665,"mutability":"immutable","name":"_protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":13183,"src":"2315:65:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":12664,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"2315:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"private"},{"constant":false,"id":12667,"mutability":"mutable","name":"_daoFundsRecipient","nodeType":"VariableDeclaration","scope":13183,"src":"2490:34:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12666,"name":"address","nodeType":"ElementaryTypeName","src":"2490:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":12669,"mutability":"mutable","name":"_defaultRevenueSharePercentage","nodeType":"VariableDeclaration","scope":13183,"src":"2635:46:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12668,"name":"uint256","nodeType":"ElementaryTypeName","src":"2635:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"canonicalName":"ProtocolFeeSplitter.RevenueShareSettings","id":12676,"members":[{"constant":false,"id":12671,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":12676,"src":"2819:37:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":12670,"name":"uint88","nodeType":"ElementaryTypeName","src":"2819:6:89","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"},{"constant":false,"id":12673,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":12676,"src":"2866:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12672,"name":"address","nodeType":"ElementaryTypeName","src":"2866:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12675,"mutability":"mutable","name":"overrideSet","nodeType":"VariableDeclaration","scope":12676,"src":"2895:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12674,"name":"bool","nodeType":"ElementaryTypeName","src":"2895:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"RevenueShareSettings","nodeType":"StructDefinition","scope":13183,"src":"2781:137:89","visibility":"public"},{"constant":false,"id":12680,"mutability":"mutable","name":"_poolSettings","nodeType":"VariableDeclaration","scope":13183,"src":"2954:62:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings)"},"typeName":{"id":12679,"keyType":{"id":12677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2962:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2954:40:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings)"},"valueType":{"id":12678,"name":"RevenueShareSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":12676,"src":"2973:20:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"}}},"visibility":"private"},{"body":{"id":12702,"nodeType":"Block","src":"3205:113:89","statements":[{"expression":{"id":12696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12694,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"3215:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12695,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12682,"src":"3241:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"src":"3215:48:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"id":12697,"nodeType":"ExpressionStatement","src":"3215:48:89"},{"expression":{"id":12700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12698,"name":"_daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"3273:18:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12699,"name":"daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12684,"src":"3294:17:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3273:38:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12701,"nodeType":"ExpressionStatement","src":"3273:38:89"}]},"id":12703,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12687,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12682,"src":"3142:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"id":12688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":2444,"src":"3142:47:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":12689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":12690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":3398,"src":"3142:55:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view external returns (contract IVault)"}},"id":12691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:57:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":12692,"modifierName":{"id":12686,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"3118:23:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"3118:82:89"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12682,"mutability":"mutable","name":"protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":12703,"src":"3035:46:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":12681,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"3035:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"},{"constant":false,"id":12684,"mutability":"mutable","name":"daoFundsRecipient","nodeType":"VariableDeclaration","scope":12703,"src":"3083:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12683,"name":"address","nodeType":"ElementaryTypeName","src":"3083:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3034:75:89"},"returnParameters":{"id":12693,"nodeType":"ParameterList","parameters":[],"src":"3205:0:89"},"scope":13183,"src":"3023:295:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2347],"body":{"id":12712,"nodeType":"Block","src":"3462:42:89","statements":[{"expression":{"id":12710,"name":"_daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"3479:18:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12709,"id":12711,"nodeType":"Return","src":"3472:25:89"}]},"documentation":{"id":12704,"nodeType":"StructuredDocumentation","src":"3348:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"89ee2f26","id":12713,"implemented":true,"kind":"function","modifiers":[],"name":"getDaoFundsRecipient","nodeType":"FunctionDefinition","overrides":{"id":12706,"nodeType":"OverrideSpecifier","overrides":[],"src":"3435:8:89"},"parameters":{"id":12705,"nodeType":"ParameterList","parameters":[],"src":"3418:2:89"},"returnParameters":{"id":12709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12713,"src":"3453:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12707,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:9:89"},"scope":13183,"src":"3389:115:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2353],"body":{"id":12730,"nodeType":"Block","src":"3642:120:89","statements":[{"expression":{"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12722,"name":"_daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"3652:18:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12723,"name":"newDaoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"3673:20:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3652:41:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12725,"nodeType":"ExpressionStatement","src":"3652:41:89"},{"eventCall":{"arguments":[{"id":12727,"name":"newDaoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"3734:20:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12726,"name":"DAOFundsRecipientChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"3709:24:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3709:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12729,"nodeType":"EmitStatement","src":"3704:51:89"}]},"documentation":{"id":12714,"nodeType":"StructuredDocumentation","src":"3510:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"4ca760eb","id":12731,"implemented":true,"kind":"function","modifiers":[{"id":12720,"modifierName":{"id":12719,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"3629:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3629:12:89"}],"name":"setDaoFundsRecipient","nodeType":"FunctionDefinition","overrides":{"id":12718,"nodeType":"OverrideSpecifier","overrides":[],"src":"3620:8:89"},"parameters":{"id":12717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12716,"mutability":"mutable","name":"newDaoFundsRecipient","nodeType":"VariableDeclaration","scope":12731,"src":"3581:28:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12715,"name":"address","nodeType":"ElementaryTypeName","src":"3581:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3580:30:89"},"returnParameters":{"id":12721,"nodeType":"ParameterList","parameters":[],"src":"3642:0:89"},"scope":13183,"src":"3551:211:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2361],"body":{"id":12783,"nodeType":"Block","src":"3895:391:89","statements":[{"assignments":[12741,null],"declarations":[{"constant":false,"id":12741,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12783,"src":"3906:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12740,"name":"address","nodeType":"ElementaryTypeName","src":"3906:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":12747,"initialValue":{"arguments":[{"id":12745,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12734,"src":"3943:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12742,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"3924:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":12743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3924:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":12744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"3924:18:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":12746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3924:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"3905:45:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12749,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3982:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3982:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12752,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12741,"src":"4001:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12751,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12652,"src":"3996:4:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pool_$12652_$","typeString":"type(contract Pool)"}},"id":12753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3996:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Pool_$12652","typeString":"contract Pool"}},"id":12754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOwner","nodeType":"MemberAccess","referencedDeclaration":12651,"src":"3996:19:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3996:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3982:35:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":12759,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4061:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_ProtocolFeeSplitter_$13183","typeString":"contract ProtocolFeeSplitter"}},"id":12760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setPoolBeneficiary","nodeType":"MemberAccess","referencedDeclaration":12784,"src":"4061:23:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) external"}},"id":12761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"4061:32:89","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":12758,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"4049:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":12762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4049:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":12763,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4096:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4096:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12757,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[5245,5265],"referencedDeclaration":5245,"src":"4037:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":12765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4037:70:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3982:125:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":12767,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4121:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":1253,"src":"4121:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12748,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3960:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":12769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3960:196:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12770,"nodeType":"ExpressionStatement","src":"3960:196:89"},{"expression":{"id":12776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12771,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"4167:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12773,"indexExpression":{"id":12772,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12734,"src":"4181:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4167:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":12774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"4167:33:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12775,"name":"newBeneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"4203:14:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4167:50:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12777,"nodeType":"ExpressionStatement","src":"4167:50:89"},{"eventCall":{"arguments":[{"id":12779,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12734,"src":"4256:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12780,"name":"newBeneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12736,"src":"4264:14:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12778,"name":"PoolBeneficiaryChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"4233:22:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":12781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4233:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12782,"nodeType":"EmitStatement","src":"4228:51:89"}]},"documentation":{"id":12732,"nodeType":"StructuredDocumentation","src":"3768:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"7ab74be4","id":12784,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolBeneficiary","nodeType":"FunctionDefinition","overrides":{"id":12738,"nodeType":"OverrideSpecifier","overrides":[],"src":"3886:8:89"},"parameters":{"id":12737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12734,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12784,"src":"3837:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3837:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12736,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":12784,"src":"3853:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12735,"name":"address","nodeType":"ElementaryTypeName","src":"3853:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3836:40:89"},"returnParameters":{"id":12739,"nodeType":"ParameterList","parameters":[],"src":"3895:0:89"},"scope":13183,"src":"3809:477:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2373],"body":{"id":12811,"nodeType":"Block","src":"4606:180:89","statements":[{"assignments":[12798],"declarations":[{"constant":false,"id":12798,"mutability":"mutable","name":"settings","nodeType":"VariableDeclaration","scope":12811,"src":"4616:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"},"typeName":{"id":12797,"name":"RevenueShareSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":12676,"src":"4616:20:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"}},"visibility":"internal"}],"id":12802,"initialValue":{"baseExpression":{"id":12799,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"4655:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12801,"indexExpression":{"id":12800,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12787,"src":"4669:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4655:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4616:60:89"},{"expression":{"components":[{"expression":{"id":12803,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"4695:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":12804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"4695:39:89","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},{"expression":{"id":12805,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"4736:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":12806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"4736:20:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12807,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"4758:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":12808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"overrideSet","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"4758:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12809,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4694:85:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint88_$_t_address_$_t_bool_$","typeString":"tuple(uint88,address,bool)"}},"functionReturnParameters":12796,"id":12810,"nodeType":"Return","src":"4687:92:89"}]},"documentation":{"id":12785,"nodeType":"StructuredDocumentation","src":"4323:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"d6c9cd58","id":12812,"implemented":true,"kind":"function","modifiers":[],"name":"getRevenueShareSettings","nodeType":"FunctionDefinition","overrides":{"id":12789,"nodeType":"OverrideSpecifier","overrides":[],"src":"4451:8:89"},"parameters":{"id":12788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12787,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12812,"src":"4397:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4397:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4396:16:89"},"returnParameters":{"id":12796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12791,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":12812,"src":"4490:38:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12790,"name":"uint256","nodeType":"ElementaryTypeName","src":"4490:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12793,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":12812,"src":"4542:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12792,"name":"address","nodeType":"ElementaryTypeName","src":"4542:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12795,"mutability":"mutable","name":"overrideSet","nodeType":"VariableDeclaration","scope":12812,"src":"4575:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12794,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4476:125:89"},"scope":13183,"src":"4364:422:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2379],"body":{"id":12821,"nodeType":"Block","src":"4918:54:89","statements":[{"expression":{"id":12819,"name":"_defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12669,"src":"4935:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12818,"id":12820,"nodeType":"Return","src":"4928:37:89"}]},"documentation":{"id":12813,"nodeType":"StructuredDocumentation","src":"4792:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"644b3f1b","id":12822,"implemented":true,"kind":"function","modifiers":[],"name":"getDefaultRevenueSharePercentage","nodeType":"FunctionDefinition","overrides":{"id":12815,"nodeType":"OverrideSpecifier","overrides":[],"src":"4891:8:89"},"parameters":{"id":12814,"nodeType":"ParameterList","parameters":[],"src":"4874:2:89"},"returnParameters":{"id":12818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12817,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12822,"src":"4909:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12816,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4908:9:89"},"scope":13183,"src":"4833:139:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2385],"body":{"id":12847,"nodeType":"Block","src":"5131:319:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12832,"name":"defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"5163:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12833,"name":"_MAX_REVENUE_SHARE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12663,"src":"5196:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5163:62:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":12835,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5239:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":12836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"MemberAccess","referencedDeclaration":1484,"src":"5239:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12831,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5141:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":12837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5141:147:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12838,"nodeType":"ExpressionStatement","src":"5141:147:89"},{"expression":{"id":12841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12839,"name":"_defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12669,"src":"5298:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12840,"name":"defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"5331:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5298:62:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12842,"nodeType":"ExpressionStatement","src":"5298:62:89"},{"eventCall":{"arguments":[{"id":12844,"name":"defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"5413:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12843,"name":"DefaultRevenueSharePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"5376:36:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5376:67:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12846,"nodeType":"EmitStatement","src":"5371:72:89"}]},"documentation":{"id":12823,"nodeType":"StructuredDocumentation","src":"4978:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"92b2b1f6","id":12848,"implemented":true,"kind":"function","modifiers":[{"id":12829,"modifierName":{"id":12828,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"5118:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5118:12:89"}],"name":"setDefaultRevenueSharePercentage","nodeType":"FunctionDefinition","overrides":{"id":12827,"nodeType":"OverrideSpecifier","overrides":[],"src":"5109:8:89"},"parameters":{"id":12826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12825,"mutability":"mutable","name":"defaultRevenueSharePercentage","nodeType":"VariableDeclaration","scope":12848,"src":"5061:37:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12824,"name":"uint256","nodeType":"ElementaryTypeName","src":"5061:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5060:39:89"},"returnParameters":{"id":12830,"nodeType":"ParameterList","parameters":[],"src":"5131:0:89"},"scope":13183,"src":"5019:431:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2393],"body":{"id":12889,"nodeType":"Block","src":"5611:339:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12860,"name":"revenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12853,"src":"5630:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":12861,"name":"_MAX_REVENUE_SHARE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12663,"src":"5656:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5630:55:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":12863,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5687:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":12864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"MemberAccess","referencedDeclaration":1484,"src":"5687:39:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12859,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"5621:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":12865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5621:106:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12866,"nodeType":"ExpressionStatement","src":"5621:106:89"},{"expression":{"id":12875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12867,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"5737:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12869,"indexExpression":{"id":12868,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"5751:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5737:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":12870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"5737:52:89","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12873,"name":"revenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12853,"src":"5799:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5792:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":12871,"name":"uint88","nodeType":"ElementaryTypeName","src":"5792:6:89","typeDescriptions":{}}},"id":12874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5792:30:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"5737:85:89","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"id":12876,"nodeType":"ExpressionStatement","src":"5737:85:89"},{"expression":{"id":12882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12877,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"5832:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12879,"indexExpression":{"id":12878,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"5846:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5832:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":12880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"overrideSet","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"5832:33:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5868:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5832:40:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12883,"nodeType":"ExpressionStatement","src":"5832:40:89"},{"eventCall":{"arguments":[{"id":12885,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12851,"src":"5912:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12886,"name":"revenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12853,"src":"5920:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12884,"name":"PoolRevenueShareChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"5888:23:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":12887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5888:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12888,"nodeType":"EmitStatement","src":"5883:60:89"}]},"documentation":{"id":12849,"nodeType":"StructuredDocumentation","src":"5456:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"1cb594fc","id":12890,"implemented":true,"kind":"function","modifiers":[{"id":12857,"modifierName":{"id":12856,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"5598:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5598:12:89"}],"name":"setRevenueSharePercentage","nodeType":"FunctionDefinition","overrides":{"id":12855,"nodeType":"OverrideSpecifier","overrides":[],"src":"5589:8:89"},"parameters":{"id":12854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12851,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12890,"src":"5532:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12850,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5532:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12853,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":12890,"src":"5548:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12852,"name":"uint256","nodeType":"ElementaryTypeName","src":"5548:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5531:48:89"},"returnParameters":{"id":12858,"nodeType":"ParameterList","parameters":[],"src":"5611:0:89"},"scope":13183,"src":"5497:453:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2399],"body":{"id":12910,"nodeType":"Block","src":"6253:105:89","statements":[{"expression":{"id":12904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12899,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"6263:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12901,"indexExpression":{"id":12900,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"6277:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6263:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":12902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"overrideSet","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"6263:33:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":12903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6299:5:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6263:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12905,"nodeType":"ExpressionStatement","src":"6263:41:89"},{"eventCall":{"arguments":[{"id":12907,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"6344:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12906,"name":"PoolRevenueShareCleared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2327,"src":"6320:23:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":12908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6320:31:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12909,"nodeType":"EmitStatement","src":"6315:36:89"}]},"documentation":{"id":12891,"nodeType":"StructuredDocumentation","src":"5956:208:89","text":" @notice Ignore any previously set revenue sharing percentage, and begin using the default.\n @param poolId - the poolId of the pool to begin using the default revenue share percentage."},"functionSelector":"3b0cf663","id":12911,"implemented":true,"kind":"function","modifiers":[{"id":12897,"modifierName":{"id":12896,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"6240:12:89","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6240:12:89"}],"name":"clearRevenueSharePercentage","nodeType":"FunctionDefinition","overrides":{"id":12895,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:89"},"parameters":{"id":12894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12893,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12911,"src":"6206:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6206:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6205:16:89"},"returnParameters":{"id":12898,"nodeType":"ParameterList","parameters":[],"src":"6253:0:89"},"scope":13183,"src":"6169:189:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2409],"body":{"id":12941,"nodeType":"Block","src":"6567:139:89","statements":[{"assignments":[12923,null],"declarations":[{"constant":false,"id":12923,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":12941,"src":"6578:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12922,"name":"address","nodeType":"ElementaryTypeName","src":"6578:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":12929,"initialValue":{"arguments":[{"id":12927,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12914,"src":"6615:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12924,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"6596:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":12925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6596:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":12926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"6596:18:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":12928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6596:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"6577:45:89"},{"assignments":[12931],"declarations":[{"constant":false,"id":12931,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":12941,"src":"6632:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":12930,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6632:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12935,"initialValue":{"arguments":[{"id":12933,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12923,"src":"6652:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12932,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6645:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":12934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6645:12:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6632:25:89"},{"expression":{"arguments":[{"id":12937,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12931,"src":"6687:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":12938,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12914,"src":"6692:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12936,"name":"_getAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"6675:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$1722_$_t_bytes32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC20,bytes32) view returns (uint256,uint256)"}},"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6675:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":12921,"id":12940,"nodeType":"Return","src":"6668:31:89"}]},"documentation":{"id":12912,"nodeType":"StructuredDocumentation","src":"6412:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"9d8669d3","id":12942,"implemented":true,"kind":"function","modifiers":[],"name":"getAmounts","nodeType":"FunctionDefinition","overrides":{"id":12916,"nodeType":"OverrideSpecifier","overrides":[],"src":"6503:8:89"},"parameters":{"id":12915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12914,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12942,"src":"6473:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6473:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6472:16:89"},"returnParameters":{"id":12921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12918,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":12942,"src":"6521:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12917,"name":"uint256","nodeType":"ElementaryTypeName","src":"6521:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12920,"mutability":"mutable","name":"daoAmount","nodeType":"VariableDeclaration","scope":12942,"src":"6548:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12919,"name":"uint256","nodeType":"ElementaryTypeName","src":"6548:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6520:46:89"},"scope":13183,"src":"6453:253:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2419],"body":{"id":13003,"nodeType":"Block","src":"6863:448:89","statements":[{"assignments":[12954,null],"declarations":[{"constant":false,"id":12954,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":13003,"src":"6874:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12953,"name":"address","nodeType":"ElementaryTypeName","src":"6874:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":12960,"initialValue":{"arguments":[{"id":12958,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12945,"src":"6911:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12955,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"6892:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":12956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6892:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":12957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3550,"src":"6892:18:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6892:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3523_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"6873:45:89"},{"assignments":[12962],"declarations":[{"constant":false,"id":12962,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":13003,"src":"6928:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":12961,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6928:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12966,"initialValue":{"arguments":[{"id":12964,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12954,"src":"6948:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12963,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6941:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":12965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6941:12:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6928:25:89"},{"assignments":[12968],"declarations":[{"constant":false,"id":12968,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":13003,"src":"6963:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12967,"name":"address","nodeType":"ElementaryTypeName","src":"6963:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12973,"initialValue":{"expression":{"baseExpression":{"id":12969,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"6985:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":12971,"indexExpression":{"id":12970,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12945,"src":"6999:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6985:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":12972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"6985:33:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6963:55:89"},{"expression":{"id":12981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12974,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"7030:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12975,"name":"daoAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12951,"src":"7049:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12976,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7029:30:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12978,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12962,"src":"7074:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":12979,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12945,"src":"7079:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12977,"name":"_getAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"7062:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$1722_$_t_bytes32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC20,bytes32) view returns (uint256,uint256)"}},"id":12980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7062:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7029:57:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12982,"nodeType":"ExpressionStatement","src":"7029:57:89"},{"expression":{"arguments":[{"id":12984,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12962,"src":"7110:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":12985,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"7115:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12986,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12968,"src":"7134:11:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12983,"name":"_withdrawBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13071,"src":"7097:12:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$__$","typeString":"function (contract IERC20,uint256,address)"}},"id":12987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7097:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12988,"nodeType":"ExpressionStatement","src":"7097:49:89"},{"expression":{"arguments":[{"id":12990,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12962,"src":"7169:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":12991,"name":"daoAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12951,"src":"7174:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12992,"name":"_daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"7185:18:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12989,"name":"_withdrawBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13071,"src":"7156:12:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$__$","typeString":"function (contract IERC20,uint256,address)"}},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7156:48:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12994,"nodeType":"ExpressionStatement","src":"7156:48:89"},{"eventCall":{"arguments":[{"id":12996,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12945,"src":"7234:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12997,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12968,"src":"7242:11:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12998,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"7255:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12999,"name":"_daoFundsRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"7274:18:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13000,"name":"daoAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12951,"src":"7294:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12995,"name":"FeesCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2317,"src":"7220:13:89","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256,address,uint256)"}},"id":13001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7220:84:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13002,"nodeType":"EmitStatement","src":"7215:89:89"}]},"documentation":{"id":12943,"nodeType":"StructuredDocumentation","src":"6712:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"817db73b","id":13004,"implemented":true,"kind":"function","modifiers":[],"name":"collectFees","nodeType":"FunctionDefinition","overrides":{"id":12947,"nodeType":"OverrideSpecifier","overrides":[],"src":"6799:8:89"},"parameters":{"id":12946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12945,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":13004,"src":"6774:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6774:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6773:16:89"},"returnParameters":{"id":12952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12949,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":13004,"src":"6817:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12948,"name":"uint256","nodeType":"ElementaryTypeName","src":"6817:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12951,"mutability":"mutable","name":"daoAmount","nodeType":"VariableDeclaration","scope":13004,"src":"6844:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12950,"name":"uint256","nodeType":"ElementaryTypeName","src":"6844:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6816:46:89"},"scope":13183,"src":"6753:558:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2425],"body":{"id":13013,"nodeType":"Block","src":"7473:47:89","statements":[{"expression":{"id":13011,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"7490:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"functionReturnParameters":13010,"id":13012,"nodeType":"Return","src":"7483:30:89"}]},"documentation":{"id":13005,"nodeType":"StructuredDocumentation","src":"7338:36:89","text":"@inheritdoc IProtocolFeeSplitter"},"functionSelector":"4f4f4bc7","id":13014,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeesWithdrawer","nodeType":"FunctionDefinition","overrides":{"id":13007,"nodeType":"OverrideSpecifier","overrides":[],"src":"7430:8:89"},"parameters":{"id":13006,"nodeType":"ParameterList","parameters":[],"src":"7413:2:89"},"returnParameters":{"id":13010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13009,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13014,"src":"7448:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":13008,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"7448:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"src":"7447:25:89"},"scope":13183,"src":"7379:141:89","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":13070,"nodeType":"Block","src":"7653:300:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13023,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13018,"src":"7667:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7677:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7667:11:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13028,"nodeType":"IfStatement","src":"7663:48:89","trueBody":{"id":13027,"nodeType":"Block","src":"7680:31:89","statements":[{"functionReturnParameters":13022,"id":13026,"nodeType":"Return","src":"7694:7:89"}]}},{"assignments":[13032],"declarations":[{"constant":false,"id":13032,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":13070,"src":"7721:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13030,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7721:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13031,"nodeType":"ArrayTypeName","src":"7721:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":13038,"initialValue":{"arguments":[{"hexValue":"31","id":13036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7759:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":13035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7746:12:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":13033,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7750:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13034,"nodeType":"ArrayTypeName","src":"7750:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":13037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7746:15:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7721:40:89"},{"expression":{"id":13043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13039,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13032,"src":"7771:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13041,"indexExpression":{"hexValue":"30","id":13040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7778:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7771:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13042,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13016,"src":"7783:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"7771:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13044,"nodeType":"ExpressionStatement","src":"7771:15:89"},{"assignments":[13049],"declarations":[{"constant":false,"id":13049,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":13070,"src":"7797:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13047,"name":"uint256","nodeType":"ElementaryTypeName","src":"7797:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13048,"nodeType":"ArrayTypeName","src":"7797:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":13055,"initialValue":{"arguments":[{"hexValue":"31","id":13053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7838:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":13052,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7824:13:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":13050,"name":"uint256","nodeType":"ElementaryTypeName","src":"7828:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13051,"nodeType":"ArrayTypeName","src":"7828:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":13054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7824:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7797:43:89"},{"expression":{"id":13060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13056,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13049,"src":"7850:7:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13058,"indexExpression":{"hexValue":"30","id":13057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7858:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7850:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13059,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13018,"src":"7863:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13061,"nodeType":"ExpressionStatement","src":"7850:19:89"},{"expression":{"arguments":[{"id":13065,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13032,"src":"7926:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":13066,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13049,"src":"7934:7:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13067,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13020,"src":"7943:2:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13062,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"7880:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"id":13064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":2487,"src":"7880:45:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":13068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:66:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13069,"nodeType":"ExpressionStatement","src":"7880:66:89"}]},"id":13071,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawBpt","nodeType":"FunctionDefinition","parameters":{"id":13021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13016,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":13071,"src":"7584:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13015,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7584:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13018,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13071,"src":"7604:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13017,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13020,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":13071,"src":"7628:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13019,"name":"address","nodeType":"ElementaryTypeName","src":"7628:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7574:70:89"},"returnParameters":{"id":13022,"nodeType":"ParameterList","parameters":[],"src":"7653:0:89"},"scope":13183,"src":"7553:400:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13134,"nodeType":"Block","src":"8048:795:89","statements":[{"assignments":[13083],"declarations":[{"constant":false,"id":13083,"mutability":"mutable","name":"protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":13134,"src":"8058:46:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":13082,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"8058:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"id":13085,"initialValue":{"id":13084,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"8107:23:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"nodeType":"VariableDeclarationStatement","src":"8058:72:89"},{"assignments":[13087],"declarations":[{"constant":false,"id":13087,"mutability":"mutable","name":"feeCollectorBptBalance","nodeType":"VariableDeclaration","scope":13134,"src":"8140:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13086,"name":"uint256","nodeType":"ElementaryTypeName","src":"8140:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13097,"initialValue":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13092,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13083,"src":"8195:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"id":13093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":2444,"src":"8195:47:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":13094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8195:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}],"id":13091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8187:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13090,"name":"address","nodeType":"ElementaryTypeName","src":"8187:7:89","typeDescriptions":{}}},"id":13095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8187:58:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13088,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13073,"src":"8173:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"8173:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8173:73:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8140:106:89"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13098,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13087,"src":"8260:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8286:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8260:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13106,"nodeType":"IfStatement","src":"8256:71:89","trueBody":{"id":13105,"nodeType":"Block","src":"8289:38:89","statements":[{"expression":{"components":[{"hexValue":"30","id":13101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8311:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8314:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":13103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8310:6:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"functionReturnParameters":13081,"id":13104,"nodeType":"Return","src":"8303:13:89"}]}},{"assignments":[13108],"declarations":[{"constant":false,"id":13108,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":13134,"src":"8337:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13107,"name":"address","nodeType":"ElementaryTypeName","src":"8337:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13113,"initialValue":{"expression":{"baseExpression":{"id":13109,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"8359:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":13111,"indexExpression":{"id":13110,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13075,"src":"8373:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8359:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":13112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"8359:33:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8337:55:89"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13114,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13108,"src":"8407:11:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":13117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8430:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8422:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13115,"name":"address","nodeType":"ElementaryTypeName","src":"8422:7:89","typeDescriptions":{}}},"id":13118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8422:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8407:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13132,"nodeType":"Block","src":"8587:250:89","statements":[{"expression":{"arguments":[{"id":13126,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13087,"src":"8761:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":13128,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13075,"src":"8818:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":13127,"name":"_getPoolBeneficiaryFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"8785:32:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view returns (uint256)"}},"id":13129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8785:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13125,"name":"_computeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"8745:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":13130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8745:81:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":13081,"id":13131,"nodeType":"Return","src":"8738:88:89"}]},"id":13133,"nodeType":"IfStatement","src":"8403:434:89","trueBody":{"id":13124,"nodeType":"Block","src":"8434:147:89","statements":[{"expression":{"components":[{"hexValue":"30","id":13120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8544:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13121,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13087,"src":"8547:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13122,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8543:27:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint256_$","typeString":"tuple(int_const 0,uint256)"}},"functionReturnParameters":13081,"id":13123,"nodeType":"Return","src":"8536:34:89"}]}}]},"id":13135,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmounts","nodeType":"FunctionDefinition","parameters":{"id":13076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13073,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":13135,"src":"7980:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13072,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7980:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13075,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":13135,"src":"7992:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13074,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7992:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7979:28:89"},"returnParameters":{"id":13081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13135,"src":"8030:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13077,"name":"uint256","nodeType":"ElementaryTypeName","src":"8030:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13080,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13135,"src":"8039:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13079,"name":"uint256","nodeType":"ElementaryTypeName","src":"8039:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8029:18:89"},"scope":13183,"src":"7959:884:89","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":13160,"nodeType":"Block","src":"9019:137:89","statements":[{"expression":{"id":13151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13146,"name":"ownerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13142,"src":"9029:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13149,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13139,"src":"9074:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13147,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"9043:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"9043:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9043:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9029:59:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13152,"nodeType":"ExpressionStatement","src":"9029:59:89"},{"expression":{"id":13158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13153,"name":"daoAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13144,"src":"9098:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13156,"name":"ownerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13142,"src":"9137:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13154,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"9110:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5602,"src":"9110:26:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9110:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9098:51:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13159,"nodeType":"ExpressionStatement","src":"9098:51:89"}]},"id":13161,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAmounts","nodeType":"FunctionDefinition","parameters":{"id":13140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13137,"mutability":"mutable","name":"feeCollectorBptBalance","nodeType":"VariableDeclaration","scope":13161,"src":"8874:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13136,"name":"uint256","nodeType":"ElementaryTypeName","src":"8874:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13139,"mutability":"mutable","name":"feePercentage","nodeType":"VariableDeclaration","scope":13161,"src":"8906:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8906:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8873:55:89"},"returnParameters":{"id":13145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13142,"mutability":"mutable","name":"ownerAmount","nodeType":"VariableDeclaration","scope":13161,"src":"8975:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13141,"name":"uint256","nodeType":"ElementaryTypeName","src":"8975:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13144,"mutability":"mutable","name":"daoAmount","nodeType":"VariableDeclaration","scope":13161,"src":"8996:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13143,"name":"uint256","nodeType":"ElementaryTypeName","src":"8996:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8974:40:89"},"scope":13183,"src":"8849:307:89","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13181,"nodeType":"Block","src":"9251:190:89","statements":[{"assignments":[13169],"declarations":[{"constant":false,"id":13169,"mutability":"mutable","name":"settings","nodeType":"VariableDeclaration","scope":13181,"src":"9261:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"},"typeName":{"id":13168,"name":"RevenueShareSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":12676,"src":"9261:20:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"}},"visibility":"internal"}],"id":13173,"initialValue":{"baseExpression":{"id":13170,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12680,"src":"9300:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$12676_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":13172,"indexExpression":{"id":13171,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13163,"src":"9314:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9300:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9261:60:89"},{"expression":{"condition":{"expression":{"id":13174,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13169,"src":"9339:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":13175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"overrideSet","nodeType":"MemberAccess","referencedDeclaration":12675,"src":"9339:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13178,"name":"_defaultRevenueSharePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12669,"src":"9404:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9339:95:89","trueExpression":{"expression":{"id":13176,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13169,"src":"9362:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$12676_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":13177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":12671,"src":"9362:39:89","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13167,"id":13180,"nodeType":"Return","src":"9332:102:89"}]},"id":13182,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolBeneficiaryFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":13164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13163,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":13182,"src":"9204:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13162,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9204:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9203:16:89"},"returnParameters":{"id":13167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13182,"src":"9242:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13165,"name":"uint256","nodeType":"ElementaryTypeName","src":"9242:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9241:9:89"},"scope":13183,"src":"9162:279:89","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":13184,"src":"2003:7440:89"}],"src":"688:8756:89"},"id":89},"contracts/ProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"contracts/ProtocolFeesWithdrawer.sol","exportedSymbols":{"ProtocolFeesWithdrawer":[13431]},"id":13432,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13185,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:90"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","id":13186,"nodeType":"ImportDirective","scope":13432,"sourceUnit":2501,"src":"713:93:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":13187,"nodeType":"ImportDirective","scope":13432,"sourceUnit":3865,"src":"807:65:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":13188,"nodeType":"ImportDirective","scope":13432,"sourceUnit":5267,"src":"874:88:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":13189,"nodeType":"ImportDirective","scope":13432,"sourceUnit":8843,"src":"963:83:90","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13191,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2500,"src":"1402:23:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2500","typeString":"contract IProtocolFeesWithdrawer"}},"id":13192,"nodeType":"InheritanceSpecifier","src":"1402:23:90"},{"baseName":{"id":13193,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"1427:23:90","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":13194,"nodeType":"InheritanceSpecifier","src":"1427:23:90"}],"contractDependencies":[1502,2500,4423,5266],"contractKind":"contract","documentation":{"id":13190,"nodeType":"StructuredDocumentation","src":"1048:318:90","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":true,"id":13431,"linearizedBaseContracts":[13431,5266,4423,1502,2500],"name":"ProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"id":13197,"libraryName":{"id":13195,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8842,"src":"1463:13:90","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$8842","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1457:49:90","typeName":{"id":13196,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"1481:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":13199,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":13431,"src":"1512:63:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":13198,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"1512:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"constant":false,"id":13201,"mutability":"mutable","name":"_denylistedTokens","nodeType":"VariableDeclaration","scope":13431,"src":"1582:50:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":13200,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8401,"src":"1582:24:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":13241,"nodeType":"Block","src":"1733:249:90","statements":[{"expression":{"id":13216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13212,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13199,"src":"1743:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13213,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13203,"src":"1768:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":13214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"1768:30:90","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1768:32:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"src":"1743:57:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":13217,"nodeType":"ExpressionStatement","src":"1743:57:90"},{"assignments":[13219],"declarations":[{"constant":false,"id":13219,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":13241,"src":"1811:20:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1811:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13222,"initialValue":{"expression":{"id":13220,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13206,"src":"1834:19:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1834:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1811:49:90"},{"body":{"id":13239,"nodeType":"Block","src":"1913:63:90","statements":[{"expression":{"arguments":[{"baseExpression":{"id":13234,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13206,"src":"1942:19:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13236,"indexExpression":{"id":13235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13224,"src":"1962:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1942:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13233,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13430,"src":"1927:14:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$returns$__$","typeString":"function (contract IERC20)"}},"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1927:38:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13238,"nodeType":"ExpressionStatement","src":"1927:38:90"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13227,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13224,"src":"1890:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13228,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"1894:12:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1890:16:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13240,"initializationExpression":{"assignments":[13224],"declarations":[{"constant":false,"id":13224,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13240,"src":"1875:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13223,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13226,"initialValue":{"hexValue":"30","id":13225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1875:13:90"},"loopExpression":{"expression":{"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1908:3:90","subExpression":{"id":13230,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13224,"src":"1910:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13232,"nodeType":"ExpressionStatement","src":"1908:3:90"},"nodeType":"ForStatement","src":"1870:106:90"}]},"id":13242,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13209,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13203,"src":"1726:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":13210,"modifierName":{"id":13208,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1702:23:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1702:30:90"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13203,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":13242,"src":"1651:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":13202,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1651:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":13206,"mutability":"mutable","name":"initialDeniedTokens","nodeType":"VariableDeclaration","scope":13242,"src":"1665:35:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13204,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1665:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13205,"nodeType":"ArrayTypeName","src":"1665:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1650:51:90"},"returnParameters":{"id":13211,"nodeType":"ParameterList","parameters":[],"src":"1733:0:90"},"scope":13431,"src":"1639:343:90","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2444],"body":{"id":13251,"nodeType":"Block","src":"2162:46:90","statements":[{"expression":{"id":13249,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13199,"src":"2179:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"functionReturnParameters":13248,"id":13250,"nodeType":"Return","src":"2172:29:90"}]},"documentation":{"id":13243,"nodeType":"StructuredDocumentation","src":"1988:77:90","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":13252,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","overrides":{"id":13245,"nodeType":"OverrideSpecifier","overrides":[],"src":"2120:8:90"},"parameters":{"id":13244,"nodeType":"ParameterList","parameters":[],"src":"2103:2:90"},"returnParameters":{"id":13248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13247,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13252,"src":"2138:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":13246,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"2138:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"2137:24:90"},"scope":13431,"src":"2070:138:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2452],"body":{"id":13270,"nodeType":"Block","src":"2408:67:90","statements":[{"expression":{"id":13268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2425:43:90","subExpression":{"arguments":[{"arguments":[{"id":13265,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13255,"src":"2461:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2453:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13263,"name":"address","nodeType":"ElementaryTypeName","src":"2453:7:90","typeDescriptions":{}}},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13261,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"2426:17:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":13262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":8545,"src":"2426:26:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":13267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2426:42:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13260,"id":13269,"nodeType":"Return","src":"2418:50:90"}]},"documentation":{"id":13253,"nodeType":"StructuredDocumentation","src":"2214:110:90","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":13271,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","overrides":{"id":13257,"nodeType":"OverrideSpecifier","overrides":[],"src":"2384:8:90"},"parameters":{"id":13256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13255,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13271,"src":"2358:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13254,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2358:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2357:14:90"},"returnParameters":{"id":13260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13259,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13271,"src":"2402:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13258,"name":"bool","nodeType":"ElementaryTypeName","src":"2402:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2401:6:90"},"scope":13431,"src":"2329:146:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2461],"body":{"id":13309,"nodeType":"Block","src":"2752:200:90","statements":[{"assignments":[13282],"declarations":[{"constant":false,"id":13282,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":13309,"src":"2762:20:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13281,"name":"uint256","nodeType":"ElementaryTypeName","src":"2762:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13285,"initialValue":{"expression":{"id":13283,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13275,"src":"2785:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2785:13:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2762:36:90"},{"body":{"id":13305,"nodeType":"Block","src":"2851:74:90","statements":[{"condition":{"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2869:31:90","subExpression":{"arguments":[{"baseExpression":{"id":13297,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13275,"src":"2890:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":13299,"indexExpression":{"id":13298,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"2897:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2890:9:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13296,"name":"isWithdrawableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13271,"src":"2870:19:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$1722_$returns$_t_bool_$","typeString":"function (contract IERC20) view returns (bool)"}},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2870:30:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13304,"nodeType":"IfStatement","src":"2865:49:90","trueBody":{"expression":{"hexValue":"66616c7365","id":13302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2909:5:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13280,"id":13303,"nodeType":"Return","src":"2902:12:90"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"2828:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13291,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13282,"src":"2832:12:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2828:16:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13306,"initializationExpression":{"assignments":[13287],"declarations":[{"constant":false,"id":13287,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13306,"src":"2813:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13286,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13289,"initialValue":{"hexValue":"30","id":13288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2813:13:90"},"loopExpression":{"expression":{"id":13294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2846:3:90","subExpression":{"id":13293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"2848:1:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13295,"nodeType":"ExpressionStatement","src":"2846:3:90"},"nodeType":"ForStatement","src":"2808:117:90"},{"expression":{"hexValue":"74727565","id":13307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2941:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":13280,"id":13308,"nodeType":"Return","src":"2934:11:90"}]},"documentation":{"id":13272,"nodeType":"StructuredDocumentation","src":"2481:174:90","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":13310,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","overrides":{"id":13277,"nodeType":"OverrideSpecifier","overrides":[],"src":"2728:8:90"},"parameters":{"id":13276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13275,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":13310,"src":"2690:24:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13273,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2690:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13274,"nodeType":"ArrayTypeName","src":"2690:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2689:26:90"},"returnParameters":{"id":13280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13279,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13310,"src":"2746:4:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13278,"name":"bool","nodeType":"ElementaryTypeName","src":"2746:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2745:6:90"},"scope":13431,"src":"2660:292:90","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2469],"body":{"id":13326,"nodeType":"Block","src":"3123:59:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":13322,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13313,"src":"3168:5:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13320,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"3147:17:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":13321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":8584,"src":"3147:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":13323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3147:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13319,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"3140:6:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":13324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3140:35:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"functionReturnParameters":13318,"id":13325,"nodeType":"Return","src":"3133:42:90"}]},"documentation":{"id":13311,"nodeType":"StructuredDocumentation","src":"2958:77:90","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":13327,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","overrides":{"id":13315,"nodeType":"OverrideSpecifier","overrides":[],"src":"3097:8:90"},"parameters":{"id":13314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13313,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":13327,"src":"3068:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13312,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3067:15:90"},"returnParameters":{"id":13318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13327,"src":"3115:6:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13316,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3115:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3114:8:90"},"scope":13431,"src":"3040:142:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2475],"body":{"id":13338,"nodeType":"Block","src":"3338:50:90","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13334,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"3355:17:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":13335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":8558,"src":"3355:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$8401_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3355:26:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13333,"id":13337,"nodeType":"Return","src":"3348:33:90"}]},"documentation":{"id":13328,"nodeType":"StructuredDocumentation","src":"3188:67:90","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":13339,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","overrides":{"id":13330,"nodeType":"OverrideSpecifier","overrides":[],"src":"3311:8:90"},"parameters":{"id":13329,"nodeType":"ParameterList","parameters":[],"src":"3294:2:90"},"returnParameters":{"id":13333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13339,"src":"3329:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13331,"name":"uint256","nodeType":"ElementaryTypeName","src":"3329:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3328:9:90"},"scope":13431,"src":"3260:128:90","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2487],"body":{"id":13369,"nodeType":"Block","src":"3920:278:90","statements":[{"expression":{"arguments":[{"arguments":[{"id":13356,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13343,"src":"3959:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}],"id":13355,"name":"isWithdrawableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13310,"src":"3938:20:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20[] calldata) view returns (bool)"}},"id":13357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3938:28:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656e","id":13358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3968:41:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""},"value":"Attempting to withdraw denylisted token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""}],"id":13354,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3930:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:80:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13360,"nodeType":"ExpressionStatement","src":"3930:80:90"},{"expression":{"arguments":[{"id":13364,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13343,"src":"4164:6:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},{"id":13365,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"4172:7:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":13366,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"4181:9:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13361,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13199,"src":"4119:22:90","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":13363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":3359,"src":"4119:44:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":13367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4119:72:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13368,"nodeType":"ExpressionStatement","src":"4119:72:90"}]},"documentation":{"id":13340,"nodeType":"StructuredDocumentation","src":"3394:356:90","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":13370,"implemented":true,"kind":"function","modifiers":[{"id":13352,"modifierName":{"id":13351,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"3907:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3907:12:90"}],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","overrides":{"id":13350,"nodeType":"OverrideSpecifier","overrides":[],"src":"3898:8:90"},"parameters":{"id":13349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13343,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":13370,"src":"3795:24:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13341,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3795:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13342,"nodeType":"ArrayTypeName","src":"3795:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":13346,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":13370,"src":"3829:26:90","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13344,"name":"uint256","nodeType":"ElementaryTypeName","src":"3829:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13345,"nodeType":"ArrayTypeName","src":"3829:9:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13348,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13370,"src":"3865:17:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13347,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:103:90"},"returnParameters":{"id":13353,"nodeType":"ParameterList","parameters":[],"src":"3920:0:90"},"scope":13431,"src":"3755:443:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2493],"body":{"id":13383,"nodeType":"Block","src":"4389:38:90","statements":[{"expression":{"arguments":[{"id":13380,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13373,"src":"4414:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13379,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13430,"src":"4399:14:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$returns$__$","typeString":"function (contract IERC20)"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4399:21:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13382,"nodeType":"ExpressionStatement","src":"4399:21:90"}]},"documentation":{"id":13371,"nodeType":"StructuredDocumentation","src":"4204:112:90","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":13384,"implemented":true,"kind":"function","modifiers":[{"id":13377,"modifierName":{"id":13376,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"4376:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4376:12:90"}],"name":"denylistToken","nodeType":"FunctionDefinition","overrides":{"id":13375,"nodeType":"OverrideSpecifier","overrides":[],"src":"4367:8:90"},"parameters":{"id":13374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13373,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13384,"src":"4344:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13372,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4344:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4343:14:90"},"returnParameters":{"id":13378,"nodeType":"ParameterList","parameters":[],"src":"4389:0:90"},"scope":13431,"src":"4321:106:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2499],"body":{"id":13408,"nodeType":"Block","src":"4617:131:90","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":13398,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"4668:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4660:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13396,"name":"address","nodeType":"ElementaryTypeName","src":"4660:7:90","typeDescriptions":{}}},"id":13399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4660:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13394,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"4635:17:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":13395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":8527,"src":"4635:24:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":13400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4635:40:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e206973206e6f742064656e796c6973746564","id":13401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4677:25:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""},"value":"Token is not denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""}],"id":13393,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4627:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4627:76:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13403,"nodeType":"ExpressionStatement","src":"4627:76:90"},{"eventCall":{"arguments":[{"id":13405,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"4735:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13404,"name":"TokenAllowlisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"4718:16:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$1722_$returns$__$","typeString":"function (contract IERC20)"}},"id":13406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4718:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13407,"nodeType":"EmitStatement","src":"4713:28:90"}]},"documentation":{"id":13385,"nodeType":"StructuredDocumentation","src":"4433:110:90","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":13409,"implemented":true,"kind":"function","modifiers":[{"id":13391,"modifierName":{"id":13390,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"4604:12:90","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4604:12:90"}],"name":"allowlistToken","nodeType":"FunctionDefinition","overrides":{"id":13389,"nodeType":"OverrideSpecifier","overrides":[],"src":"4595:8:90"},"parameters":{"id":13388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13387,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13409,"src":"4572:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13386,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4572:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4571:14:90"},"returnParameters":{"id":13392,"nodeType":"ParameterList","parameters":[],"src":"4617:0:90"},"scope":13431,"src":"4548:200:90","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13429,"nodeType":"Block","src":"4828:128:90","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":13419,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13411,"src":"4876:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13417,"name":"address","nodeType":"ElementaryTypeName","src":"4868:7:90","typeDescriptions":{}}},"id":13420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4868:14:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13415,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"4846:17:90","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$8401_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":13416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8442,"src":"4846:21:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$8401_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$8401_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":13421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4846:37:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c72656164792064656e796c6973746564","id":13422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4885:26:90","typeDescriptions":{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""},"value":"Token already denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""}],"id":13414,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4838:7:90","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4838:74:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13424,"nodeType":"ExpressionStatement","src":"4838:74:90"},{"eventCall":{"arguments":[{"id":13426,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13411,"src":"4943:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":13425,"name":"TokenDenylisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"4927:15:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$1722_$returns$__$","typeString":"function (contract IERC20)"}},"id":13427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4927:22:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13428,"nodeType":"EmitStatement","src":"4922:27:90"}]},"id":13430,"implemented":true,"kind":"function","modifiers":[],"name":"_denylistToken","nodeType":"FunctionDefinition","parameters":{"id":13412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13411,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13430,"src":"4805:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13410,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4805:6:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4804:14:90"},"returnParameters":{"id":13413,"nodeType":"ParameterList","parameters":[],"src":"4828:0:90"},"scope":13431,"src":"4781:175:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13432,"src":"1367:3591:90"}],"src":"688:4271:90"},"id":90},"contracts/ProtocolIdRegistry.sol":{"ast":{"absolutePath":"contracts/ProtocolIdRegistry.sol","exportedSymbols":{"ProtocolIdRegistry":[13710]},"id":13711,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13433,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:91"},{"id":13434,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:91"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol","id":13435,"nodeType":"ImportDirective","scope":13711,"sourceUnit":2607,"src":"747:89:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":13436,"nodeType":"ImportDirective","scope":13711,"sourceUnit":5267,"src":"837:88:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13437,"name":"IProtocolIdRegistry","nodeType":"UserDefinedTypeName","referencedDeclaration":2548,"src":"958:19:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolIdRegistry_$2548","typeString":"contract IProtocolIdRegistry"}},"id":13438,"nodeType":"InheritanceSpecifier","src":"958:19:91"},{"baseName":{"id":13439,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":5266,"src":"979:23:91","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$5266","typeString":"contract SingletonAuthentication"}},"id":13440,"nodeType":"InheritanceSpecifier","src":"979:23:91"}],"contractDependencies":[1502,2548,4423,5266],"contractKind":"contract","fullyImplemented":true,"id":13710,"linearizedBaseContracts":[13710,5266,4423,1502,2548],"name":"ProtocolIdRegistry","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ProtocolIdRegistry.ProtocolIdData","id":13445,"members":[{"constant":false,"id":13442,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":13445,"src":"1041:11:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":13441,"name":"string","nodeType":"ElementaryTypeName","src":"1041:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13444,"mutability":"mutable","name":"registered","nodeType":"VariableDeclaration","scope":13445,"src":"1062:15:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13443,"name":"bool","nodeType":"ElementaryTypeName","src":"1062:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ProtocolIdData","nodeType":"StructDefinition","scope":13710,"src":"1009:75:91","visibility":"public"},{"constant":false,"id":13449,"mutability":"mutable","name":"_protocolIdData","nodeType":"VariableDeclaration","scope":13710,"src":"1090:58:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData)"},"typeName":{"id":13448,"keyType":{"id":13446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1090:34:91","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData)"},"valueType":{"id":13447,"name":"ProtocolIdData","nodeType":"UserDefinedTypeName","referencedDeclaration":13445,"src":"1109:14:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage_ptr","typeString":"struct ProtocolIdRegistry.ProtocolIdData"}}},"visibility":"private"},{"body":{"id":13461,"nodeType":"Block","src":"1204:94:91","statements":[{"expression":{"arguments":[{"arguments":[{"id":13455,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13451,"src":"1240:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13454,"name":"isValidProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13634,"src":"1222:17:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":13456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1222:29:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e742070726f746f636f6c204944","id":13457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1253:26:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_a04be5a767d7af4ff0ee4f136f5a85c897479119bf0b9dc55a8931ccc92ab8be","typeString":"literal_string \"Non-existent protocol ID\""},"value":"Non-existent protocol ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a04be5a767d7af4ff0ee4f136f5a85c897479119bf0b9dc55a8931ccc92ab8be","typeString":"literal_string \"Non-existent protocol ID\""}],"id":13453,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1214:7:91","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1214:66:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13459,"nodeType":"ExpressionStatement","src":"1214:66:91"},{"id":13460,"nodeType":"PlaceholderStatement","src":"1290:1:91"}]},"id":13462,"name":"withValidProtocolId","nodeType":"ModifierDefinition","parameters":{"id":13452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13451,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13462,"src":"1184:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1184:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1183:20:91"},"src":"1155:143:91","virtual":false,"visibility":"internal"},{"body":{"id":13584,"nodeType":"Block","src":"1361:1111:91","statements":[{"expression":{"arguments":[{"expression":{"id":13471,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1391:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AAVE_V1","nodeType":"MemberAccess","referencedDeclaration":2551,"src":"1391:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41617665207631","id":13473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1411:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_8f24cbae1c0a428423439bea1f12faedd0b364badd2f3fed8a0264fd717030df","typeString":"literal_string \"Aave v1\""},"value":"Aave v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8f24cbae1c0a428423439bea1f12faedd0b364badd2f3fed8a0264fd717030df","typeString":"literal_string \"Aave v1\""}],"id":13470,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1371:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1371:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13475,"nodeType":"ExpressionStatement","src":"1371:50:91"},{"expression":{"arguments":[{"expression":{"id":13477,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1451:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AAVE_V2","nodeType":"MemberAccess","referencedDeclaration":2554,"src":"1451:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41617665207632","id":13479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1471:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_2adf7ef20aa4e1b78d6ed89144349b7846f9ac4dd9c13a268a7379aebc3a9603","typeString":"literal_string \"Aave v2\""},"value":"Aave v2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_2adf7ef20aa4e1b78d6ed89144349b7846f9ac4dd9c13a268a7379aebc3a9603","typeString":"literal_string \"Aave v2\""}],"id":13476,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1431:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1431:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13481,"nodeType":"ExpressionStatement","src":"1431:50:91"},{"expression":{"arguments":[{"expression":{"id":13483,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1511:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AAVE_V3","nodeType":"MemberAccess","referencedDeclaration":2557,"src":"1511:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41617665207633","id":13485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1531:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_6af1d9b29ecfcecb21e971cbab89800009450fc77305788ed1dd368788c205a0","typeString":"literal_string \"Aave v3\""},"value":"Aave v3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6af1d9b29ecfcecb21e971cbab89800009450fc77305788ed1dd368788c205a0","typeString":"literal_string \"Aave v3\""}],"id":13482,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1491:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1491:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13487,"nodeType":"ExpressionStatement","src":"1491:50:91"},{"expression":{"arguments":[{"expression":{"id":13489,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1571:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AMPLEFORTH","nodeType":"MemberAccess","referencedDeclaration":2560,"src":"1571:21:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416d706c65666f727468","id":13491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1594:12:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c3a3270030614ed3dd113d0ada726ee3211c390bba817ae6608e704c659e11f","typeString":"literal_string \"Ampleforth\""},"value":"Ampleforth"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6c3a3270030614ed3dd113d0ada726ee3211c390bba817ae6608e704c659e11f","typeString":"literal_string \"Ampleforth\""}],"id":13488,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1551:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1551:56:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13493,"nodeType":"ExpressionStatement","src":"1551:56:91"},{"expression":{"arguments":[{"expression":{"id":13495,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1637:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"BEEFY","nodeType":"MemberAccess","referencedDeclaration":2563,"src":"1637:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4265656679","id":13497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1655:7:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_071b16532c339747d0dc32a16cf649417179cbc4ae0d9a3079ad9c560c86e56d","typeString":"literal_string \"Beefy\""},"value":"Beefy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_071b16532c339747d0dc32a16cf649417179cbc4ae0d9a3079ad9c560c86e56d","typeString":"literal_string \"Beefy\""}],"id":13494,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1617:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1617:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13499,"nodeType":"ExpressionStatement","src":"1617:46:91"},{"expression":{"arguments":[{"expression":{"id":13501,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1693:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EULER","nodeType":"MemberAccess","referencedDeclaration":2566,"src":"1693:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"45756c6572","id":13503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1711:7:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c639763726f8d5be19355f6f79ceeef8434c10dac5ea71d01a38f92b135661f","typeString":"literal_string \"Euler\""},"value":"Euler"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_0c639763726f8d5be19355f6f79ceeef8434c10dac5ea71d01a38f92b135661f","typeString":"literal_string \"Euler\""}],"id":13500,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1673:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1673:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13505,"nodeType":"ExpressionStatement","src":"1673:46:91"},{"expression":{"arguments":[{"expression":{"id":13507,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1749:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GEARBOX","nodeType":"MemberAccess","referencedDeclaration":2569,"src":"1749:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"47656172626f78","id":13509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1769:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd46","typeString":"literal_string \"Gearbox\""},"value":"Gearbox"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd46","typeString":"literal_string \"Gearbox\""}],"id":13506,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1729:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13511,"nodeType":"ExpressionStatement","src":"1729:50:91"},{"expression":{"arguments":[{"expression":{"id":13513,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1809:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"IDLE","nodeType":"MemberAccess","referencedDeclaration":2572,"src":"1809:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"49646c65","id":13515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1826:6:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_264006a67129016a65a3bb98eb306cfc1c07e4f0141eb63a2af787c0e029bd32","typeString":"literal_string \"Idle\""},"value":"Idle"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_264006a67129016a65a3bb98eb306cfc1c07e4f0141eb63a2af787c0e029bd32","typeString":"literal_string \"Idle\""}],"id":13512,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1789:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1789:44:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13517,"nodeType":"ExpressionStatement","src":"1789:44:91"},{"expression":{"arguments":[{"expression":{"id":13519,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1863:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MORPHO","nodeType":"MemberAccess","referencedDeclaration":2575,"src":"1863:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4d6f7270686f","id":13521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1882:8:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_60c5da11e99eb3cde3ccc51421ee307f73dc44527b3c6223ac0c592d1d811272","typeString":"literal_string \"Morpho\""},"value":"Morpho"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_60c5da11e99eb3cde3ccc51421ee307f73dc44527b3c6223ac0c592d1d811272","typeString":"literal_string \"Morpho\""}],"id":13518,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1843:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1843:48:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13523,"nodeType":"ExpressionStatement","src":"1843:48:91"},{"expression":{"arguments":[{"expression":{"id":13525,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1921:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"RADIANT","nodeType":"MemberAccess","referencedDeclaration":2578,"src":"1921:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"52616469616e74","id":13527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1941:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_a5122630b08ea02224588be8b89ed2ce3423115d8397a40a751ab8753c6d2453","typeString":"literal_string \"Radiant\""},"value":"Radiant"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_a5122630b08ea02224588be8b89ed2ce3423115d8397a40a751ab8753c6d2453","typeString":"literal_string \"Radiant\""}],"id":13524,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1901:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1901:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13529,"nodeType":"ExpressionStatement","src":"1901:50:91"},{"expression":{"arguments":[{"expression":{"id":13531,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"1981:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REAPER","nodeType":"MemberAccess","referencedDeclaration":2581,"src":"1981:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"526561706572","id":13533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2000:8:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_cefe367b16585cdb9035032c23e6abb5fdf326bd2186877ffbd8a52baecfbf13","typeString":"literal_string \"Reaper\""},"value":"Reaper"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_cefe367b16585cdb9035032c23e6abb5fdf326bd2186877ffbd8a52baecfbf13","typeString":"literal_string \"Reaper\""}],"id":13530,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"1961:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1961:48:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13535,"nodeType":"ExpressionStatement","src":"1961:48:91"},{"expression":{"arguments":[{"expression":{"id":13537,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2039:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SILO","nodeType":"MemberAccess","referencedDeclaration":2584,"src":"2039:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"53696c6f","id":13539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2056:6:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_b1e84a976b339e956ab2452a7290af038c3003c7253647c4f3686e499e1ab8f4","typeString":"literal_string \"Silo\""},"value":"Silo"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_b1e84a976b339e956ab2452a7290af038c3003c7253647c4f3686e499e1ab8f4","typeString":"literal_string \"Silo\""}],"id":13536,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2019:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2019:44:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13541,"nodeType":"ExpressionStatement","src":"2019:44:91"},{"expression":{"arguments":[{"expression":{"id":13543,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2093:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"STARGATE","nodeType":"MemberAccess","referencedDeclaration":2587,"src":"2093:19:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5374617267617465","id":13545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2114:10:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_6debe1c49ff1a7d2012a7d55f3935c306a5eb673882f4edde41dbcaa58467fd1","typeString":"literal_string \"Stargate\""},"value":"Stargate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_6debe1c49ff1a7d2012a7d55f3935c306a5eb673882f4edde41dbcaa58467fd1","typeString":"literal_string \"Stargate\""}],"id":13542,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2073:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2073:52:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13547,"nodeType":"ExpressionStatement","src":"2073:52:91"},{"expression":{"arguments":[{"expression":{"id":13549,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2155:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"STURDY","nodeType":"MemberAccess","referencedDeclaration":2590,"src":"2155:17:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"537475726479","id":13551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2174:8:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde07574de363f3c25c418157b78698ba8fc3d6bf4ab972bff10fe32a5cabf67","typeString":"literal_string \"Sturdy\""},"value":"Sturdy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_cde07574de363f3c25c418157b78698ba8fc3d6bf4ab972bff10fe32a5cabf67","typeString":"literal_string \"Sturdy\""}],"id":13548,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2135:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:48:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13553,"nodeType":"ExpressionStatement","src":"2135:48:91"},{"expression":{"arguments":[{"expression":{"id":13555,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2213:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TESSERA","nodeType":"MemberAccess","referencedDeclaration":2593,"src":"2213:18:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"54657373657261","id":13557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2233:9:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_fde55eb8af6baf392cc74df4942f87e5e5a5a2a0710510dd2fe88227f2a75ade","typeString":"literal_string \"Tessera\""},"value":"Tessera"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_fde55eb8af6baf392cc74df4942f87e5e5a5a2a0710510dd2fe88227f2a75ade","typeString":"literal_string \"Tessera\""}],"id":13554,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2193:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2193:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13559,"nodeType":"ExpressionStatement","src":"2193:50:91"},{"expression":{"arguments":[{"expression":{"id":13561,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2273:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TETU","nodeType":"MemberAccess","referencedDeclaration":2596,"src":"2273:15:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"54657475","id":13563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2290:6:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_b829cf729d5b6e8bbfd017bc470fa6a5088dca7f4df8db909a1bd770417ed402","typeString":"literal_string \"Tetu\""},"value":"Tetu"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_b829cf729d5b6e8bbfd017bc470fa6a5088dca7f4df8db909a1bd770417ed402","typeString":"literal_string \"Tetu\""}],"id":13560,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2253:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2253:44:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13565,"nodeType":"ExpressionStatement","src":"2253:44:91"},{"expression":{"arguments":[{"expression":{"id":13567,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2327:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"YEARN","nodeType":"MemberAccess","referencedDeclaration":2599,"src":"2327:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"596561726e","id":13569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2345:7:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_41706c26de799a97be68df39c7018937156ca31e79a3828c4d5e202f143c4aa0","typeString":"literal_string \"Yearn\""},"value":"Yearn"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_41706c26de799a97be68df39c7018937156ca31e79a3828c4d5e202f143c4aa0","typeString":"literal_string \"Yearn\""}],"id":13566,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2307:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2307:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13571,"nodeType":"ExpressionStatement","src":"2307:46:91"},{"expression":{"arguments":[{"expression":{"id":13573,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2383:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MIDAS","nodeType":"MemberAccess","referencedDeclaration":2602,"src":"2383:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4d69646173","id":13575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2401:7:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_444e87f8a337c526a9be8a49d7447994cde78526ebdcbdac81dcdf3d82007dda","typeString":"literal_string \"Midas\""},"value":"Midas"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_444e87f8a337c526a9be8a49d7447994cde78526ebdcbdac81dcdf3d82007dda","typeString":"literal_string \"Midas\""}],"id":13572,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2363:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2363:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13577,"nodeType":"ExpressionStatement","src":"2363:46:91"},{"expression":{"arguments":[{"expression":{"id":13579,"name":"ProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"2439:10:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolId_$2606_$","typeString":"type(library ProtocolId)"}},"id":13580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AGAVE","nodeType":"MemberAccess","referencedDeclaration":2605,"src":"2439:16:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"4167617665","id":13581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2457:7:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_9655e21d975a644e86136aec3f3f40d916b33c43dd89a68bf662b5237ca42944","typeString":"literal_string \"Agave\""},"value":"Agave"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_9655e21d975a644e86136aec3f3f40d916b33c43dd89a68bf662b5237ca42944","typeString":"literal_string \"Agave\""}],"id":13578,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2419:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2419:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13583,"nodeType":"ExpressionStatement","src":"2419:46:91"}]},"id":13585,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13467,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13464,"src":"1354:5:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":13468,"modifierName":{"id":13466,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"1330:23:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$5266_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1330:30:91"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13464,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":13585,"src":"1316:12:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":13463,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1316:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1315:14:91"},"returnParameters":{"id":13469,"nodeType":"ParameterList","parameters":[],"src":"1361:0:91"},"scope":13710,"src":"1304:1168:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2523],"body":{"id":13601,"nodeType":"Block","src":"2617:54:91","statements":[{"expression":{"arguments":[{"id":13597,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13588,"src":"2647:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13598,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13590,"src":"2659:4:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13596,"name":"_registerProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13664,"src":"2627:19:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2627:37:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13600,"nodeType":"ExpressionStatement","src":"2627:37:91"}]},"documentation":{"id":13586,"nodeType":"StructuredDocumentation","src":"2478:35:91","text":"@inheritdoc IProtocolIdRegistry"},"functionSelector":"7f5d9817","id":13602,"implemented":true,"kind":"function","modifiers":[{"id":13594,"modifierName":{"id":13593,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2604:12:91","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2604:12:91"}],"name":"registerProtocolId","nodeType":"FunctionDefinition","overrides":{"id":13592,"nodeType":"OverrideSpecifier","overrides":[],"src":"2595:8:91"},"parameters":{"id":13591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13588,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13602,"src":"2546:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13587,"name":"uint256","nodeType":"ElementaryTypeName","src":"2546:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13590,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":13602,"src":"2566:18:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13589,"name":"string","nodeType":"ElementaryTypeName","src":"2566:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2545:40:91"},"returnParameters":{"id":13595,"nodeType":"ParameterList","parameters":[],"src":"2617:0:91"},"scope":13710,"src":"2518:153:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2531],"body":{"id":13618,"nodeType":"Block","src":"2817:55:91","statements":[{"expression":{"arguments":[{"id":13614,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13605,"src":"2845:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13615,"name":"newName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13607,"src":"2857:7:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13613,"name":"_renameProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"2827:17:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2827:38:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13617,"nodeType":"ExpressionStatement","src":"2827:38:91"}]},"documentation":{"id":13603,"nodeType":"StructuredDocumentation","src":"2677:35:91","text":"@inheritdoc IProtocolIdRegistry"},"functionSelector":"3585c4da","id":13619,"implemented":true,"kind":"function","modifiers":[{"id":13611,"modifierName":{"id":13610,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2804:12:91","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2804:12:91"}],"name":"renameProtocolId","nodeType":"FunctionDefinition","overrides":{"id":13609,"nodeType":"OverrideSpecifier","overrides":[],"src":"2795:8:91"},"parameters":{"id":13608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13605,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13619,"src":"2743:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13604,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13607,"mutability":"mutable","name":"newName","nodeType":"VariableDeclaration","scope":13619,"src":"2763:21:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13606,"name":"string","nodeType":"ElementaryTypeName","src":"2763:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2742:43:91"},"returnParameters":{"id":13612,"nodeType":"ParameterList","parameters":[],"src":"2817:0:91"},"scope":13710,"src":"2717:155:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2539],"body":{"id":13633,"nodeType":"Block","src":"3001:62:91","statements":[{"expression":{"expression":{"baseExpression":{"id":13628,"name":"_protocolIdData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"3018:15:91","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData storage ref)"}},"id":13630,"indexExpression":{"id":13629,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13622,"src":"3034:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3018:27:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage","typeString":"struct ProtocolIdRegistry.ProtocolIdData storage ref"}},"id":13631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":13444,"src":"3018:38:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13627,"id":13632,"nodeType":"Return","src":"3011:45:91"}]},"documentation":{"id":13620,"nodeType":"StructuredDocumentation","src":"2878:35:91","text":"@inheritdoc IProtocolIdRegistry"},"functionSelector":"3cae580a","id":13634,"implemented":true,"kind":"function","modifiers":[],"name":"isValidProtocolId","nodeType":"FunctionDefinition","overrides":{"id":13624,"nodeType":"OverrideSpecifier","overrides":[],"src":"2977:8:91"},"parameters":{"id":13623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13622,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13634,"src":"2945:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13621,"name":"uint256","nodeType":"ElementaryTypeName","src":"2945:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2944:20:91"},"returnParameters":{"id":13627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13626,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13634,"src":"2995:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13625,"name":"bool","nodeType":"ElementaryTypeName","src":"2995:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2994:6:91"},"scope":13710,"src":"2918:145:91","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13663,"nodeType":"Block","src":"3146:231:91","statements":[{"expression":{"arguments":[{"id":13645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3164:30:91","subExpression":{"arguments":[{"id":13643,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13636,"src":"3183:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13642,"name":"isValidProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13634,"src":"3165:17:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":13644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3165:29:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f746f636f6c20494420616c72656164792072656769737465726564","id":13646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3196:32:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_5a47fe8a7b9ee9d5ee0f630dfb6e2650624d5bf94343fc6e05e535e2ac554a53","typeString":"literal_string \"Protocol ID already registered\""},"value":"Protocol ID already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a47fe8a7b9ee9d5ee0f630dfb6e2650624d5bf94343fc6e05e535e2ac554a53","typeString":"literal_string \"Protocol ID already registered\""}],"id":13641,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3156:7:91","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3156:73:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13648,"nodeType":"ExpressionStatement","src":"3156:73:91"},{"expression":{"id":13656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13649,"name":"_protocolIdData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"3239:15:91","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData storage ref)"}},"id":13651,"indexExpression":{"id":13650,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13636,"src":"3255:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3239:27:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage","typeString":"struct ProtocolIdRegistry.ProtocolIdData storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13653,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"3292:4:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"74727565","id":13654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3310:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13652,"name":"ProtocolIdData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13445,"src":"3269:14:91","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ProtocolIdData_$13445_storage_ptr_$","typeString":"type(struct ProtocolIdRegistry.ProtocolIdData storage pointer)"}},"id":13655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["name","registered"],"nodeType":"FunctionCall","src":"3269:48:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_memory_ptr","typeString":"struct ProtocolIdRegistry.ProtocolIdData memory"}},"src":"3239:78:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage","typeString":"struct ProtocolIdRegistry.ProtocolIdData storage ref"}},"id":13657,"nodeType":"ExpressionStatement","src":"3239:78:91"},{"eventCall":{"arguments":[{"id":13659,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13636,"src":"3353:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13660,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"3365:4:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13658,"name":"ProtocolIdRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"3332:20:91","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3332:38:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13662,"nodeType":"EmitStatement","src":"3327:43:91"}]},"id":13664,"implemented":true,"kind":"function","modifiers":[],"name":"_registerProtocolId","nodeType":"FunctionDefinition","parameters":{"id":13639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13636,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13664,"src":"3098:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3098:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13638,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":13664,"src":"3118:18:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13637,"name":"string","nodeType":"ElementaryTypeName","src":"3118:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3097:40:91"},"returnParameters":{"id":13640,"nodeType":"ParameterList","parameters":[],"src":"3146:0:91"},"scope":13710,"src":"3069:308:91","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13690,"nodeType":"Block","src":"3461:190:91","statements":[{"expression":{"arguments":[{"arguments":[{"id":13673,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13666,"src":"3497:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13672,"name":"isValidProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13634,"src":"3479:17:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":13674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3479:29:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f746f636f6c204944206e6f742072656769737465726564","id":13675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3510:28:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_9bfbb49d55760c430a94df11a8825877c63f736a6549abcfe3b06c7c4fb6cfde","typeString":"literal_string \"Protocol ID not registered\""},"value":"Protocol ID not registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9bfbb49d55760c430a94df11a8825877c63f736a6549abcfe3b06c7c4fb6cfde","typeString":"literal_string \"Protocol ID not registered\""}],"id":13671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3471:7:91","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3471:68:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13677,"nodeType":"ExpressionStatement","src":"3471:68:91"},{"expression":{"id":13683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":13678,"name":"_protocolIdData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"3549:15:91","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData storage ref)"}},"id":13680,"indexExpression":{"id":13679,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13666,"src":"3565:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3549:27:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage","typeString":"struct ProtocolIdRegistry.ProtocolIdData storage ref"}},"id":13681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":13442,"src":"3549:32:91","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13682,"name":"newName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13668,"src":"3584:7:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3549:42:91","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":13684,"nodeType":"ExpressionStatement","src":"3549:42:91"},{"eventCall":{"arguments":[{"id":13686,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13666,"src":"3624:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13687,"name":"newName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13668,"src":"3636:7:91","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13685,"name":"ProtocolIdRenamed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"3606:17:91","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3606:38:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13689,"nodeType":"EmitStatement","src":"3601:43:91"}]},"id":13691,"implemented":true,"kind":"function","modifiers":[],"name":"_renameProtocolId","nodeType":"FunctionDefinition","parameters":{"id":13669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13666,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13691,"src":"3410:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13665,"name":"uint256","nodeType":"ElementaryTypeName","src":"3410:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13668,"mutability":"mutable","name":"newName","nodeType":"VariableDeclaration","scope":13691,"src":"3430:21:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13667,"name":"string","nodeType":"ElementaryTypeName","src":"3430:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3409:43:91"},"returnParameters":{"id":13670,"nodeType":"ParameterList","parameters":[],"src":"3461:0:91"},"scope":13710,"src":"3383:268:91","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2547],"body":{"id":13708,"nodeType":"Block","src":"3865:56:91","statements":[{"expression":{"expression":{"baseExpression":{"id":13703,"name":"_protocolIdData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"3882:15:91","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ProtocolIdData_$13445_storage_$","typeString":"mapping(uint256 => struct ProtocolIdRegistry.ProtocolIdData storage ref)"}},"id":13705,"indexExpression":{"id":13704,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"3898:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3882:27:91","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolIdData_$13445_storage","typeString":"struct ProtocolIdRegistry.ProtocolIdData storage ref"}},"id":13706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":13442,"src":"3882:32:91","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":13702,"id":13707,"nodeType":"Return","src":"3875:39:91"}]},"documentation":{"id":13692,"nodeType":"StructuredDocumentation","src":"3657:35:91","text":"@inheritdoc IProtocolIdRegistry"},"functionSelector":"a2de1041","id":13709,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":13698,"name":"protocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"3817:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13699,"modifierName":{"id":13697,"name":"withValidProtocolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"3797:19:91","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"3797:31:91"}],"name":"getProtocolName","nodeType":"FunctionDefinition","overrides":{"id":13696,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:91"},"parameters":{"id":13695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13694,"mutability":"mutable","name":"protocolId","nodeType":"VariableDeclaration","scope":13709,"src":"3722:18:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13693,"name":"uint256","nodeType":"ElementaryTypeName","src":"3722:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3721:20:91"},"returnParameters":{"id":13702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13701,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13709,"src":"3846:13:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13700,"name":"string","nodeType":"ElementaryTypeName","src":"3846:6:91","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3845:15:91"},"scope":13710,"src":"3697:224:91","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13711,"src":"927:2996:91"}],"src":"688:3236:91"},"id":91},"contracts/relayer/AaveWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/AaveWrapping.sol","exportedSymbols":{"AaveWrapping":[13886]},"id":13887,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13712,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:92"},{"id":13713,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:92"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":13714,"nodeType":"ImportDirective","scope":13887,"sourceUnit":2968,"src":"747:85:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":13715,"nodeType":"ImportDirective","scope":13887,"sourceUnit":3865,"src":"833:65:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":13716,"nodeType":"ImportDirective","scope":13887,"sourceUnit":7642,"src":"900:77:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":13717,"nodeType":"ImportDirective","scope":13887,"sourceUnit":9108,"src":"978:79:92","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":13718,"nodeType":"ImportDirective","scope":13887,"sourceUnit":15505,"src":"1059:35:92","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13720,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1343:19:92","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":13721,"nodeType":"InheritanceSpecifier","src":"1343:19:92"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":13719,"nodeType":"StructuredDocumentation","src":"1096:212:92","text":" @title AaveWrapping\n @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":13886,"linearizedBaseContracts":[13886,15504,9418],"name":"AaveWrapping","nodeType":"ContractDefinition","nodes":[{"id":13724,"libraryName":{"id":13722,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7641,"src":"1375:7:92","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1369:34:92","typeName":{"id":13723,"name":"address","nodeType":"ElementaryTypeName","src":"1387:15:92","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":13727,"libraryName":{"id":13725,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1414:9:92","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1408:27:92","typeName":{"id":13726,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1428:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"body":{"id":13816,"nodeType":"Block","src":"1668:1037:92","statements":[{"condition":{"arguments":[{"id":13743,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"1702:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13742,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"1682:19:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1682:27:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13752,"nodeType":"IfStatement","src":"1678:100:92","trueBody":{"id":13751,"nodeType":"Block","src":"1711:67:92","statements":[{"expression":{"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13745,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"1725:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13747,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"1760:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13746,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"1734:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":13748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1734:33:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1725:42:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13750,"nodeType":"ExpressionStatement","src":"1725:42:92"}]}},{"assignments":[13754],"declarations":[{"constant":false,"id":13754,"mutability":"mutable","name":"dynamicToken","nodeType":"VariableDeclaration","scope":13816,"src":"1960:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":13753,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1960:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":13763,"initialValue":{"condition":{"id":13755,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13737,"src":"1982:14:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13759,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"2021:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ATOKEN","nodeType":"MemberAccess","referencedDeclaration":2956,"src":"2021:18:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$1722_$","typeString":"function () external returns (contract IERC20)"}},"id":13761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1982:59:92","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13756,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"1999:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"id":13757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ASSET","nodeType":"MemberAccess","referencedDeclaration":2961,"src":"1999:17:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$1722_$","typeString":"function () external returns (contract IERC20)"}},"id":13758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:19:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1960:81:92"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13764,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13731,"src":"2231:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":13767,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2249:4:92","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$13886","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$13886","typeString":"contract AaveWrapping"}],"id":13766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2241:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13765,"name":"address","nodeType":"ElementaryTypeName","src":"2241:7:92","typeDescriptions":{}}},"id":13768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2241:13:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2231:23:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13785,"nodeType":"IfStatement","src":"2227:157:92","trueBody":{"id":13784,"nodeType":"Block","src":"2256:128:92","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13771,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13731,"src":"2278:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13772,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2288:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2288:10:92","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2278:20:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":13775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2300:18:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":13770,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2270:7:92","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2270:49:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13777,"nodeType":"ExpressionStatement","src":"2270:49:92"},{"expression":{"arguments":[{"id":13779,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13731,"src":"2344:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13780,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13754,"src":"2352:12:92","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":13781,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"2366:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13778,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15330,"src":"2333:10:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1722_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":13782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2333:40:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13783,"nodeType":"ExpressionStatement","src":"2333:40:92"}]}},{"expression":{"arguments":[{"arguments":[{"id":13791,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"2427:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}],"id":13790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2419:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13789,"name":"address","nodeType":"ElementaryTypeName","src":"2419:7:92","typeDescriptions":{}}},"id":13792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2419:20:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13793,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"2441:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13786,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13754,"src":"2394:12:92","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":13788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":9017,"src":"2394:24:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":13794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:54:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13795,"nodeType":"ExpressionStatement","src":"2394:54:92"},{"assignments":[13797],"declarations":[{"constant":false,"id":13797,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":13816,"src":"2497:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13796,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13805,"initialValue":{"arguments":[{"id":13800,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13733,"src":"2534:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13801,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"2545:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":13802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2553:1:92","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":13803,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13737,"src":"2556:14:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":13798,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13729,"src":"2514:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2747,"src":"2514:19:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint16,bool) external returns (uint256)"}},"id":13804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2514:57:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2497:74:92"},{"condition":{"arguments":[{"id":13807,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13739,"src":"2606:15:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13806,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"2586:19:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2586:36:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13815,"nodeType":"IfStatement","src":"2582:117:92","trueBody":{"id":13814,"nodeType":"Block","src":"2624:75:92","statements":[{"expression":{"arguments":[{"id":13810,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13739,"src":"2664:15:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13811,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13797,"src":"2681:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13809,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"2638:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2638:50:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13813,"nodeType":"ExpressionStatement","src":"2638:50:92"}]}}]},"functionSelector":"433b0865","id":13817,"implemented":true,"kind":"function","modifiers":[],"name":"wrapAaveDynamicToken","nodeType":"FunctionDefinition","parameters":{"id":13740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13729,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":13817,"src":"1480:27:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"},"typeName":{"id":13728,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2967,"src":"1480:15:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":13731,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":13817,"src":"1517:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13730,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13733,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13817,"src":"1541:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13732,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13735,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13817,"src":"1568:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1568:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13737,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":13817,"src":"1592:19:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13736,"name":"bool","nodeType":"ElementaryTypeName","src":"1592:4:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13739,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":13817,"src":"1621:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13738,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1470:180:92"},"returnParameters":{"id":13741,"nodeType":"ParameterList","parameters":[],"src":"1668:0:92"},"scope":13886,"src":"1441:1264:92","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13884,"nodeType":"Block","src":"2937:778:92","statements":[{"condition":{"arguments":[{"id":13833,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"2971:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13832,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"2951:19:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2951:27:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13842,"nodeType":"IfStatement","src":"2947:100:92","trueBody":{"id":13841,"nodeType":"Block","src":"2980:67:92","statements":[{"expression":{"id":13839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13835,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"2994:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13837,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"3029:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13836,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"3003:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":13838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3003:33:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2994:42:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13840,"nodeType":"ExpressionStatement","src":"2994:42:92"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13843,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13821,"src":"3238:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":13846,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3256:4:92","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$13886","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$13886","typeString":"contract AaveWrapping"}],"id":13845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3248:7:92","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13844,"name":"address","nodeType":"ElementaryTypeName","src":"3248:7:92","typeDescriptions":{}}},"id":13847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3248:13:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3238:23:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13864,"nodeType":"IfStatement","src":"3234:156:92","trueBody":{"id":13863,"nodeType":"Block","src":"3263:127:92","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13850,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13821,"src":"3285:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13851,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3295:3:92","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3295:10:92","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3285:20:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":13854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3307:18:92","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":13849,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3277:7:92","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3277:49:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13856,"nodeType":"ExpressionStatement","src":"3277:49:92"},{"expression":{"arguments":[{"id":13858,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13821,"src":"3351:6:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13859,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"3359:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},{"id":13860,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"3372:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13857,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15330,"src":"3340:10:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1722_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":13861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3340:39:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13862,"nodeType":"ExpressionStatement","src":"3340:39:92"}]}},{"assignments":[null,13866],"declarations":[null,{"constant":false,"id":13866,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":13884,"src":"3510:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13865,"name":"uint256","nodeType":"ElementaryTypeName","src":"3510:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13873,"initialValue":{"arguments":[{"id":13869,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13823,"src":"3549:9:92","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13870,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"3560:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13871,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13827,"src":"3568:12:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":13867,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"3528:11:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"id":13868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2761,"src":"3528:20:92","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,bool) external returns (uint256,uint256)"}},"id":13872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3528:53:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3507:74:92"},{"condition":{"arguments":[{"id":13875,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"3616:15:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13874,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"3596:19:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:36:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13883,"nodeType":"IfStatement","src":"3592:117:92","trueBody":{"id":13882,"nodeType":"Block","src":"3634:75:92","statements":[{"expression":{"arguments":[{"id":13878,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13829,"src":"3674:15:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13879,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"3691:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13877,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"3648:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3648:50:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13881,"nodeType":"ExpressionStatement","src":"3648:50:92"}]}}]},"functionSelector":"7ab6e03c","id":13885,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapAaveStaticToken","nodeType":"FunctionDefinition","parameters":{"id":13830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13819,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":13885,"src":"2751:27:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"},"typeName":{"id":13818,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2967,"src":"2751:15:92","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":13821,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":13885,"src":"2788:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13820,"name":"address","nodeType":"ElementaryTypeName","src":"2788:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13823,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13885,"src":"2812:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13822,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13825,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13885,"src":"2839:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13824,"name":"uint256","nodeType":"ElementaryTypeName","src":"2839:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13827,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":13885,"src":"2863:17:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13826,"name":"bool","nodeType":"ElementaryTypeName","src":"2863:4:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13829,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":13885,"src":"2890:23:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2890:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2741:178:92"},"returnParameters":{"id":13831,"nodeType":"ParameterList","parameters":[],"src":"2937:0:92"},"scope":13886,"src":"2711:1004:92","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":13887,"src":"1309:2408:92"}],"src":"688:3030:92"},"id":92},"contracts/relayer/BalancerRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/BalancerRelayer.sol","exportedSymbols":{"BalancerRelayer":[14041]},"id":14042,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13888,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:93"},{"id":13889,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:93"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":13890,"nodeType":"ImportDirective","scope":14042,"sourceUnit":1937,"src":"747:86:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol","id":13891,"nodeType":"ImportDirective","scope":14042,"sourceUnit":5528,"src":"835:72:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":13892,"nodeType":"ImportDirective","scope":14042,"sourceUnit":8899,"src":"908:85:93","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":13893,"nodeType":"ImportDirective","scope":14042,"sourceUnit":7642,"src":"994:77:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13895,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":1936,"src":"2495:16:93","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"id":13896,"nodeType":"InheritanceSpecifier","src":"2495:16:93"},{"baseName":{"id":13897,"name":"Version","nodeType":"UserDefinedTypeName","referencedDeclaration":5527,"src":"2513:7:93","typeDescriptions":{"typeIdentifier":"t_contract$_Version_$5527","typeString":"contract Version"}},"id":13898,"nodeType":"InheritanceSpecifier","src":"2513:7:93"},{"baseName":{"id":13899,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":8898,"src":"2522:15:93","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$8898","typeString":"contract ReentrancyGuard"}},"id":13900,"nodeType":"InheritanceSpecifier","src":"2522:15:93"}],"contractDependencies":[1549,1936,5527,8898],"contractKind":"contract","documentation":{"id":13894,"nodeType":"StructuredDocumentation","src":"1073:1393:93","text":" @title Balancer Relayer\n @notice Allows safe multicall execution of a relayer's functions\n @dev\n Relayers are composed of two contracts:\n - This contract, which acts as a single point of entry into the system through a multicall function.\n - A library contract, which defines the allowed behaviour of the relayer.\n The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n without having to expose all these functions on the entrypoint contract itself. The multicall function is\n then a single point of entry for all actions, so we can easily prevent reentrancy.\n This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n the relayer through another function (which must allow reentrancy for multicall logic), and that would\n potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n e.g., sweeping any leftover ETH that should have been refunded to the user.\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n into the library contract."},"fullyImplemented":true,"id":14041,"linearizedBaseContracts":[14041,8898,5527,1549,1936],"name":"BalancerRelayer","nodeType":"ContractDefinition","nodes":[{"id":13903,"libraryName":{"id":13901,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7641,"src":"2550:7:93","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2544:34:93","typeName":{"id":13902,"name":"address","nodeType":"ElementaryTypeName","src":"2562:15:93","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":13906,"libraryName":{"id":13904,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7641,"src":"2589:7:93","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2583:26:93","typeName":{"id":13905,"name":"address","nodeType":"ElementaryTypeName","src":"2601:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":13908,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":14041,"src":"2615:31:93","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":13907,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2615:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":13910,"mutability":"immutable","name":"_library","nodeType":"VariableDeclaration","scope":14041,"src":"2652:34:93","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13909,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":13931,"nodeType":"Block","src":"3051:66:93","statements":[{"expression":{"id":13925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13923,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13908,"src":"3061:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13924,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13913,"src":"3070:5:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"3061:14:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":13926,"nodeType":"ExpressionStatement","src":"3061:14:93"},{"expression":{"id":13929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13927,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"3085:8:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13928,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13915,"src":"3096:14:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3085:25:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13930,"nodeType":"ExpressionStatement","src":"3085:25:93"}]},"documentation":{"id":13911,"nodeType":"StructuredDocumentation","src":"2693:233:93","text":" @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library."},"id":13932,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13920,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13917,"src":"3042:7:93","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13921,"modifierName":{"id":13919,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"3034:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Version_$5527_$","typeString":"type(contract Version)"}},"nodeType":"ModifierInvocation","src":"3034:16:93"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13913,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":13932,"src":"2952:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":13912,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2952:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":13915,"mutability":"mutable","name":"libraryAddress","nodeType":"VariableDeclaration","scope":13932,"src":"2974:22:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13914,"name":"address","nodeType":"ElementaryTypeName","src":"2974:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13917,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":13932,"src":"3006:21:93","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13916,"name":"string","nodeType":"ElementaryTypeName","src":"3006:6:93","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2942:91:93"},"returnParameters":{"id":13922,"nodeType":"ParameterList","parameters":[],"src":"3051:0:93"},"scope":14041,"src":"2931:186:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13947,"nodeType":"Block","src":"3150:520:93","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13936,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3612:3:93","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3612:10:93","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13940,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13908,"src":"3634:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":13939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3626:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13938,"name":"address","nodeType":"ElementaryTypeName","src":"3626:7:93","typeDescriptions":{}}},"id":13941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3626:15:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3612:29:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":13943,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3643:6:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":13944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETH_TRANSFER","nodeType":"MemberAccess","referencedDeclaration":1439,"src":"3643:19:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13935,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"3603:8:93","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":13945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3603:60:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13946,"nodeType":"ExpressionStatement","src":"3603:60:93"}]},"id":13948,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13933,"nodeType":"ParameterList","parameters":[],"src":"3130:2:93"},"returnParameters":{"id":13934,"nodeType":"ParameterList","parameters":[],"src":"3150:0:93"},"scope":14041,"src":"3123:547:93","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1926],"body":{"id":13956,"nodeType":"Block","src":"3736:30:93","statements":[{"expression":{"id":13954,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13908,"src":"3753:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":13953,"id":13955,"nodeType":"Return","src":"3746:13:93"}]},"functionSelector":"8d928af8","id":13957,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":13950,"nodeType":"OverrideSpecifier","overrides":[],"src":"3710:8:93"},"parameters":{"id":13949,"nodeType":"ParameterList","parameters":[],"src":"3693:2:93"},"returnParameters":{"id":13953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13957,"src":"3728:6:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":13951,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3728:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3727:8:93"},"scope":14041,"src":"3676:90:93","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1921],"body":{"id":13965,"nodeType":"Block","src":"3835:32:93","statements":[{"expression":{"id":13963,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"3852:8:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13962,"id":13964,"nodeType":"Return","src":"3845:15:93"}]},"functionSelector":"7678922e","id":13966,"implemented":true,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","overrides":{"id":13959,"nodeType":"OverrideSpecifier","overrides":[],"src":"3808:8:93"},"parameters":{"id":13958,"nodeType":"ParameterList","parameters":[],"src":"3791:2:93"},"returnParameters":{"id":13962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13961,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13966,"src":"3826:7:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13960,"name":"address","nodeType":"ElementaryTypeName","src":"3826:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3825:9:93"},"scope":14041,"src":"3772:95:93","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1935],"body":{"id":14014,"nodeType":"Block","src":"3987:201:93","statements":[{"expression":{"id":13985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13978,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13976,"src":"3997:7:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13982,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13969,"src":"4019:4:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":13983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4019:11:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4007:11:93","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":13979,"name":"bytes","nodeType":"ElementaryTypeName","src":"4011:5:93","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":13980,"nodeType":"ArrayTypeName","src":"4011:7:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":13984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4007:24:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"3997:34:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":13986,"nodeType":"ExpressionStatement","src":"3997:34:93"},{"body":{"id":14009,"nodeType":"Block","src":"4083:76:93","statements":[{"expression":{"id":14007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13998,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13976,"src":"4097:7:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":14000,"indexExpression":{"id":13999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"4105:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4097:10:93","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":14003,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13969,"src":"4140:4:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":14005,"indexExpression":{"id":14004,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"4145:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4140:7:93","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":14001,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"4110:8:93","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":7610,"src":"4110:29:93","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":14006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4110:38:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4097:51:93","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14008,"nodeType":"ExpressionStatement","src":"4097:51:93"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13991,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"4061:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13992,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13969,"src":"4065:4:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":13993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4065:11:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4061:15:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14010,"initializationExpression":{"assignments":[13988],"declarations":[{"constant":false,"id":13988,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14010,"src":"4046:9:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13987,"name":"uint256","nodeType":"ElementaryTypeName","src":"4046:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13990,"initialValue":{"hexValue":"30","id":13989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4058:1:93","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4046:13:93"},"loopExpression":{"expression":{"id":13996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4078:3:93","subExpression":{"id":13995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"4078:1:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13997,"nodeType":"ExpressionStatement","src":"4078:3:93"},"nodeType":"ForStatement","src":"4041:118:93"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14011,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14040,"src":"4169:10:93","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4169:12:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14013,"nodeType":"ExpressionStatement","src":"4169:12:93"}]},"functionSelector":"ac9650d8","id":14015,"implemented":true,"kind":"function","modifiers":[{"id":13973,"modifierName":{"id":13972,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8873,"src":"3941:12:93","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3941:12:93"}],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":13971,"nodeType":"OverrideSpecifier","overrides":[],"src":"3932:8:93"},"parameters":{"id":13970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13969,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14015,"src":"3892:21:93","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":13967,"name":"bytes","nodeType":"ElementaryTypeName","src":"3892:5:93","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":13968,"nodeType":"ArrayTypeName","src":"3892:7:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3891:23:93"},"returnParameters":{"id":13977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13976,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":14015,"src":"3963:22:93","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":13974,"name":"bytes","nodeType":"ElementaryTypeName","src":"3963:5:93","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":13975,"nodeType":"ArrayTypeName","src":"3963:7:93","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3962:24:93"},"scope":14041,"src":"3873:315:93","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14039,"nodeType":"Block","src":"4224:151:93","statements":[{"assignments":[14019],"declarations":[{"constant":false,"id":14019,"mutability":"mutable","name":"remainingEth","nodeType":"VariableDeclaration","scope":14039,"src":"4234:20:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4234:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14025,"initialValue":{"expression":{"arguments":[{"id":14022,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4265:4:93","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$14041","typeString":"contract BalancerRelayer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerRelayer_$14041","typeString":"contract BalancerRelayer"}],"id":14021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4257:7:93","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14020,"name":"address","nodeType":"ElementaryTypeName","src":"4257:7:93","typeDescriptions":{}}},"id":14023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4257:13:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":14024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4257:21:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4234:44:93"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14026,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14019,"src":"4292:12:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4307:1:93","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4292:16:93","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14038,"nodeType":"IfStatement","src":"4288:81:93","trueBody":{"id":14037,"nodeType":"Block","src":"4310:59:93","statements":[{"expression":{"arguments":[{"id":14034,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14019,"src":"4345:12:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":14029,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4324:3:93","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4324:10:93","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":14033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":7531,"src":"4324:20:93","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":14035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:34:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14036,"nodeType":"ExpressionStatement","src":"4324:34:93"}]}}]},"id":14040,"implemented":true,"kind":"function","modifiers":[],"name":"_refundETH","nodeType":"FunctionDefinition","parameters":{"id":14016,"nodeType":"ParameterList","parameters":[],"src":"4213:2:93"},"returnParameters":{"id":14017,"nodeType":"ParameterList","parameters":[],"src":"4224:0:93"},"scope":14041,"src":"4194:181:93","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":14042,"src":"2467:1910:93"}],"src":"688:3690:93"},"id":93},"contracts/relayer/BaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","exportedSymbols":{"BaseRelayerLibrary":[14474]},"id":14475,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14043,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:94"},{"id":14044,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:94"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":14045,"nodeType":"ImportDirective","scope":14475,"sourceUnit":1937,"src":"747:86:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":14046,"nodeType":"ImportDirective","scope":14475,"sourceUnit":3865,"src":"834:65:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":14047,"nodeType":"ImportDirective","scope":14475,"sourceUnit":9108,"src":"900:79:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":14048,"nodeType":"ImportDirective","scope":14475,"sourceUnit":15505,"src":"981:35:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/BalancerRelayer.sol","file":"./BalancerRelayer.sol","id":14049,"nodeType":"ImportDirective","scope":14475,"sourceUnit":14042,"src":"1017:31:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14051,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"2153:19:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":14052,"nodeType":"InheritanceSpecifier","src":"2153:19:94"}],"contractDependencies":[9418,14041,15504],"contractKind":"contract","documentation":{"id":14050,"nodeType":"StructuredDocumentation","src":"1050:1071:94","text":" @title Base Relayer Library\n @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n to take further actions on their behalf.\n @dev\n Relayers are composed of two contracts:\n - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n - A library contract such as this one, which defines the allowed behaviour of the relayer\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n will reject calls from outside the entrypoint context.\n This contract should neither be allowlisted as a relayer, nor called directly by the user.\n No guarantees can be made about fund safety when calling this contract in an improper manner.\n All functions that are meant to be called from the entrypoint via `multicall` must be payable so that they\n do not revert in a call involving ETH. This also applies to functions that do not alter the state and would be\n usually labeled as `view`."},"fullyImplemented":true,"id":14474,"linearizedBaseContracts":[14474,15504,9418],"name":"BaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"id":14055,"libraryName":{"id":14053,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7641,"src":"2185:7:94","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2179:26:94","typeName":{"id":14054,"name":"address","nodeType":"ElementaryTypeName","src":"2197:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":14058,"libraryName":{"id":14056,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"2216:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2210:27:94","typeName":{"id":14057,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2230:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":false,"id":14060,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":14474,"src":"2243:31:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":14059,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2243:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":14062,"mutability":"immutable","name":"_entrypoint","nodeType":"VariableDeclaration","scope":14474,"src":"2280:46:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"},"typeName":{"id":14061,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":1936,"src":"2280:16:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"visibility":"private"},{"body":{"id":14090,"nodeType":"Block","src":"2416:105:94","statements":[{"expression":{"id":14076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14060,"src":"2426:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14075,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14064,"src":"2435:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"2426:14:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":14077,"nodeType":"ExpressionStatement","src":"2426:14:94"},{"expression":{"id":14088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14078,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14062,"src":"2450:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14081,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14064,"src":"2484:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"arguments":[{"id":14084,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2499:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}],"id":14083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2491:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14082,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:94","typeDescriptions":{}}},"id":14085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2491:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14086,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14066,"src":"2506:7:94","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2464:19:94","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IVault_$3864_$_t_address_$_t_string_memory_ptr_$returns$_t_contract$_BalancerRelayer_$14041_$","typeString":"function (contract IVault,address,string memory) returns (contract BalancerRelayer)"},"typeName":{"id":14079,"name":"BalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":14041,"src":"2468:15:94","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$14041","typeString":"contract BalancerRelayer"}}},"id":14087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2464:50:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$14041","typeString":"contract BalancerRelayer"}},"src":"2450:64:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"id":14089,"nodeType":"ExpressionStatement","src":"2450:64:94"}]},"id":14091,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14069,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14064,"src":"2402:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":14070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3863,"src":"2402:10:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$1644_$","typeString":"function () view external returns (contract IWETH)"}},"id":14071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2402:12:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}}],"id":14072,"modifierName":{"id":14068,"name":"IBaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15504,"src":"2382:19:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseRelayerLibrary_$15504_$","typeString":"type(contract IBaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"2382:33:94"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14064,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":14091,"src":"2345:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":14063,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2345:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":14066,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":14091,"src":"2359:21:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14065,"name":"string","nodeType":"ElementaryTypeName","src":"2359:6:94","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2344:37:94"},"returnParameters":{"id":14073,"nodeType":"ParameterList","parameters":[],"src":"2416:0:94"},"scope":14474,"src":"2333:188:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[15307],"body":{"id":14099,"nodeType":"Block","src":"2585:30:94","statements":[{"expression":{"id":14097,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14060,"src":"2602:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":14096,"id":14098,"nodeType":"Return","src":"2595:13:94"}]},"functionSelector":"8d928af8","id":14100,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":14093,"nodeType":"OverrideSpecifier","overrides":[],"src":"2559:8:94"},"parameters":{"id":14092,"nodeType":"ParameterList","parameters":[],"src":"2544:2:94"},"returnParameters":{"id":14096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14100,"src":"2577:6:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":14094,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2577:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2576:8:94"},"scope":14474,"src":"2527:88:94","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":14107,"nodeType":"Block","src":"2687:35:94","statements":[{"expression":{"id":14105,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14062,"src":"2704:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"functionReturnParameters":14104,"id":14106,"nodeType":"Return","src":"2697:18:94"}]},"functionSelector":"7fd0e5d5","id":14108,"implemented":true,"kind":"function","modifiers":[],"name":"getEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":14101,"nodeType":"ParameterList","parameters":[],"src":"2643:2:94"},"returnParameters":{"id":14104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14103,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14108,"src":"2669:16:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"},"typeName":{"id":14102,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":1936,"src":"2669:16:94","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$1936","typeString":"contract IBalancerRelayer"}},"visibility":"internal"}],"src":"2668:18:94"},"scope":14474,"src":"2621:101:94","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14156,"nodeType":"Block","src":"2973:329:94","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14119,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14111,"src":"2991:7:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":14122,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3010:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}],"id":14121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3002:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14120,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:94","typeDescriptions":{}}},"id":14123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3002:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2991:24:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":14126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3019:9:94","subExpression":{"id":14125,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14113,"src":"3020:8:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2991:37:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656c617965722063616e206f6e6c7920617070726f766520697473656c66","id":14128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3030:33:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""},"value":"Relayer can only approve itself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""}],"id":14118,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2983:7:94","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2983:81:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14130,"nodeType":"ExpressionStatement","src":"2983:81:94"},{"assignments":[14132],"declarations":[{"constant":false,"id":14132,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":14156,"src":"3074:17:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14131,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":14147,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":14137,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14060,"src":"3147:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":14138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setRelayerApproval","nodeType":"MemberAccess","referencedDeclaration":3455,"src":"3147:25:94","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":14139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"3147:34:94","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":14140,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3183:3:94","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3183:10:94","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14142,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14111,"src":"3195:7:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14143,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14113,"src":"3204:8:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":14135,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3124:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3124:22:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":14144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3124:89:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":14145,"name":"authorisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14115,"src":"3227:13:94","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":14133,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3094:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3094:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3094:156:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3074:176:94"},{"expression":{"arguments":[{"id":14153,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14132,"src":"3290:4:94","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":14150,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14060,"src":"3269:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":14149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3261:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14148,"name":"address","nodeType":"ElementaryTypeName","src":"3261:7:94","typeDescriptions":{}}},"id":14151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3261:15:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":7556,"src":"3261:28:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":14154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3261:34:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14155,"nodeType":"ExpressionStatement","src":"3261:34:94"}]},"documentation":{"id":14109,"nodeType":"StructuredDocumentation","src":"2728:103:94","text":" @notice Sets whether a particular relayer is authorised to act on behalf of the user"},"functionSelector":"80db15bd","id":14157,"implemented":true,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":14116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14111,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":14157,"src":"2873:15:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14110,"name":"address","nodeType":"ElementaryTypeName","src":"2873:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14113,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":14157,"src":"2898:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14112,"name":"bool","nodeType":"ElementaryTypeName","src":"2898:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14115,"mutability":"mutable","name":"authorisation","nodeType":"VariableDeclaration","scope":14157,"src":"2921:28:94","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14114,"name":"bytes","nodeType":"ElementaryTypeName","src":"2921:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2863:92:94"},"returnParameters":{"id":14117,"nodeType":"ParameterList","parameters":[],"src":"2973:0:94"},"scope":14474,"src":"2836:466:94","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[15314],"body":{"id":14188,"nodeType":"Block","src":"3558:209:94","statements":[{"condition":{"arguments":[{"id":14167,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3592:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14166,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[14351],"referencedDeclaration":14351,"src":"3572:19:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":14168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3572:27:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14176,"nodeType":"IfStatement","src":"3568:100:94","trueBody":{"id":14175,"nodeType":"Block","src":"3601:67:94","statements":[{"expression":{"id":14173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14169,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3615:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14171,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3650:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14170,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[14410],"referencedDeclaration":14410,"src":"3624:25:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":14172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3624:33:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3615:42:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14174,"nodeType":"ExpressionStatement","src":"3615:42:94"}]}},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14182,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[14100],"referencedDeclaration":14100,"src":"3740:8:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":14183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3740:10:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":14181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3732:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14180,"name":"address","nodeType":"ElementaryTypeName","src":"3732:7:94","typeDescriptions":{}}},"id":14184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:19:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14185,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3753:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14177,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"3714:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":9017,"src":"3714:17:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":14186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3714:46:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14187,"nodeType":"ExpressionStatement","src":"3714:46:94"}]},"documentation":{"id":14158,"nodeType":"StructuredDocumentation","src":"3308:167:94","text":" @notice Approves the Vault to use tokens held in the relayer\n @dev This is needed to avoid having to send intermediate tokens back to the user"},"functionSelector":"b6d24737","id":14189,"implemented":true,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","overrides":{"id":14164,"nodeType":"OverrideSpecifier","overrides":[],"src":"3549:8:94"},"parameters":{"id":14163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14160,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":14189,"src":"3502:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14159,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3502:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14162,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14189,"src":"3516:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3516:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3501:30:94"},"returnParameters":{"id":14165,"nodeType":"ParameterList","parameters":[],"src":"3558:0:94"},"scope":14474,"src":"3480:287:94","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[15321],"body":{"id":14205,"nodeType":"Block","src":"4273:60:94","statements":[{"expression":{"id":14203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":14198,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14196,"src":"4286:5:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14199,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4283:9:94","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14201,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14192,"src":"4322:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14200,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14428,"src":"4295:26:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":14202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4295:31:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"4283:43:94","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14204,"nodeType":"ExpressionStatement","src":"4283:43:94"}]},"documentation":{"id":14190,"nodeType":"StructuredDocumentation","src":"3773:397:94","text":" @notice Returns the amount referenced by chained reference `ref`.\n @dev It does not alter the reference (even if it's marked as temporary).\n This function does not alter the state in any way. It is not marked as view because it has to be `payable`\n in order to be used in a batch transaction.\n Use a static call to read the state off-chain."},"functionSelector":"f3cab685","id":14206,"implemented":true,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":14194,"nodeType":"OverrideSpecifier","overrides":[],"src":"4240:8:94"},"parameters":{"id":14193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14192,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14206,"src":"4210:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14191,"name":"uint256","nodeType":"ElementaryTypeName","src":"4210:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4209:13:94"},"returnParameters":{"id":14197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14196,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14206,"src":"4258:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14195,"name":"uint256","nodeType":"ElementaryTypeName","src":"4258:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4257:15:94"},"scope":14474,"src":"4175:158:94","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[15330],"body":{"id":14260,"nodeType":"Block","src":"4453:246:94","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14216,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"4467:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4477:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4467:11:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14220,"nodeType":"IfStatement","src":"4463:24:94","trueBody":{"functionReturnParameters":14215,"id":14219,"nodeType":"Return","src":"4480:7:94"}},{"assignments":[14224],"declarations":[{"constant":false,"id":14224,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14260,"src":"4496:22:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14222,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4496:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14223,"nodeType":"ArrayTypeName","src":"4496:8:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14230,"initialValue":{"arguments":[{"hexValue":"31","id":14228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4534:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":14227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4521:12:94","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14225,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4525:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14226,"nodeType":"ArrayTypeName","src":"4525:8:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4521:15:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4496:40:94"},{"expression":{"id":14235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14231,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14224,"src":"4546:6:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14233,"indexExpression":{"hexValue":"30","id":14232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4553:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4546:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14234,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"4558:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"4546:17:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14236,"nodeType":"ExpressionStatement","src":"4546:17:94"},{"assignments":[14241],"declarations":[{"constant":false,"id":14241,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":14260,"src":"4573:24:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14239,"name":"uint256","nodeType":"ElementaryTypeName","src":"4573:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14240,"nodeType":"ArrayTypeName","src":"4573:9:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14247,"initialValue":{"arguments":[{"hexValue":"31","id":14245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4614:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":14244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4600:13:94","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14242,"name":"uint256","nodeType":"ElementaryTypeName","src":"4604:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14243,"nodeType":"ArrayTypeName","src":"4604:9:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4600:16:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4573:43:94"},{"expression":{"id":14252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14248,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"4626:7:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14250,"indexExpression":{"hexValue":"30","id":14249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4634:1:94","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4626:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14251,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14212,"src":"4639:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4626:19:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14253,"nodeType":"ExpressionStatement","src":"4626:19:94"},{"expression":{"arguments":[{"id":14255,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14208,"src":"4668:6:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14256,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14224,"src":"4676:6:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":14257,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"4684:7:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14254,"name":"_pullTokens","nodeType":"Identifier","overloadedDeclarations":[14334],"referencedDeclaration":14334,"src":"4656:11:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20[] memory,uint256[] memory)"}},"id":14258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4656:36:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14259,"nodeType":"ExpressionStatement","src":"4656:36:94"}]},"id":14261,"implemented":true,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","overrides":{"id":14214,"nodeType":"OverrideSpecifier","overrides":[],"src":"4444:8:94"},"parameters":{"id":14213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14208,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14261,"src":"4368:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14207,"name":"address","nodeType":"ElementaryTypeName","src":"4368:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14210,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":14261,"src":"4392:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14209,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4392:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14212,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14261,"src":"4414:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4414:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4358:76:94"},"returnParameters":{"id":14215,"nodeType":"ParameterList","parameters":[],"src":"4453:0:94"},"scope":14474,"src":"4339:360:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15341],"body":{"id":14333,"nodeType":"Block","src":"4840:493:94","statements":[{"assignments":[14277],"declarations":[{"constant":false,"id":14277,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":14333,"src":"4850:33:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":14275,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"4850:20:94","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":14276,"nodeType":"ArrayTypeName","src":"4850:22:94","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"id":14284,"initialValue":{"arguments":[{"expression":{"id":14281,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14266,"src":"4913:6:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4913:13:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4886:26:94","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.UserBalanceOp memory[] memory)"},"typeName":{"baseType":{"id":14278,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"4890:20:94","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":14279,"nodeType":"ArrayTypeName","src":"4890:22:94","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}}},"id":14283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4886:41:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4850:77:94"},{"body":{"id":14325,"nodeType":"Block","src":"4977:306:94","statements":[{"expression":{"id":14323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14295,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14277,"src":"4991:3:94","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":14297,"indexExpression":{"id":14296,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14286,"src":"4995:1:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4991:6:94","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"baseExpression":{"id":14303,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14266,"src":"5061:6:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14305,"indexExpression":{"id":14304,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14286,"src":"5068:1:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:9:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":14302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5053:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14301,"name":"address","nodeType":"ElementaryTypeName","src":"5053:7:94","typeDescriptions":{}}},"id":14306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5053:18:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14300,"name":"IAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"5046:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsset_$3151_$","typeString":"type(contract IAsset)"}},"id":14307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5046:26:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},{"baseExpression":{"id":14308,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14269,"src":"5098:7:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14310,"indexExpression":{"id":14309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14286,"src":"5106:1:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5098:10:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14311,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14263,"src":"5134:6:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":14316,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5185:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}],"id":14315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5177:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14314,"name":"address","nodeType":"ElementaryTypeName","src":"5177:7:94","typeDescriptions":{}}},"id":14317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5177:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5169:8:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":14312,"name":"address","nodeType":"ElementaryTypeName","src":"5169:8:94","stateMutability":"payable","typeDescriptions":{}}},"id":14318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5169:22:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"expression":{"id":14319,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"5215:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":14320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOpKind","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"5215:24:94","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_UserBalanceOpKind_$3499_$","typeString":"type(enum IVault.UserBalanceOpKind)"}},"id":14321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_EXTERNAL","nodeType":"MemberAccess","src":"5215:42:94","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"}],"expression":{"id":14298,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"5000:6:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":14299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOp","nodeType":"MemberAccess","referencedDeclaration":3494,"src":"5000:20:94","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UserBalanceOp_$3494_storage_ptr_$","typeString":"type(struct IVault.UserBalanceOp storage pointer)"}},"id":14322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["asset","amount","sender","recipient","kind"],"nodeType":"FunctionCall","src":"5000:272:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"src":"4991:281:94","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":14324,"nodeType":"ExpressionStatement","src":"4991:281:94"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14288,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14286,"src":"4953:1:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14289,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14266,"src":"4957:6:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4957:13:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4953:17:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14326,"initializationExpression":{"assignments":[14286],"declarations":[{"constant":false,"id":14286,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":14326,"src":"4942:9:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14285,"name":"uint256","nodeType":"ElementaryTypeName","src":"4942:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14287,"nodeType":"VariableDeclarationStatement","src":"4942:9:94"},"loopExpression":{"expression":{"id":14293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4972:3:94","subExpression":{"id":14292,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14286,"src":"4972:1:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14294,"nodeType":"ExpressionStatement","src":"4972:3:94"},"nodeType":"ForStatement","src":"4937:346:94"},{"expression":{"arguments":[{"id":14330,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14277,"src":"5322:3:94","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14327,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[14100],"referencedDeclaration":14100,"src":"5293:8:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":14328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5293:10:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":14329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":3483,"src":"5293:28:94","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":14331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5293:33:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14332,"nodeType":"ExpressionStatement","src":"5293:33:94"}]},"id":14334,"implemented":true,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","overrides":{"id":14271,"nodeType":"OverrideSpecifier","overrides":[],"src":"4831:8:94"},"parameters":{"id":14270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14263,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14334,"src":"4735:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14262,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14266,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14334,"src":"4759:22:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14264,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4759:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14265,"nodeType":"ArrayTypeName","src":"4759:8:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":14269,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":14334,"src":"4791:24:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14267,"name":"uint256","nodeType":"ElementaryTypeName","src":"4791:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14268,"nodeType":"ArrayTypeName","src":"4791:9:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4725:96:94"},"returnParameters":{"id":14272,"nodeType":"ParameterList","parameters":[],"src":"4840:0:94"},"scope":14474,"src":"4705:628:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15348],"body":{"id":14350,"nodeType":"Block","src":"5534:275:94","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14343,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14337,"src":"5644:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":14344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5653:66:94","typeDescriptions":{"typeIdentifier":"t_rational_115763819684279741274297652248676021157016744923290554136127638308692447723520_by_1","typeString":"int_const 1157...(70 digits omitted)...3520"},"value":"0xfff0000000000000000000000000000000000000000000000000000000000000"},"src":"5644:75:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14346,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5643:77:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":14347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5736:66:94","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"5643:159:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14342,"id":14349,"nodeType":"Return","src":"5624:178:94"}]},"documentation":{"id":14335,"nodeType":"StructuredDocumentation","src":"5339:107:94","text":" @dev Returns true if `amount` is not actually an amount, but rather a chained reference."},"id":14351,"implemented":true,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","overrides":{"id":14339,"nodeType":"OverrideSpecifier","overrides":[],"src":"5510:8:94"},"parameters":{"id":14338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14337,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14351,"src":"5480:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14336,"name":"uint256","nodeType":"ElementaryTypeName","src":"5480:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5479:16:94"},"returnParameters":{"id":14342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14341,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14351,"src":"5528:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14340,"name":"bool","nodeType":"ElementaryTypeName","src":"5528:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5527:6:94"},"scope":14474,"src":"5451:358:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14366,"nodeType":"Block","src":"6009:422:94","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14359,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14354,"src":"6266:6:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666666303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":14360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6275:66:94","typeDescriptions":{"typeIdentifier":"t_rational_115790322390251417039241401711187164934754157181743688420499462401711837020160_by_1","typeString":"int_const 1157...(70 digits omitted)...0160"},"value":"0xffff000000000000000000000000000000000000000000000000000000000000"},"src":"6266:75:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6265:77:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":14363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6358:66:94","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"6265:159:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14358,"id":14365,"nodeType":"Return","src":"6246:178:94"}]},"documentation":{"id":14352,"nodeType":"StructuredDocumentation","src":"5815:106:94","text":" @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it."},"id":14367,"implemented":true,"kind":"function","modifiers":[],"name":"_isTemporaryChainedReference","nodeType":"FunctionDefinition","parameters":{"id":14355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14354,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14367,"src":"5964:14:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14353,"name":"uint256","nodeType":"ElementaryTypeName","src":"5964:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5963:16:94"},"returnParameters":{"id":14358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14357,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14367,"src":"6003:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14356,"name":"bool","nodeType":"ElementaryTypeName","src":"6003:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6002:6:94"},"scope":14474,"src":"5926:505:94","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[15355],"body":{"id":14383,"nodeType":"Block","src":"6614:311:94","statements":[{"assignments":[14377],"declarations":[{"constant":false,"id":14377,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":14383,"src":"6624:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6624:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14381,"initialValue":{"arguments":[{"id":14379,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"6655:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14378,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"6639:15:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":14380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6639:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6624:35:94"},{"AST":{"nodeType":"YulBlock","src":"6876:43:94","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"6897:4:94"},{"name":"value","nodeType":"YulIdentifier","src":"6903:5:94"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6890:6:94"},"nodeType":"YulFunctionCall","src":"6890:19:94"},"nodeType":"YulExpressionStatement","src":"6890:19:94"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":14377,"isOffset":false,"isSlot":false,"src":"6897:4:94","valueSize":1},{"declaration":14372,"isOffset":false,"isSlot":false,"src":"6903:5:94","valueSize":1}],"id":14382,"nodeType":"InlineAssembly","src":"6867:52:94"}]},"documentation":{"id":14368,"nodeType":"StructuredDocumentation","src":"6437:91:94","text":" @dev Stores `value` as the amount referenced by chained reference `ref`."},"id":14384,"implemented":true,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":14374,"nodeType":"OverrideSpecifier","overrides":[],"src":"6605:8:94"},"parameters":{"id":14373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14370,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14384,"src":"6568:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14369,"name":"uint256","nodeType":"ElementaryTypeName","src":"6568:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14372,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14384,"src":"6581:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14371,"name":"uint256","nodeType":"ElementaryTypeName","src":"6581:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6567:28:94"},"returnParameters":{"id":14375,"nodeType":"ParameterList","parameters":[],"src":"6614:0:94"},"scope":14474,"src":"6533:392:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15362],"body":{"id":14409,"nodeType":"Block","src":"7365:291:94","statements":[{"assignments":[14394,14396],"declarations":[{"constant":false,"id":14394,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":14409,"src":"7376:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7376:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14396,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14409,"src":"7390:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14395,"name":"uint256","nodeType":"ElementaryTypeName","src":"7390:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14400,"initialValue":{"arguments":[{"id":14398,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14387,"src":"7434:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14397,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14428,"src":"7407:26:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":14399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7407:31:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7375:63:94"},{"condition":{"arguments":[{"id":14402,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14387,"src":"7482:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14401,"name":"_isTemporaryChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"7453:28:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":14403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7453:33:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14406,"nodeType":"IfStatement","src":"7449:179:94","trueBody":{"id":14405,"nodeType":"Block","src":"7488:140:94","statements":[{"AST":{"nodeType":"YulBlock","src":"7571:47:94","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7596:4:94"},{"kind":"number","nodeType":"YulLiteral","src":"7602:1:94","type":"","value":"0"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"7589:6:94"},"nodeType":"YulFunctionCall","src":"7589:15:94"},"nodeType":"YulExpressionStatement","src":"7589:15:94"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":14394,"isOffset":false,"isSlot":false,"src":"7596:4:94","valueSize":1}],"id":14404,"nodeType":"InlineAssembly","src":"7562:56:94"}]}},{"expression":{"id":14407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"7644:5:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14392,"id":14408,"nodeType":"Return","src":"7637:12:94"}]},"documentation":{"id":14385,"nodeType":"StructuredDocumentation","src":"6931:345:94","text":" @dev Returns the amount referenced by chained reference `ref`.\n If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n (see `_isTemporaryChainedReference` function)."},"id":14410,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":14389,"nodeType":"OverrideSpecifier","overrides":[],"src":"7338:8:94"},"parameters":{"id":14388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14387,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14410,"src":"7316:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14386,"name":"uint256","nodeType":"ElementaryTypeName","src":"7316:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7315:13:94"},"returnParameters":{"id":14392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14391,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14410,"src":"7356:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14390,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7355:9:94"},"scope":14474,"src":"7281:375:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14427,"nodeType":"Block","src":"7950:304:94","statements":[{"expression":{"id":14424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14420,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14416,"src":"7960:4:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14422,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"7983:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14421,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"7967:15:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7967:20:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7960:27:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14425,"nodeType":"ExpressionStatement","src":"7960:27:94"},{"AST":{"nodeType":"YulBlock","src":"8204:44:94","statements":[{"nodeType":"YulAssignment","src":"8218:20:94","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"8233:4:94"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"8227:5:94"},"nodeType":"YulFunctionCall","src":"8227:11:94"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8218:5:94"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":14416,"isOffset":false,"isSlot":false,"src":"8233:4:94","valueSize":1},{"declaration":14418,"isOffset":false,"isSlot":false,"src":"8218:5:94","valueSize":1}],"id":14426,"nodeType":"InlineAssembly","src":"8195:53:94"}]},"documentation":{"id":14411,"nodeType":"StructuredDocumentation","src":"7662:183:94","text":" @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n It does not alter the reference (even if it's marked as temporary)."},"id":14428,"implemented":true,"kind":"function","modifiers":[],"name":"_peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":14414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14413,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14428,"src":"7886:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14412,"name":"uint256","nodeType":"ElementaryTypeName","src":"7886:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7885:13:94"},"returnParameters":{"id":14419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14416,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":14428,"src":"7921:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7921:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14418,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14428,"src":"7935:13:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14417,"name":"uint256","nodeType":"ElementaryTypeName","src":"7935:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7920:29:94"},"scope":14474,"src":"7850:404:94","stateMutability":"view","virtual":false,"visibility":"private"},{"constant":false,"id":14433,"mutability":"immutable","name":"_TEMP_STORAGE_SUFFIX","nodeType":"VariableDeclaration","scope":14474,"src":"8312:91:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14429,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8312:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"62616c616e6365722e626173652d72656c617965722d6c696272617279","id":14431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8371:31:94","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""},"value":"balancer.base-relayer-library"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""}],"id":14430,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8361:9:94","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8361:42:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":14458,"nodeType":"Block","src":"8479:526:94","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":14448,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14435,"src":"8964:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14447,"name":"_removeReferencePrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14473,"src":"8941:22:94","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":14449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8941:27:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14450,"name":"_TEMP_STORAGE_SUFFIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14433,"src":"8970:20:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":14445,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8924:3:94","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8924:16:94","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8924:67:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14444,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8914:9:94","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8914:78:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8906:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14442,"name":"uint256","nodeType":"ElementaryTypeName","src":"8906:7:94","typeDescriptions":{}}},"id":14453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8906:87:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8996:1:94","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8906:91:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8898:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8898:7:94","typeDescriptions":{}}},"id":14456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8898:100:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":14439,"id":14457,"nodeType":"Return","src":"8891:107:94"}]},"id":14459,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nodeType":"FunctionDefinition","parameters":{"id":14436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14435,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14459,"src":"8435:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14434,"name":"uint256","nodeType":"ElementaryTypeName","src":"8435:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8434:13:94"},"returnParameters":{"id":14439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14438,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14459,"src":"8470:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8470:7:94","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8469:9:94"},"scope":14474,"src":"8410:595:94","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":14472,"nodeType":"Block","src":"9272:98:94","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14467,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14462,"src":"9290:3:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":14468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9296:66:94","typeDescriptions":{"typeIdentifier":"t_rational_1766847064778384329583297500742918515827483896875618958121606201292619775_by_1","typeString":"int_const 1766...(65 digits omitted)...9775"},"value":"0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"src":"9290:72:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14470,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9289:74:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14466,"id":14471,"nodeType":"Return","src":"9282:81:94"}]},"documentation":{"id":14460,"nodeType":"StructuredDocumentation","src":"9011:180:94","text":" @dev Returns a reference without its prefix.\n Use this function to calculate the storage slot so that it's the same for temporary and read-only references."},"id":14473,"implemented":true,"kind":"function","modifiers":[],"name":"_removeReferencePrefix","nodeType":"FunctionDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14462,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14473,"src":"9228:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14461,"name":"uint256","nodeType":"ElementaryTypeName","src":"9228:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9227:13:94"},"returnParameters":{"id":14466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14465,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14473,"src":"9263:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14464,"name":"uint256","nodeType":"ElementaryTypeName","src":"9263:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9262:9:94"},"scope":14474,"src":"9196:174:94","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":14475,"src":"2122:7250:94"}],"src":"688:8685:94"},"id":94},"contracts/relayer/CompoundV2Wrapping.sol":{"ast":{"absolutePath":"contracts/relayer/CompoundV2Wrapping.sol","exportedSymbols":{"CompoundV2Wrapping":[14601]},"id":14602,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14476,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:95"},{"id":14477,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:95"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol","id":14478,"nodeType":"ImportDirective","scope":14602,"sourceUnit":2104,"src":"747:77:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":14479,"nodeType":"ImportDirective","scope":14602,"sourceUnit":15505,"src":"826:35:95","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14481,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1094:19:95","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":14482,"nodeType":"InheritanceSpecifier","src":"1094:19:95"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":14480,"nodeType":"StructuredDocumentation","src":"863:190:95","text":" @title CompoundV2Wrapping\n @notice Allows users to wrap and unwrap Compound v2 cTokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":14601,"linearizedBaseContracts":[14601,15504,9418],"name":"CompoundV2Wrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":14542,"nodeType":"Block","src":"1305:838:95","statements":[{"assignments":[14496],"declarations":[{"constant":false,"id":14496,"mutability":"mutable","name":"mainToken","nodeType":"VariableDeclaration","scope":14542,"src":"1315:16:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14495,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1315:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14502,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14498,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1341:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":14499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":2086,"src":"1341:23:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1341:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14497,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1334:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":14501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:33:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1315:52:95"},{"expression":{"id":14513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14503,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14490,"src":"1377:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14505,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14496,"src":"1427:9:95","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":14508,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1446:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}],"id":14507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1438:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14506,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:95","typeDescriptions":{}}},"id":14509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1438:21:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14490,"src":"1461:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14511,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14486,"src":"1469:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14504,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1386:40:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":14512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1386:90:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1377:99:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14514,"nodeType":"ExpressionStatement","src":"1377:99:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14518,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14490,"src":"1917:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14516,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1899:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":14517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":2094,"src":"1899:17:95","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":14519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1899:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1928:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1899:30:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7772617070696e67206661696c6564","id":14522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1931:17:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_af4099f250af0cd8a540b35bbed75f7715a42da22721fabaa9961d577d9fc63d","typeString":"literal_string \"wrapping failed\""},"value":"wrapping failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_af4099f250af0cd8a540b35bbed75f7715a42da22721fabaa9961d577d9fc63d","typeString":"literal_string \"wrapping failed\""}],"id":14515,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1891:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1891:58:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14524,"nodeType":"ExpressionStatement","src":"1891:58:95"},{"assignments":[14526],"declarations":[{"constant":false,"id":14526,"mutability":"mutable","name":"receivedWrappedAmount","nodeType":"VariableDeclaration","scope":14542,"src":"1960:29:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1960:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14534,"initialValue":{"arguments":[{"arguments":[{"id":14531,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2023:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV2Wrapping_$14601","typeString":"contract CompoundV2Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV2Wrapping_$14601","typeString":"contract CompoundV2Wrapping"}],"id":14530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2015:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14529,"name":"address","nodeType":"ElementaryTypeName","src":"2015:7:95","typeDescriptions":{}}},"id":14532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14527,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1992:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":14528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"1992:22:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1992:37:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1960:69:95"},{"expression":{"arguments":[{"id":14536,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"2072:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},{"id":14537,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14488,"src":"2086:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14538,"name":"receivedWrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14526,"src":"2097:21:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14539,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14492,"src":"2120:15:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14535,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2040:31:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2040:96:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14541,"nodeType":"ExpressionStatement","src":"2040:96:95"}]},"functionSelector":"2c25efe1","id":14543,"implemented":true,"kind":"function","modifiers":[],"name":"wrapCompoundV2","nodeType":"FunctionDefinition","parameters":{"id":14493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14484,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14543,"src":"1153:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"},"typeName":{"id":14483,"name":"ICToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2103,"src":"1153:7:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"visibility":"internal"},{"constant":false,"id":14486,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14543,"src":"1183:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14485,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14488,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14543,"src":"1207:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14487,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14490,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14543,"src":"1234:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14492,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14543,"src":"1258:23:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14491,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1143:144:95"},"returnParameters":{"id":14494,"nodeType":"ParameterList","parameters":[],"src":"1305:0:95"},"scope":14601,"src":"1120:1023:95","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14599,"nodeType":"Block","src":"2336:798:95","statements":[{"expression":{"id":14562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14556,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14551,"src":"2346:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14558,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"2382:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},{"id":14559,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14551,"src":"2396:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14560,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14547,"src":"2404:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14557,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2355:26:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":14561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2355:56:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2346:65:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14563,"nodeType":"ExpressionStatement","src":"2346:65:95"},{"assignments":[14565],"declarations":[{"constant":false,"id":14565,"mutability":"mutable","name":"mainToken","nodeType":"VariableDeclaration","scope":14599,"src":"2422:16:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14564,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2422:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14571,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14567,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"2448:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":14568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":2086,"src":"2448:23:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2448:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14566,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2441:6:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":14570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2441:33:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2422:52:95"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14575,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14551,"src":"2916:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14573,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"2896:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":14574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":2102,"src":"2896:19:95","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2896:27:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2927:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2896:32:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e7772617070696e67206661696c6564","id":14579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2930:19:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_32c74a083fe7938c1c615a229bcd8abfd2d85b4b601da95ea34936fb58efd6c1","typeString":"literal_string \"unwrapping failed\""},"value":"unwrapping failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_32c74a083fe7938c1c615a229bcd8abfd2d85b4b601da95ea34936fb58efd6c1","typeString":"literal_string \"unwrapping failed\""}],"id":14572,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2888:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2888:62:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14581,"nodeType":"ExpressionStatement","src":"2888:62:95"},{"assignments":[14583],"declarations":[{"constant":false,"id":14583,"mutability":"mutable","name":"withdrawnMainAmount","nodeType":"VariableDeclaration","scope":14599,"src":"2961:27:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14582,"name":"uint256","nodeType":"ElementaryTypeName","src":"2961:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14591,"initialValue":{"arguments":[{"arguments":[{"id":14588,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3019:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV2Wrapping_$14601","typeString":"contract CompoundV2Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV2Wrapping_$14601","typeString":"contract CompoundV2Wrapping"}],"id":14587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3011:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14586,"name":"address","nodeType":"ElementaryTypeName","src":"3011:7:95","typeDescriptions":{}}},"id":14589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3011:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14584,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14565,"src":"2991:9:95","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2991:19:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:34:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2961:64:95"},{"expression":{"arguments":[{"id":14593,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14565,"src":"3068:9:95","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":14594,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14549,"src":"3079:9:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14595,"name":"withdrawnMainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14583,"src":"3090:19:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14596,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14553,"src":"3111:15:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14592,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"3036:31:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":14597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3036:91:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14598,"nodeType":"ExpressionStatement","src":"3036:91:95"}]},"functionSelector":"44b6ac74","id":14600,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapCompoundV2","nodeType":"FunctionDefinition","parameters":{"id":14554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14545,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14600,"src":"2184:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"},"typeName":{"id":14544,"name":"ICToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2103,"src":"2184:7:95","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"visibility":"internal"},{"constant":false,"id":14547,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14600,"src":"2214:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14546,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14549,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14600,"src":"2238:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14548,"name":"address","nodeType":"ElementaryTypeName","src":"2238:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14551,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14600,"src":"2265:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14550,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14553,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14600,"src":"2289:23:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2174:144:95"},"returnParameters":{"id":14555,"nodeType":"ParameterList","parameters":[],"src":"2336:0:95"},"scope":14601,"src":"2149:985:95","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14602,"src":"1054:2082:95"}],"src":"688:2449:95"},"id":95},"contracts/relayer/ERC4626Wrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","exportedSymbols":{"ERC4626Wrapping":[14696]},"id":14697,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14603,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:96"},{"id":14604,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:96"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","id":14605,"nodeType":"ImportDirective","scope":14697,"sourceUnit":1630,"src":"747:81:96","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":14606,"nodeType":"ImportDirective","scope":14697,"sourceUnit":15505,"src":"830:35:96","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14608,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1087:19:96","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":14609,"nodeType":"InheritanceSpecifier","src":"1087:19:96"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":14607,"nodeType":"StructuredDocumentation","src":"867:182:96","text":" @title ERC4626Wrapping\n @notice Allows users to wrap and unwrap ERC4626 tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":14696,"linearizedBaseContracts":[14696,15504,9418],"name":"ERC4626Wrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":14655,"nodeType":"Block","src":"1296:299:96","statements":[{"assignments":[14623],"declarations":[{"constant":false,"id":14623,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":14655,"src":"1306:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14622,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1306:6:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14629,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14625,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14611,"src":"1333:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},"id":14626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":1606,"src":"1333:18:96","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1333:20:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14624,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1326:6:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1326:28:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1306:48:96"},{"expression":{"id":14640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14630,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14617,"src":"1365:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14632,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14623,"src":"1415:10:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":14635,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14611,"src":"1435:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}],"id":14634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1427:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14633,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:96","typeDescriptions":{}}},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:21:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14637,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14617,"src":"1450:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14638,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14613,"src":"1458:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14631,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1374:40:96","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":14639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1374:91:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1365:100:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14641,"nodeType":"ExpressionStatement","src":"1365:100:96"},{"assignments":[14643],"declarations":[{"constant":false,"id":14643,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":14655,"src":"1476:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14649,"initialValue":{"arguments":[{"id":14646,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14617,"src":"1514:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14647,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"1522:9:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14644,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14611,"src":"1493:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},"id":14645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":1588,"src":"1493:20:96","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":14648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:39:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1476:56:96"},{"expression":{"arguments":[{"id":14651,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14619,"src":"1564:15:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14652,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14643,"src":"1581:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14650,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"1543:20:96","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1543:45:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14654,"nodeType":"ExpressionStatement","src":"1543:45:96"}]},"functionSelector":"6d307ea8","id":14656,"implemented":true,"kind":"function","modifiers":[],"name":"wrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":14620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14611,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14656,"src":"1143:21:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"},"typeName":{"id":14610,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1629,"src":"1143:8:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14613,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14656,"src":"1174:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14612,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14615,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14656,"src":"1198:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14614,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14617,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14656,"src":"1225:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14616,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14619,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14656,"src":"1249:23:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1249:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:145:96"},"returnParameters":{"id":14621,"nodeType":"ParameterList","parameters":[],"src":"1296:0:96"},"scope":14696,"src":"1113:482:96","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14694,"nodeType":"Block","src":"1786:219:96","statements":[{"expression":{"id":14675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14669,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"1796:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14671,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"1832:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},{"id":14672,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"1846:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14673,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14660,"src":"1854:6:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14670,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"1805:26:96","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":14674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1805:56:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1796:65:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14676,"nodeType":"ExpressionStatement","src":"1796:65:96"},{"assignments":[14678],"declarations":[{"constant":false,"id":14678,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":14694,"src":"1872:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14677,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14688,"initialValue":{"arguments":[{"id":14681,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14664,"src":"1909:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14682,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"1917:9:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14685,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1936:4:96","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$14696","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$14696","typeString":"contract ERC4626Wrapping"}],"id":14684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1928:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14683,"name":"address","nodeType":"ElementaryTypeName","src":"1928:7:96","typeDescriptions":{}}},"id":14686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1928:13:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14679,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14658,"src":"1889:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},"id":14680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"1889:19:96","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":14687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1889:53:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1872:70:96"},{"expression":{"arguments":[{"id":14690,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14666,"src":"1974:15:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14691,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"1991:6:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14689,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"1953:20:96","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1953:45:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14693,"nodeType":"ExpressionStatement","src":"1953:45:96"}]},"functionSelector":"efe69108","id":14695,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":14667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14658,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14695,"src":"1633:21:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"},"typeName":{"id":14657,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1629,"src":"1633:8:96","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1629","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14660,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14695,"src":"1664:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14659,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14662,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14695,"src":"1688:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14661,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14664,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14695,"src":"1715:14:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1715:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14666,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14695,"src":"1739:23:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1739:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1623:145:96"},"returnParameters":{"id":14668,"nodeType":"ParameterList","parameters":[],"src":"1786:0:96"},"scope":14696,"src":"1601:404:96","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14697,"src":"1050:957:96"}],"src":"688:1320:96"},"id":96},"contracts/relayer/EulerWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/EulerWrapping.sol","exportedSymbols":{"EulerWrapping":[14823]},"id":14824,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14698,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:97"},{"id":14699,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:97"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol","id":14700,"nodeType":"ImportDirective","scope":14824,"sourceUnit":2148,"src":"747:81:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":14701,"nodeType":"ImportDirective","scope":14824,"sourceUnit":15505,"src":"830:35:97","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14703,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1081:19:97","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":14704,"nodeType":"InheritanceSpecifier","src":"1081:19:97"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":14702,"nodeType":"StructuredDocumentation","src":"867:178:97","text":" @title EulerWrapping\n @notice Allows users to wrap and unwrap Euler tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":14823,"linearizedBaseContracts":[14823,15504,9418],"name":"EulerWrapping","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14711,"mutability":"constant","name":"MAX_UINT256","nodeType":"VariableDeclaration","scope":14823,"src":"1171:56:97","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14705,"name":"uint256","nodeType":"ElementaryTypeName","src":"1171:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":14708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1215:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14707,"name":"uint256","nodeType":"ElementaryTypeName","src":"1215:7:97","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14706,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1210:4:97","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1210:13:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1210:17:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":14767,"nodeType":"Block","src":"1449:495:97","statements":[{"assignments":[14727],"declarations":[{"constant":false,"id":14727,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":14767,"src":"1459:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14726,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1459:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14733,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14729,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1486:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":14730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlyingAsset","nodeType":"MemberAccess","referencedDeclaration":2146,"src":"1486:28:97","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1486:30:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14728,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1479:6:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":14732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:38:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1459:58:97"},{"expression":{"id":14741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14734,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14721,"src":"1528:6:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14736,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14727,"src":"1578:10:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":14737,"name":"eulerProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14715,"src":"1590:13:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14738,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14721,"src":"1605:6:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14739,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14717,"src":"1613:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14735,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1537:40:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":14740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1537:83:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1528:92:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14742,"nodeType":"ExpressionStatement","src":"1528:92:97"},{"expression":{"arguments":[{"hexValue":"30","id":14746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1740:1:97","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":14747,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14721,"src":"1743:6:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14743,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1719:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":14745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2132,"src":"1719:20:97","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) external"}},"id":14748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1719:31:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14749,"nodeType":"ExpressionStatement","src":"1719:31:97"},{"assignments":[14751],"declarations":[{"constant":false,"id":14751,"mutability":"mutable","name":"receivedWrappedAmount","nodeType":"VariableDeclaration","scope":14767,"src":"1761:29:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1761:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14759,"initialValue":{"arguments":[{"arguments":[{"id":14756,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1824:4:97","typeDescriptions":{"typeIdentifier":"t_contract$_EulerWrapping_$14823","typeString":"contract EulerWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EulerWrapping_$14823","typeString":"contract EulerWrapping"}],"id":14755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1816:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14754,"name":"address","nodeType":"ElementaryTypeName","src":"1816:7:97","typeDescriptions":{}}},"id":14757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1816:13:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14752,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1793:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":14753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"1793:22:97","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1793:37:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1761:69:97"},{"expression":{"arguments":[{"id":14761,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14713,"src":"1873:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},{"id":14762,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14719,"src":"1887:9:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14763,"name":"receivedWrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14751,"src":"1898:21:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14764,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14723,"src":"1921:15:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14760,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"1841:31:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":14765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1841:96:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14766,"nodeType":"ExpressionStatement","src":"1841:96:97"}]},"functionSelector":"52b88746","id":14768,"implemented":true,"kind":"function","modifiers":[],"name":"wrapEuler","nodeType":"FunctionDefinition","parameters":{"id":14724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14713,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14768,"src":"1262:24:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"},"typeName":{"id":14712,"name":"IEulerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2147,"src":"1262:11:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"visibility":"internal"},{"constant":false,"id":14715,"mutability":"mutable","name":"eulerProtocol","nodeType":"VariableDeclaration","scope":14768,"src":"1296:21:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14714,"name":"address","nodeType":"ElementaryTypeName","src":"1296:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14717,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14768,"src":"1327:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14716,"name":"address","nodeType":"ElementaryTypeName","src":"1327:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14719,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14768,"src":"1351:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14718,"name":"address","nodeType":"ElementaryTypeName","src":"1351:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14721,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14768,"src":"1378:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1378:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14723,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14768,"src":"1402:23:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14722,"name":"uint256","nodeType":"ElementaryTypeName","src":"1402:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1252:179:97"},"returnParameters":{"id":14725,"nodeType":"ParameterList","parameters":[],"src":"1449:0:97"},"scope":14823,"src":"1234:710:97","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14821,"nodeType":"Block","src":"2136:782:97","statements":[{"expression":{"id":14787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14781,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14776,"src":"2146:6:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14783,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14770,"src":"2182:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},{"id":14784,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14776,"src":"2196:6:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14785,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14772,"src":"2204:6:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14782,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2155:26:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":14786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2155:56:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2146:65:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14788,"nodeType":"ExpressionStatement","src":"2146:65:97"},{"expression":{"arguments":[{"hexValue":"30","id":14792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2622:1:97","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":14793,"name":"MAX_UINT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14711,"src":"2625:11:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14789,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14770,"src":"2600:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":14791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2140,"src":"2600:21:97","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) external"}},"id":14794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:37:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14795,"nodeType":"ExpressionStatement","src":"2600:37:97"},{"assignments":[14797],"declarations":[{"constant":false,"id":14797,"mutability":"mutable","name":"mainToken","nodeType":"VariableDeclaration","scope":14821,"src":"2678:16:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14796,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2678:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14803,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14799,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14770,"src":"2704:12:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":14800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlyingAsset","nodeType":"MemberAccess","referencedDeclaration":2146,"src":"2704:28:97","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2704:30:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14798,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2697:6:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":14802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2697:38:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2678:57:97"},{"assignments":[14805],"declarations":[{"constant":false,"id":14805,"mutability":"mutable","name":"withdrawnMainAmount","nodeType":"VariableDeclaration","scope":14821,"src":"2745:27:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14804,"name":"uint256","nodeType":"ElementaryTypeName","src":"2745:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14813,"initialValue":{"arguments":[{"arguments":[{"id":14810,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2803:4:97","typeDescriptions":{"typeIdentifier":"t_contract$_EulerWrapping_$14823","typeString":"contract EulerWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EulerWrapping_$14823","typeString":"contract EulerWrapping"}],"id":14809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2795:7:97","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14808,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:97","typeDescriptions":{}}},"id":14811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2795:13:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14806,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14797,"src":"2775:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2775:19:97","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2775:34:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2745:64:97"},{"expression":{"arguments":[{"id":14815,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14797,"src":"2852:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":14816,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"2863:9:97","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14817,"name":"withdrawnMainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14805,"src":"2874:19:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14818,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"2895:15:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14814,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2820:31:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":14819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:91:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14820,"nodeType":"ExpressionStatement","src":"2820:91:97"}]},"functionSelector":"941e849b","id":14822,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapEuler","nodeType":"FunctionDefinition","parameters":{"id":14779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14770,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":14822,"src":"1980:24:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"},"typeName":{"id":14769,"name":"IEulerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2147,"src":"1980:11:97","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"visibility":"internal"},{"constant":false,"id":14772,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14822,"src":"2014:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14771,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14774,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14822,"src":"2038:17:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14773,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14776,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14822,"src":"2065:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14775,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14778,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14822,"src":"2089:23:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14777,"name":"uint256","nodeType":"ElementaryTypeName","src":"2089:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1970:148:97"},"returnParameters":{"id":14780,"nodeType":"ParameterList","parameters":[],"src":"2136:0:97"},"scope":14823,"src":"1950:968:97","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14824,"src":"1046:1874:97"}],"src":"688:2233:97"},"id":97},"contracts/relayer/GaugeActions.sol":{"ast":{"absolutePath":"contracts/relayer/GaugeActions.sol","exportedSymbols":{"GaugeActions":[15164]},"id":15165,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14825,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:98"},{"id":14826,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:98"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","id":14827,"nodeType":"ImportDirective","scope":15165,"sourceUnit":135,"src":"747:85:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":14828,"nodeType":"ImportDirective","scope":15165,"sourceUnit":382,"src":"833:92:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":14829,"nodeType":"ImportDirective","scope":15165,"sourceUnit":9108,"src":"927:79:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":14830,"nodeType":"ImportDirective","scope":15165,"sourceUnit":15505,"src":"1008:35:98","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14832,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1201:19:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":14833,"nodeType":"InheritanceSpecifier","src":"1201:19:98"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":14831,"nodeType":"StructuredDocumentation","src":"1045:121:98","text":" @title GaugeActions\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":15164,"linearizedBaseContracts":[15164,15504,9418],"name":"GaugeActions","nodeType":"ContractDefinition","nodes":[{"id":14836,"libraryName":{"id":14834,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1233:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1227:27:98","typeName":{"id":14835,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1247:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":false,"id":14838,"mutability":"immutable","name":"_balancerMinter","nodeType":"VariableDeclaration","scope":15164,"src":"1260:49:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"},"typeName":{"id":14837,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":134,"src":"1260:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"visibility":"private"},{"constant":false,"id":14840,"mutability":"immutable","name":"_canCallUserCheckpoint","nodeType":"VariableDeclaration","scope":15164,"src":"1315:45:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14839,"name":"bool","nodeType":"ElementaryTypeName","src":"1315:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":14856,"nodeType":"Block","src":"1583:105:98","statements":[{"expression":{"id":14850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14848,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14838,"src":"1593:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14849,"name":"balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14843,"src":"1611:14:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"src":"1593:32:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"id":14851,"nodeType":"ExpressionStatement","src":"1593:32:98"},{"expression":{"id":14854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14852,"name":"_canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"1635:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14853,"name":"canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14845,"src":"1660:21:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1635:46:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14855,"nodeType":"ExpressionStatement","src":"1635:46:98"}]},"documentation":{"id":14841,"nodeType":"StructuredDocumentation","src":"1367:139:98","text":" @dev The zero address may be passed as balancerMinter to safely disable features\n which only exist on mainnet"},"id":14857,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14843,"mutability":"mutable","name":"balancerMinter","nodeType":"VariableDeclaration","scope":14857,"src":"1523:30:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"},"typeName":{"id":14842,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":134,"src":"1523:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":14845,"mutability":"mutable","name":"canCallUserCheckpoint","nodeType":"VariableDeclaration","scope":14857,"src":"1555:26:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14844,"name":"bool","nodeType":"ElementaryTypeName","src":"1555:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1522:60:98"},"returnParameters":{"id":14847,"nodeType":"ParameterList","parameters":[],"src":"1583:0:98"},"scope":15164,"src":"1511:177:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14865,"nodeType":"Block","src":"1988:46:98","statements":[{"expression":{"id":14863,"name":"_canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"2005:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14862,"id":14864,"nodeType":"Return","src":"1998:29:98"}]},"documentation":{"id":14858,"nodeType":"StructuredDocumentation","src":"1694:227:98","text":" @notice Returns true if the relayer is configured to checkpoint gauges directly via `user_checkpoint`.\n @dev This method is not expected to be called inside `multicall` so it is not marked as `payable`."},"functionSelector":"10f3aaff","id":14866,"implemented":true,"kind":"function","modifiers":[],"name":"canCallUserCheckpoint","nodeType":"FunctionDefinition","parameters":{"id":14859,"nodeType":"ParameterList","parameters":[],"src":"1956:2:98"},"returnParameters":{"id":14862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14866,"src":"1982:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14860,"name":"bool","nodeType":"ElementaryTypeName","src":"1982:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1981:6:98"},"scope":15164,"src":"1926:108:98","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14902,"nodeType":"Block","src":"2198:279:98","statements":[{"assignments":[14878],"declarations":[{"constant":false,"id":14878,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":14902,"src":"2291:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14877,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2291:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14882,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14879,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"2309:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":14880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":368,"src":"2309:14:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$1722_$","typeString":"function () view external returns (contract IERC20)"}},"id":14881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2309:16:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2291:34:98"},{"expression":{"id":14893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14883,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14874,"src":"2336:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14885,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14878,"src":"2386:8:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":14888,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"2404:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}],"id":14887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2396:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14886,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:98","typeDescriptions":{}}},"id":14889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2396:14:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14890,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14874,"src":"2412:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14891,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14870,"src":"2420:6:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14884,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"2345:40:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":14892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:82:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2336:91:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14894,"nodeType":"ExpressionStatement","src":"2336:91:98"},{"expression":{"arguments":[{"id":14898,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14874,"src":"2452:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14899,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"2460:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14895,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"2438:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":14897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":375,"src":"2438:13:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) external"}},"id":14900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2438:32:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14901,"nodeType":"ExpressionStatement","src":"2438:32:98"}]},"functionSelector":"7bc008f5","id":14903,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeDeposit","nodeType":"FunctionDefinition","parameters":{"id":14875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14868,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14903,"src":"2071:28:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":14867,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"2071:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":14870,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14903,"src":"2109:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14869,"name":"address","nodeType":"ElementaryTypeName","src":"2109:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14872,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14903,"src":"2133:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14871,"name":"address","nodeType":"ElementaryTypeName","src":"2133:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14874,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14903,"src":"2160:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2160:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2061:119:98"},"returnParameters":{"id":14876,"nodeType":"ParameterList","parameters":[],"src":"2198:0:98"},"scope":15164,"src":"2040:437:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14949,"nodeType":"Block","src":"2642:556:98","statements":[{"expression":{"id":14920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14914,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14911,"src":"2652:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14916,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14905,"src":"2688:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},{"id":14917,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14911,"src":"2695:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14918,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"2703:6:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14915,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2661:26:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":14919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2661:49:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2652:58:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14921,"nodeType":"ExpressionStatement","src":"2652:58:98"},{"expression":{"arguments":[{"id":14925,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14911,"src":"2843:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14922,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14905,"src":"2828:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":14924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":380,"src":"2828:14:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":14926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2828:22:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14927,"nodeType":"ExpressionStatement","src":"2828:22:98"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14928,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14909,"src":"3050:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":14931,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3071:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$15164","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$15164","typeString":"contract GaugeActions"}],"id":14930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3063:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14929,"name":"address","nodeType":"ElementaryTypeName","src":"3063:7:98","typeDescriptions":{}}},"id":14932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3063:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3050:26:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14948,"nodeType":"IfStatement","src":"3046:146:98","trueBody":{"id":14947,"nodeType":"Block","src":"3078:114:98","statements":[{"assignments":[14935],"declarations":[{"constant":false,"id":14935,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":14947,"src":"3092:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":14934,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3092:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14939,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14936,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14905,"src":"3110:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":14937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":368,"src":"3110:14:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$1722_$","typeString":"function () view external returns (contract IERC20)"}},"id":14938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3110:16:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3092:34:98"},{"expression":{"arguments":[{"id":14943,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14909,"src":"3163:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14944,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14911,"src":"3174:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14940,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"3141:8:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":14942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"3141:21:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":14945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3141:40:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14946,"nodeType":"ExpressionStatement","src":"3141:40:98"}]}}]},"functionSelector":"65ca4804","id":14950,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeWithdraw","nodeType":"FunctionDefinition","parameters":{"id":14912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14905,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":14950,"src":"2515:28:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":14904,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"2515:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":14907,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":14950,"src":"2553:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14906,"name":"address","nodeType":"ElementaryTypeName","src":"2553:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14909,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14950,"src":"2577:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14908,"name":"address","nodeType":"ElementaryTypeName","src":"2577:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14911,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14950,"src":"2604:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2604:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:119:98"},"returnParameters":{"id":14913,"nodeType":"ParameterList","parameters":[],"src":"2642:0:98"},"scope":15164,"src":"2483:715:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":14972,"nodeType":"Block","src":"3292:143:98","statements":[{"assignments":[14959],"declarations":[{"constant":false,"id":14959,"mutability":"mutable","name":"balMinted","nodeType":"VariableDeclaration","scope":14972,"src":"3302:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14958,"name":"uint256","nodeType":"ElementaryTypeName","src":"3302:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14966,"initialValue":{"arguments":[{"id":14962,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14953,"src":"3350:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":14963,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3358:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3358:10:98","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":14960,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14838,"src":"3322:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"id":14961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mintManyFor","nodeType":"MemberAccess","referencedDeclaration":55,"src":"3322:27:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] memory,address) external returns (uint256)"}},"id":14965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3322:47:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3302:67:98"},{"expression":{"arguments":[{"id":14968,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"3401:15:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14969,"name":"balMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14959,"src":"3418:9:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14967,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"3380:20:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3380:48:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14971,"nodeType":"ExpressionStatement","src":"3380:48:98"}]},"functionSelector":"3f85d390","id":14973,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeMint","nodeType":"FunctionDefinition","parameters":{"id":14956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14953,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":14973,"src":"3223:25:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14951,"name":"address","nodeType":"ElementaryTypeName","src":"3223:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14952,"nodeType":"ArrayTypeName","src":"3223:9:98","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14955,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":14973,"src":"3250:23:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14954,"name":"uint256","nodeType":"ElementaryTypeName","src":"3250:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3222:52:98"},"returnParameters":{"id":14957,"nodeType":"ParameterList","parameters":[],"src":"3292:0:98"},"scope":15164,"src":"3204:231:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15003,"nodeType":"Block","src":"3622:113:98","statements":[{"expression":{"arguments":[{"arguments":[{"id":14993,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3687:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$15164","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$15164","typeString":"contract GaugeActions"}],"id":14992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3679:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14991,"name":"address","nodeType":"ElementaryTypeName","src":"3679:7:98","typeDescriptions":{}}},"id":14994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3679:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14995,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14975,"src":"3694:8:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":14996,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14977,"src":"3704:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14997,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14979,"src":"3710:8:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14998,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14981,"src":"3720:1:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":14999,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14983,"src":"3723:1:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15000,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14985,"src":"3726:1:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":14988,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14838,"src":"3632:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"id":14990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setMinterApprovalWithSignature","nodeType":"MemberAccess","referencedDeclaration":101,"src":"3632:46:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_address_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,bool,address,uint256,uint8,bytes32,bytes32) external"}},"id":15001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3632:96:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15002,"nodeType":"ExpressionStatement","src":"3632:96:98"}]},"functionSelector":"8c57198b","id":15004,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeSetMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":14986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14975,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":15004,"src":"3482:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14974,"name":"bool","nodeType":"ElementaryTypeName","src":"3482:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14977,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15004,"src":"3505:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14976,"name":"address","nodeType":"ElementaryTypeName","src":"3505:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14979,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":15004,"src":"3527:16:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14978,"name":"uint256","nodeType":"ElementaryTypeName","src":"3527:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14981,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":15004,"src":"3553:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14980,"name":"uint8","nodeType":"ElementaryTypeName","src":"3553:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14983,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":15004,"src":"3570:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3570:7:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14985,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":15004,"src":"3589:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14984,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3589:7:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3472:132:98"},"returnParameters":{"id":14987,"nodeType":"ParameterList","parameters":[],"src":"3622:0:98"},"scope":15164,"src":"3441:294:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15034,"nodeType":"Block","src":"3827:155:98","statements":[{"assignments":[15011],"declarations":[{"constant":false,"id":15011,"mutability":"mutable","name":"numGauges","nodeType":"VariableDeclaration","scope":15034,"src":"3837:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15010,"name":"uint256","nodeType":"ElementaryTypeName","src":"3837:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15014,"initialValue":{"expression":{"id":15012,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15007,"src":"3857:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3857:13:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3837:33:98"},{"body":{"id":15032,"nodeType":"Block","src":"3916:60:98","statements":[{"expression":{"arguments":[{"expression":{"id":15028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3954:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3954:10:98","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"baseExpression":{"id":15024,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15007,"src":"3930:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15026,"indexExpression":{"id":15025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15016,"src":"3937:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3930:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim_rewards","nodeType":"MemberAccess","referencedDeclaration":304,"src":"3930:23:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":15030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:35:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15031,"nodeType":"ExpressionStatement","src":"3930:35:98"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15016,"src":"3896:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15019,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15011,"src":"3900:9:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3896:13:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15033,"initializationExpression":{"assignments":[15016],"declarations":[{"constant":false,"id":15016,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15033,"src":"3885:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15015,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15017,"nodeType":"VariableDeclarationStatement","src":"3885:9:98"},"loopExpression":{"expression":{"id":15022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3911:3:98","subExpression":{"id":15021,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15016,"src":"3913:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15023,"nodeType":"ExpressionStatement","src":"3911:3:98"},"nodeType":"ForStatement","src":"3880:96:98"}]},"functionSelector":"0e248fea","id":15035,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeClaimRewards","nodeType":"FunctionDefinition","parameters":{"id":15008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15007,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15035,"src":"3768:40:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":15005,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"3768:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15006,"nodeType":"ArrayTypeName","src":"3768:24:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"3767:42:98"},"returnParameters":{"id":15009,"nodeType":"ParameterList","parameters":[],"src":"3827:0:98"},"scope":15164,"src":"3741:241:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15058,"nodeType":"Block","src":"4253:193:98","statements":[{"condition":{"id":15044,"name":"_canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"4267:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15056,"nodeType":"Block","src":"4370:70:98","statements":[{"expression":{"arguments":[{"id":15052,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15038,"src":"4416:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15053,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"4422:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}],"id":15051,"name":"_checkpointGaugesViaUserBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15163,"src":"4384:31:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr_$returns$__$","typeString":"function (address,contract IStakingLiquidityGauge[] calldata)"}},"id":15054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4384:45:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15055,"nodeType":"ExpressionStatement","src":"4384:45:98"}]},"id":15057,"nodeType":"IfStatement","src":"4263:177:98","trueBody":{"id":15050,"nodeType":"Block","src":"4291:73:98","statements":[{"expression":{"arguments":[{"id":15046,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15038,"src":"4340:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15047,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15041,"src":"4346:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}],"id":15045,"name":"_checkpointGaugesViaUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15092,"src":"4305:34:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr_$returns$__$","typeString":"function (address,contract IStakingLiquidityGauge[] calldata)"}},"id":15048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4305:48:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15049,"nodeType":"ExpressionStatement","src":"4305:48:98"}]}}]},"documentation":{"id":15036,"nodeType":"StructuredDocumentation","src":"3988:162:98","text":" @notice Perform a user checkpoint for the given user on the given set of gauges.\n @dev Both mainnet and child chain gauges are supported."},"functionSelector":"48699d58","id":15059,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeCheckpoint","nodeType":"FunctionDefinition","parameters":{"id":15042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15038,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15059,"src":"4180:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15037,"name":"address","nodeType":"ElementaryTypeName","src":"4180:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15041,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15059,"src":"4194:40:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":15039,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"4194:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15040,"nodeType":"ArrayTypeName","src":"4194:24:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"4179:56:98"},"returnParameters":{"id":15043,"nodeType":"ParameterList","parameters":[],"src":"4253:0:98"},"scope":15164,"src":"4155:291:98","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15091,"nodeType":"Block","src":"4561:267:98","statements":[{"assignments":[15068],"declarations":[{"constant":false,"id":15068,"mutability":"mutable","name":"numGauges","nodeType":"VariableDeclaration","scope":15091,"src":"4571:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15067,"name":"uint256","nodeType":"ElementaryTypeName","src":"4571:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15071,"initialValue":{"expression":{"id":15069,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15064,"src":"4591:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4591:13:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4571:33:98"},{"body":{"id":15089,"nodeType":"Block","src":"4766:56:98","statements":[{"expression":{"arguments":[{"id":15086,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15061,"src":"4806:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":15082,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15064,"src":"4780:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15084,"indexExpression":{"id":15083,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"4787:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4780:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"user_checkpoint","nodeType":"MemberAccess","referencedDeclaration":233,"src":"4780:25:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":15087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4780:31:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15088,"nodeType":"ExpressionStatement","src":"4780:31:98"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15076,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"4746:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15077,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15068,"src":"4750:9:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4746:13:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15090,"initializationExpression":{"assignments":[15073],"declarations":[{"constant":false,"id":15073,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15090,"src":"4731:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15072,"name":"uint256","nodeType":"ElementaryTypeName","src":"4731:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15075,"initialValue":{"hexValue":"30","id":15074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4743:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4731:13:98"},"loopExpression":{"expression":{"id":15080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4761:3:98","subExpression":{"id":15079,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"4763:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15081,"nodeType":"ExpressionStatement","src":"4761:3:98"},"nodeType":"ForStatement","src":"4726:96:98"}]},"id":15092,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGaugesViaUserCheckpoint","nodeType":"FunctionDefinition","parameters":{"id":15065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15061,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15092,"src":"4496:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15060,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15064,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15092,"src":"4510:40:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":15062,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"4510:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15063,"nodeType":"ArrayTypeName","src":"4510:24:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"4495:56:98"},"returnParameters":{"id":15066,"nodeType":"ParameterList","parameters":[],"src":"4561:0:98"},"scope":15164,"src":"4452:376:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15162,"nodeType":"Block","src":"4940:1347:98","statements":[{"assignments":[15101],"declarations":[{"constant":false,"id":15101,"mutability":"mutable","name":"numGauges","nodeType":"VariableDeclaration","scope":15162,"src":"4950:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15100,"name":"uint256","nodeType":"ElementaryTypeName","src":"4950:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15104,"initialValue":{"expression":{"id":15102,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15097,"src":"4970:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4970:13:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4950:33:98"},{"assignments":[15109],"declarations":[{"constant":false,"id":15109,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":15162,"src":"4993:33:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":15107,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"4993:20:98","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":15108,"nodeType":"ArrayTypeName","src":"4993:22:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"id":15115,"initialValue":{"arguments":[{"id":15113,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15101,"src":"5056:9:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5029:26:98","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.UserBalanceOp memory[] memory)"},"typeName":{"baseType":{"id":15110,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"5033:20:98","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":15111,"nodeType":"ArrayTypeName","src":"5033:22:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}}},"id":15114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5029:37:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4993:73:98"},{"body":{"id":15154,"nodeType":"Block","src":"5812:379:98","statements":[{"expression":{"id":15152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15126,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15109,"src":"5910:3:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":15128,"indexExpression":{"id":15127,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15117,"src":"5914:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5910:6:98","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"baseExpression":{"id":15134,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15097,"src":"5980:6:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":15136,"indexExpression":{"id":15135,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15117,"src":"5987:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5980:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}],"id":15133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5972:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15132,"name":"address","nodeType":"ElementaryTypeName","src":"5972:7:98","typeDescriptions":{}}},"id":15137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5972:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15131,"name":"IAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"5965:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsset_$3151_$","typeString":"type(contract IAsset)"}},"id":15138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5965:26:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},{"hexValue":"31","id":15139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017:1:98","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":15140,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15094,"src":"6044:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":15145,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15094,"src":"6093:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6085:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15143,"name":"address","nodeType":"ElementaryTypeName","src":"6085:7:98","typeDescriptions":{}}},"id":15146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6085:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6077:8:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":15141,"name":"address","nodeType":"ElementaryTypeName","src":"6077:8:98","stateMutability":"payable","typeDescriptions":{}}},"id":15147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6077:22:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"expression":{"id":15148,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"6123:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":15149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOpKind","nodeType":"MemberAccess","referencedDeclaration":3499,"src":"6123:24:98","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_UserBalanceOpKind_$3499_$","typeString":"type(enum IVault.UserBalanceOpKind)"}},"id":15150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_EXTERNAL","nodeType":"MemberAccess","src":"6123:42:98","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3499","typeString":"enum IVault.UserBalanceOpKind"}],"expression":{"id":15129,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"5919:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":15130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOp","nodeType":"MemberAccess","referencedDeclaration":3494,"src":"5919:20:98","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UserBalanceOp_$3494_storage_ptr_$","typeString":"type(struct IVault.UserBalanceOp storage pointer)"}},"id":15151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["asset","amount","sender","recipient","kind"],"nodeType":"FunctionCall","src":"5919:261:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"src":"5910:270:98","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":15153,"nodeType":"ExpressionStatement","src":"5910:270:98"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15117,"src":"5792:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15121,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15101,"src":"5796:9:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5792:13:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15155,"initializationExpression":{"assignments":[15117],"declarations":[{"constant":false,"id":15117,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":15155,"src":"5777:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15116,"name":"uint256","nodeType":"ElementaryTypeName","src":"5777:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15119,"initialValue":{"hexValue":"30","id":15118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5789:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5777:13:98"},"loopExpression":{"expression":{"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5807:3:98","subExpression":{"id":15123,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15117,"src":"5809:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15125,"nodeType":"ExpressionStatement","src":"5807:3:98"},"nodeType":"ForStatement","src":"5772:419:98"},{"expression":{"arguments":[{"id":15159,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15109,"src":"6276:3:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15156,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"6247:8:98","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":15157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6247:10:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":15158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":3483,"src":"6247:28:98","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":15160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6247:33:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15161,"nodeType":"ExpressionStatement","src":"6247:33:98"}]},"id":15163,"implemented":true,"kind":"function","modifiers":[],"name":"_checkpointGaugesViaUserBalance","nodeType":"FunctionDefinition","parameters":{"id":15098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15094,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":15163,"src":"4875:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15093,"name":"address","nodeType":"ElementaryTypeName","src":"4875:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15097,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":15163,"src":"4889:40:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":15095,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":381,"src":"4889:22:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$381","typeString":"contract IStakingLiquidityGauge"}},"id":15096,"nodeType":"ArrayTypeName","src":"4889:24:98","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$381_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"4874:56:98"},"returnParameters":{"id":15099,"nodeType":"ParameterList","parameters":[],"src":"4940:0:98"},"scope":15164,"src":"4834:1453:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15165,"src":"1167:5122:98"}],"src":"688:5602:98"},"id":98},"contracts/relayer/GearboxWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/GearboxWrapping.sol","exportedSymbols":{"GearboxWrapping":[15281]},"id":15282,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15166,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:99"},{"id":15167,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:99"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","id":15168,"nodeType":"ImportDirective","scope":15282,"sourceUnit":2207,"src":"747:89:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":15169,"nodeType":"ImportDirective","scope":15282,"sourceUnit":15505,"src":"838:35:99","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15171,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1095:19:99","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":15172,"nodeType":"InheritanceSpecifier","src":"1095:19:99"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":15170,"nodeType":"StructuredDocumentation","src":"875:182:99","text":" @title GearboxWrapping\n @notice Allows users to wrap and unwrap Gearbox tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":15281,"linearizedBaseContracts":[15281,15504,9418],"name":"GearboxWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":15229,"nodeType":"Block","src":"1319:646:99","statements":[{"assignments":[15186],"declarations":[{"constant":false,"id":15186,"mutability":"mutable","name":"gearboxVault","nodeType":"VariableDeclaration","scope":15229,"src":"1329:26:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"},"typeName":{"id":15185,"name":"IGearboxVault","nodeType":"UserDefinedTypeName","referencedDeclaration":2206,"src":"1329:13:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"visibility":"internal"}],"id":15192,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15188,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15174,"src":"1372:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}},"id":15189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":2158,"src":"1372:18:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1372:20:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15187,"name":"IGearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1358:13:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IGearboxVault_$2206_$","typeString":"type(contract IGearboxVault)"}},"id":15191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1358:35:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"nodeType":"VariableDeclarationStatement","src":"1329:64:99"},{"assignments":[15194],"declarations":[{"constant":false,"id":15194,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":15229,"src":"1403:17:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15193,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1403:6:99","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15200,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15196,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15186,"src":"1430:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":15197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlyingToken","nodeType":"MemberAccess","referencedDeclaration":2165,"src":"1430:28:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1430:30:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15195,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1423:6:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1423:38:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1403:58:99"},{"expression":{"id":15211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15201,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"1587:10:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15203,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15194,"src":"1641:10:99","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":15206,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15186,"src":"1661:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}],"id":15205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1653:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15204,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:99","typeDescriptions":{}}},"id":15207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1653:21:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15208,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"1676:10:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15209,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15176,"src":"1688:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15202,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1600:40:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":15210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1600:95:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:108:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15212,"nodeType":"ExpressionStatement","src":"1587:108:99"},{"expression":{"arguments":[{"id":15216,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"1850:10:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15217,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15178,"src":"1862:9:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":15218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1873:1:99","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":15213,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15186,"src":"1824:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":15215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":2197,"src":"1824:25:99","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256) external"}},"id":15219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1824:51:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15220,"nodeType":"ExpressionStatement","src":"1824:51:99"},{"expression":{"arguments":[{"id":15222,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15182,"src":"1907:15:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":15225,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"1946:10:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15223,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15186,"src":"1924:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":15224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toDiesel","nodeType":"MemberAccess","referencedDeclaration":2187,"src":"1924:21:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":15226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1924:33:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15221,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"1886:20:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":15227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1886:72:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15228,"nodeType":"ExpressionStatement","src":"1886:72:99"}]},"functionSelector":"138fdc2c","id":15230,"implemented":true,"kind":"function","modifiers":[],"name":"wrapGearbox","nodeType":"FunctionDefinition","parameters":{"id":15183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15174,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":15230,"src":"1151:32:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"},"typeName":{"id":15173,"name":"IGearboxDieselToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2159,"src":"1151:19:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}},"visibility":"internal"},{"constant":false,"id":15176,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15230,"src":"1193:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15175,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15178,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15230,"src":"1217:17:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15177,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15180,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":15230,"src":"1244:18:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15179,"name":"uint256","nodeType":"ElementaryTypeName","src":"1244:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15182,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15230,"src":"1272:23:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1272:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1141:160:99"},"returnParameters":{"id":15184,"nodeType":"ParameterList","parameters":[],"src":"1319:0:99"},"scope":15281,"src":"1121:844:99","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15279,"nodeType":"Block","src":"2173:562:99","statements":[{"expression":{"id":15254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15243,"name":"dieselAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2183:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":15248,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15232,"src":"2240:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}],"id":15247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2232:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15246,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:99","typeDescriptions":{}}},"id":15249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2232:21:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15245,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2225:6:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2225:29:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":15251,"name":"dieselAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2256:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15252,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15234,"src":"2270:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15244,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2198:26:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":15253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:79:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2183:94:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15255,"nodeType":"ExpressionStatement","src":"2183:94:99"},{"assignments":[15257],"declarations":[{"constant":false,"id":15257,"mutability":"mutable","name":"gearboxVault","nodeType":"VariableDeclaration","scope":15279,"src":"2514:26:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"},"typeName":{"id":15256,"name":"IGearboxVault","nodeType":"UserDefinedTypeName","referencedDeclaration":2206,"src":"2514:13:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"visibility":"internal"}],"id":15263,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15259,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15232,"src":"2557:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}},"id":15260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":2158,"src":"2557:18:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2557:20:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15258,"name":"IGearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"2543:13:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IGearboxVault_$2206_$","typeString":"type(contract IGearboxVault)"}},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2543:35:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"nodeType":"VariableDeclarationStatement","src":"2514:64:99"},{"expression":{"arguments":[{"id":15267,"name":"dieselAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2617:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15268,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15236,"src":"2631:9:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15264,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15257,"src":"2588:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":15266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":2205,"src":"2588:28:99","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) external"}},"id":15269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2588:53:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15270,"nodeType":"ExpressionStatement","src":"2588:53:99"},{"expression":{"arguments":[{"id":15272,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15240,"src":"2673:15:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":15275,"name":"dieselAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15238,"src":"2714:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15273,"name":"gearboxVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15257,"src":"2690:12:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":15274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fromDiesel","nodeType":"MemberAccess","referencedDeclaration":2179,"src":"2690:23:99","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":15276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2690:37:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15271,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"2652:20:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":15277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2652:76:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15278,"nodeType":"ExpressionStatement","src":"2652:76:99"}]},"functionSelector":"f4dd54b0","id":15280,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapGearbox","nodeType":"FunctionDefinition","parameters":{"id":15241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15232,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":15280,"src":"2003:32:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"},"typeName":{"id":15231,"name":"IGearboxDieselToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2159,"src":"2003:19:99","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}},"visibility":"internal"},{"constant":false,"id":15234,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15280,"src":"2045:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15233,"name":"address","nodeType":"ElementaryTypeName","src":"2045:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15236,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15280,"src":"2069:17:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15235,"name":"address","nodeType":"ElementaryTypeName","src":"2069:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15238,"mutability":"mutable","name":"dieselAmount","nodeType":"VariableDeclaration","scope":15280,"src":"2096:20:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15237,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15240,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15280,"src":"2126:23:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15239,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1993:162:99"},"returnParameters":{"id":15242,"nodeType":"ParameterList","parameters":[],"src":"2173:0:99"},"scope":15281,"src":"1971:764:99","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15282,"src":"1058:1679:99"}],"src":"688:2050:99"},"id":99},"contracts/relayer/IBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","exportedSymbols":{"IBaseRelayerLibrary":[15504]},"id":15505,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15283,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:100"},{"id":15284,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:100"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":15285,"nodeType":"ImportDirective","scope":15505,"sourceUnit":3865,"src":"747:65:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":15286,"nodeType":"ImportDirective","scope":15505,"sourceUnit":9419,"src":"814:60:100","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":15287,"nodeType":"ImportDirective","scope":15505,"sourceUnit":9108,"src":"875:79:100","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15289,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":9418,"src":"1035:12:100","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$9418","typeString":"contract AssetHelpers"}},"id":15290,"nodeType":"InheritanceSpecifier","src":"1035:12:100"}],"contractDependencies":[9418],"contractKind":"contract","documentation":{"id":15288,"nodeType":"StructuredDocumentation","src":"956:37:100","text":" @title IBaseRelayerLibrary"},"fullyImplemented":false,"id":15504,"linearizedBaseContracts":[15504,9418],"name":"IBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"id":15293,"libraryName":{"id":15291,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1060:9:100","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1054:27:100","typeName":{"id":15292,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1074:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"body":{"id":15301,"nodeType":"Block","src":"1130:64:100","statements":[]},"id":15302,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":15298,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"1124:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}}],"id":15299,"modifierName":{"id":15297,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9418,"src":"1111:12:100","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$9418_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"1111:18:100"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15295,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":15302,"src":"1099:10:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"},"typeName":{"id":15294,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"1099:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1098:12:100"},"returnParameters":{"id":15300,"nodeType":"ParameterList","parameters":[],"src":"1130:0:100"},"scope":15504,"src":"1087:107:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"functionSelector":"8d928af8","id":15307,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":15303,"nodeType":"ParameterList","parameters":[],"src":"1217:2:100"},"returnParameters":{"id":15306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15305,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15307,"src":"1249:6:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":15304,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1249:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1248:8:100"},"scope":15504,"src":"1200:57:100","stateMutability":"view","virtual":true,"visibility":"public"},{"functionSelector":"b6d24737","id":15314,"implemented":false,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","parameters":{"id":15312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15309,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15314,"src":"1285:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15308,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1285:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":15311,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15314,"src":"1299:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15310,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1284:30:100"},"returnParameters":{"id":15313,"nodeType":"ParameterList","parameters":[],"src":"1339:0:100"},"scope":15504,"src":"1263:77:100","stateMutability":"payable","virtual":true,"visibility":"external"},{"functionSelector":"f3cab685","id":15321,"implemented":false,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":15317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15316,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":15321,"src":"1381:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15315,"name":"uint256","nodeType":"ElementaryTypeName","src":"1381:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1380:13:100"},"returnParameters":{"id":15320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15319,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15321,"src":"1428:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15318,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:9:100"},"scope":15504,"src":"1346:91:100","stateMutability":"payable","virtual":true,"visibility":"external"},{"id":15330,"implemented":false,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","parameters":{"id":15328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15323,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15330,"src":"1472:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15322,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15325,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15330,"src":"1496:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15324,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1496:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":15327,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15330,"src":"1518:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15326,"name":"uint256","nodeType":"ElementaryTypeName","src":"1518:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1462:76:100"},"returnParameters":{"id":15329,"nodeType":"ParameterList","parameters":[],"src":"1555:0:100"},"scope":15504,"src":"1443:113:100","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":15341,"implemented":false,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","parameters":{"id":15339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15332,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15341,"src":"1592:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15331,"name":"address","nodeType":"ElementaryTypeName","src":"1592:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15335,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":15341,"src":"1616:22:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":15333,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1616:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":15334,"nodeType":"ArrayTypeName","src":"1616:8:100","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":15338,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":15341,"src":"1648:24:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15336,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15337,"nodeType":"ArrayTypeName","src":"1648:9:100","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1582:96:100"},"returnParameters":{"id":15340,"nodeType":"ParameterList","parameters":[],"src":"1695:0:100"},"scope":15504,"src":"1562:134:100","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":15348,"implemented":false,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":15344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15343,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15348,"src":"1731:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15342,"name":"uint256","nodeType":"ElementaryTypeName","src":"1731:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1730:16:100"},"returnParameters":{"id":15347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15348,"src":"1778:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15345,"name":"bool","nodeType":"ElementaryTypeName","src":"1778:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1777:6:100"},"scope":15504,"src":"1702:82:100","stateMutability":"pure","virtual":true,"visibility":"internal"},{"id":15355,"implemented":false,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":15353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15350,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":15355,"src":"1825:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15349,"name":"uint256","nodeType":"ElementaryTypeName","src":"1825:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15352,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":15355,"src":"1838:13:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1824:28:100"},"returnParameters":{"id":15354,"nodeType":"ParameterList","parameters":[],"src":"1869:0:100"},"scope":15504,"src":"1790:80:100","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":15362,"implemented":false,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":15358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15357,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":15362,"src":"1911:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15356,"name":"uint256","nodeType":"ElementaryTypeName","src":"1911:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1910:13:100"},"returnParameters":{"id":15361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15360,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15362,"src":"1950:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15359,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1949:9:100"},"scope":15504,"src":"1876:83:100","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":15391,"nodeType":"Block","src":"2530:136:100","statements":[{"expression":{"id":15382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15376,"name":"resolvedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"2540:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15378,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"2584:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":15379,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15369,"src":"2591:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15380,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"2599:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15377,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2557:26:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":15381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2557:49:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2540:66:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15383,"nodeType":"ExpressionStatement","src":"2540:66:100"},{"expression":{"arguments":[{"id":15387,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"2635:7:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15388,"name":"resolvedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15374,"src":"2644:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15384,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"2617:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":15386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":9017,"src":"2617:17:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":15389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2617:42:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15390,"nodeType":"ExpressionStatement","src":"2617:42:100"}]},"documentation":{"id":15363,"nodeType":"StructuredDocumentation","src":"1965:367:100","text":" @dev This reuses `_resolveAmountAndPullToken` to adjust the `amount` in case it is a chained reference,\n then pull that amount of `token` to the relayer. Additionally, it approves the `spender` to enable\n wrapping operations. The spender is usually a token, but could also be another kind of contract (e.g.,\n a protocol or gauge)."},"id":15392,"implemented":true,"kind":"function","modifiers":[],"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"FunctionDefinition","parameters":{"id":15372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15365,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15392,"src":"2396:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15364,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2396:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":15367,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":15392,"src":"2418:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15366,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15369,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15392,"src":"2443:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15368,"name":"uint256","nodeType":"ElementaryTypeName","src":"2443:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15371,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15392,"src":"2467:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15370,"name":"address","nodeType":"ElementaryTypeName","src":"2467:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2386:101:100"},"returnParameters":{"id":15375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15374,"mutability":"mutable","name":"resolvedAmount","nodeType":"VariableDeclaration","scope":15392,"src":"2506:22:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15373,"name":"uint256","nodeType":"ElementaryTypeName","src":"2506:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:24:100"},"scope":15504,"src":"2337:329:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15432,"nodeType":"Block","src":"2964:399:100","statements":[{"expression":{"id":15408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15404,"name":"resolvedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15402,"src":"2974:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15406,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15397,"src":"3006:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15405,"name":"_resolveAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15451,"src":"2991:14:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":15407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:22:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2974:39:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15409,"nodeType":"ExpressionStatement","src":"2974:39:100"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15410,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"3203:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":15413,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3221:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}],"id":15412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3213:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15411,"name":"address","nodeType":"ElementaryTypeName","src":"3213:7:100","typeDescriptions":{}}},"id":15414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3213:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3203:23:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15431,"nodeType":"IfStatement","src":"3199:158:100","trueBody":{"id":15430,"nodeType":"Block","src":"3228:129:100","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15417,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"3250:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15418,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3260:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3260:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3250:20:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":15421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3272:18:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":15416,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3242:7:100","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3242:49:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15423,"nodeType":"ExpressionStatement","src":"3242:49:100"},{"expression":{"arguments":[{"id":15425,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"3316:6:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15426,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15395,"src":"3324:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":15427,"name":"resolvedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15402,"src":"3331:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15424,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15330,"src":"3305:10:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1722_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":15428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3305:41:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15429,"nodeType":"ExpressionStatement","src":"3305:41:100"}]}}]},"documentation":{"id":15393,"nodeType":"StructuredDocumentation","src":"2672:133:100","text":" @dev Extract the `amount` (if it is a chained reference), and pull that amount of `token` to\n this contract."},"id":15433,"implemented":true,"kind":"function","modifiers":[],"name":"_resolveAmountAndPullToken","nodeType":"FunctionDefinition","parameters":{"id":15400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15395,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15433,"src":"2855:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15394,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2855:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":15397,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15433,"src":"2877:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15396,"name":"uint256","nodeType":"ElementaryTypeName","src":"2877:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15399,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15433,"src":"2901:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15398,"name":"address","nodeType":"ElementaryTypeName","src":"2901:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2845:76:100"},"returnParameters":{"id":15403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15402,"mutability":"mutable","name":"resolvedAmount","nodeType":"VariableDeclaration","scope":15433,"src":"2940:22:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15401,"name":"uint256","nodeType":"ElementaryTypeName","src":"2940:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2939:24:100"},"scope":15504,"src":"2810:553:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15450,"nodeType":"Block","src":"3585:96:100","statements":[{"expression":{"condition":{"arguments":[{"id":15442,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15436,"src":"3622:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15441,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"3602:19:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":15443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3602:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":15447,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15436,"src":"3668:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3602:72:100","trueExpression":{"arguments":[{"id":15445,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15436,"src":"3658:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15444,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"3632:25:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":15446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3632:33:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15440,"id":15449,"nodeType":"Return","src":"3595:79:100"}]},"documentation":{"id":15434,"nodeType":"StructuredDocumentation","src":"3369:144:100","text":" @dev Resolve an amount from a possible chained reference. This is internal, since some wrappers\n call it independently."},"id":15451,"implemented":true,"kind":"function","modifiers":[],"name":"_resolveAmount","nodeType":"FunctionDefinition","parameters":{"id":15437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15436,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15451,"src":"3542:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3542:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3541:16:100"},"returnParameters":{"id":15440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15439,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15451,"src":"3576:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15438,"name":"uint256","nodeType":"ElementaryTypeName","src":"3576:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3575:9:100"},"scope":15504,"src":"3518:163:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15483,"nodeType":"Block","src":"4045:166:100","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15463,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15456,"src":"4059:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":15466,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4080:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}],"id":15465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4072:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15464,"name":"address","nodeType":"ElementaryTypeName","src":"4072:7:100","typeDescriptions":{}}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4072:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4059:26:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15477,"nodeType":"IfStatement","src":"4055:94:100","trueBody":{"id":15476,"nodeType":"Block","src":"4087:62:100","statements":[{"expression":{"arguments":[{"id":15472,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15456,"src":"4120:9:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15473,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"4131:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15469,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15454,"src":"4101:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":15471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"4101:18:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":15474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4101:37:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15475,"nodeType":"ExpressionStatement","src":"4101:37:100"}]}},{"expression":{"arguments":[{"id":15479,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15460,"src":"4180:15:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15480,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"4197:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15478,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"4159:20:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":15481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4159:45:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15482,"nodeType":"ExpressionStatement","src":"4159:45:100"}]},"documentation":{"id":15452,"nodeType":"StructuredDocumentation","src":"3687:191:100","text":" @dev Transfer the given `amount` of `token` to `recipient`, then call `_setChainedReference`\n with that amount, in case it needs to be encoded as an output reference."},"id":15484,"implemented":true,"kind":"function","modifiers":[],"name":"_transferAndSetChainedReference","nodeType":"FunctionDefinition","parameters":{"id":15461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15454,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15484,"src":"3933:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15453,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3933:6:100","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":15456,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15484,"src":"3955:17:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15455,"name":"address","nodeType":"ElementaryTypeName","src":"3955:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15458,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15484,"src":"3982:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15457,"name":"uint256","nodeType":"ElementaryTypeName","src":"3982:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15460,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15484,"src":"4006:23:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4006:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3923:112:100"},"returnParameters":{"id":15462,"nodeType":"ParameterList","parameters":[],"src":"4045:0:100"},"scope":15504,"src":"3883:328:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15502,"nodeType":"Block","src":"4475:133:100","statements":[{"condition":{"arguments":[{"id":15493,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15487,"src":"4509:15:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15492,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"4489:19:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":15494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4489:36:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15501,"nodeType":"IfStatement","src":"4485:117:100","trueBody":{"id":15500,"nodeType":"Block","src":"4527:75:100","statements":[{"expression":{"arguments":[{"id":15496,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15487,"src":"4567:15:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15497,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15489,"src":"4584:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15495,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"4541:25:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":15498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4541:50:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15499,"nodeType":"ExpressionStatement","src":"4541:50:100"}]}}]},"documentation":{"id":15485,"nodeType":"StructuredDocumentation","src":"4217:173:100","text":" @dev Check for a chained output reference, and encode the given `amount` if necessary.\n This is internal, since some wrappers call it independently."},"id":15503,"implemented":true,"kind":"function","modifiers":[],"name":"_setChainedReference","nodeType":"FunctionDefinition","parameters":{"id":15490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15487,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15503,"src":"4425:23:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15486,"name":"uint256","nodeType":"ElementaryTypeName","src":"4425:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15489,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15503,"src":"4450:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15488,"name":"uint256","nodeType":"ElementaryTypeName","src":"4450:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4424:41:100"},"returnParameters":{"id":15491,"nodeType":"ParameterList","parameters":[],"src":"4475:0:100"},"scope":15504,"src":"4395:213:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15505,"src":"994:3616:100"}],"src":"688:3923:100"},"id":100},"contracts/relayer/LidoWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/LidoWrapping.sol","exportedSymbols":{"LidoWrapping":[15708]},"id":15709,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15506,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:101"},{"id":15507,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:101"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":15508,"nodeType":"ImportDirective","scope":15709,"sourceUnit":3091,"src":"747:76:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":15509,"nodeType":"ImportDirective","scope":15709,"sourceUnit":3148,"src":"824:77:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":15510,"nodeType":"ImportDirective","scope":15709,"sourceUnit":7642,"src":"903:77:101","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":15511,"nodeType":"ImportDirective","scope":15709,"sourceUnit":15505,"src":"982:35:101","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15513,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1224:19:101","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":15514,"nodeType":"InheritanceSpecifier","src":"1224:19:101"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":15512,"nodeType":"StructuredDocumentation","src":"1019:170:101","text":" @title LidoWrapping\n @notice Allows users to wrap and unwrap stETH\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":15708,"linearizedBaseContracts":[15708,15504,9418],"name":"LidoWrapping","nodeType":"ContractDefinition","nodes":[{"id":15517,"libraryName":{"id":15515,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7641,"src":"1256:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7641","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1250:34:101","typeName":{"id":15516,"name":"address","nodeType":"ElementaryTypeName","src":"1268:15:101","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"constant":false,"id":15519,"mutability":"immutable","name":"_stETH","nodeType":"VariableDeclaration","scope":15708,"src":"1290:31:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},"typeName":{"id":15518,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"1290:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"visibility":"private"},{"constant":false,"id":15521,"mutability":"immutable","name":"_wstETH","nodeType":"VariableDeclaration","scope":15708,"src":"1327:33:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"},"typeName":{"id":15520,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3147,"src":"1327:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"visibility":"private"},{"body":{"id":15556,"nodeType":"Block","src":"1561:218:101","statements":[{"expression":{"id":15545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15527,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"1653:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"id":15532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15528,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15524,"src":"1662:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1679:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15529,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1672:6:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1672:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1662:19:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"hexValue":"30","id":15542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1726:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15541,"name":"IstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"1719:6:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IstETH_$3090_$","typeString":"type(contract IstETH)"}},"id":15543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1719:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":15544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1662:66:101","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":15536,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15524,"src":"1700:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":15535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1692:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15534,"name":"address","nodeType":"ElementaryTypeName","src":"1692:7:101","typeDescriptions":{}}},"id":15537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1692:15:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15533,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"1684:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$3147_$","typeString":"type(contract IwstETH)"}},"id":15538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1684:24:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":15539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"stETH","nodeType":"MemberAccess","referencedDeclaration":3102,"src":"1684:30:101","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IstETH_$3090_$","typeString":"function () external returns (contract IstETH)"}},"id":15540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1684:32:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"src":"1653:75:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":15546,"nodeType":"ExpressionStatement","src":"1653:75:101"},{"expression":{"id":15554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15547,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"1738:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":15551,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15524,"src":"1764:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":15550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1756:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15549,"name":"address","nodeType":"ElementaryTypeName","src":"1756:7:101","typeDescriptions":{}}},"id":15552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1756:15:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15548,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"1748:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$3147_$","typeString":"type(contract IwstETH)"}},"id":15553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1748:24:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"src":"1738:34:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":15555,"nodeType":"ExpressionStatement","src":"1738:34:101"}]},"documentation":{"id":15522,"nodeType":"StructuredDocumentation","src":"1367:162:101","text":" @dev The zero address may be passed as wstETH to safely disable this module\n @param wstETH - the address of Lido's wrapped stETH contract"},"id":15557,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15524,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":15557,"src":"1546:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15523,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1546:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1545:15:101"},"returnParameters":{"id":15526,"nodeType":"ParameterList","parameters":[],"src":"1561:0:101"},"scope":15708,"src":"1534:245:101","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15596,"nodeType":"Block","src":"1935:252:101","statements":[{"expression":{"id":15578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15568,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"1945:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15570,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"1995:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},{"arguments":[{"id":15573,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"2011:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}],"id":15572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2003:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15571,"name":"address","nodeType":"ElementaryTypeName","src":"2003:7:101","typeDescriptions":{}}},"id":15574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2003:16:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15575,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2021:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15576,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2029:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15569,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1954:40:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":15577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1954:82:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1945:91:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15579,"nodeType":"ExpressionStatement","src":"1945:91:101"},{"assignments":[15581],"declarations":[{"constant":false,"id":15581,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15596,"src":"2047:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15580,"name":"uint256","nodeType":"ElementaryTypeName","src":"2047:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15588,"initialValue":{"arguments":[{"id":15586,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2086:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15583,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"2072:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}],"id":15582,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"2064:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$3147_$","typeString":"type(contract IwstETH)"}},"id":15584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2064:16:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":15585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"wrap","nodeType":"MemberAccess","referencedDeclaration":3110,"src":"2064:21:101","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":15587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2064:29:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2047:46:101"},{"expression":{"arguments":[{"id":15590,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"2136:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},{"id":15591,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15561,"src":"2145:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15592,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15581,"src":"2156:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15593,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15565,"src":"2164:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15589,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2104:31:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:76:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15595,"nodeType":"ExpressionStatement","src":"2104:76:101"}]},"functionSelector":"1c982441","id":15597,"implemented":true,"kind":"function","modifiers":[],"name":"wrapStETH","nodeType":"FunctionDefinition","parameters":{"id":15566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15559,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15597,"src":"1813:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15558,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15561,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15597,"src":"1837:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15560,"name":"address","nodeType":"ElementaryTypeName","src":"1837:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15563,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15597,"src":"1864:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15562,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15565,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15597,"src":"1888:23:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1888:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1803:114:101"},"returnParameters":{"id":15567,"nodeType":"ParameterList","parameters":[],"src":"1935:0:101"},"scope":15708,"src":"1785:402:101","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15630,"nodeType":"Block","src":"2346:308:101","statements":[{"expression":{"id":15614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15608,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15603,"src":"2356:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15610,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"2392:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},{"id":15611,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15603,"src":"2401:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15612,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15599,"src":"2409:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15609,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2365:26:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":15613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2365:51:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2356:60:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15615,"nodeType":"ExpressionStatement","src":"2356:60:101"},{"assignments":[15617],"declarations":[{"constant":false,"id":15617,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15630,"src":"2522:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15616,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15622,"initialValue":{"arguments":[{"id":15620,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15603,"src":"2554:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15618,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"2539:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":15619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unwrap","nodeType":"MemberAccess","referencedDeclaration":3118,"src":"2539:14:101","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":15621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2539:22:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2522:39:101"},{"expression":{"arguments":[{"id":15624,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"2604:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},{"id":15625,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15601,"src":"2612:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15626,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15617,"src":"2623:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15627,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15605,"src":"2631:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15623,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2572:31:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2572:75:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15629,"nodeType":"ExpressionStatement","src":"2572:75:101"}]},"functionSelector":"db4c0e91","id":15631,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWstETH","nodeType":"FunctionDefinition","parameters":{"id":15606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15599,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15631,"src":"2224:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15598,"name":"address","nodeType":"ElementaryTypeName","src":"2224:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15601,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15631,"src":"2248:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15600,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15603,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15631,"src":"2275:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15602,"name":"uint256","nodeType":"ElementaryTypeName","src":"2275:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15605,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15631,"src":"2299:23:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15604,"name":"uint256","nodeType":"ElementaryTypeName","src":"2299:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2214:114:101"},"returnParameters":{"id":15607,"nodeType":"ParameterList","parameters":[],"src":"2346:0:101"},"scope":15708,"src":"2193:461:101","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15665,"nodeType":"Block","src":"2785:207:101","statements":[{"expression":{"id":15644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15640,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15635,"src":"2795:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15642,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15635,"src":"2819:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15641,"name":"_resolveAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15451,"src":"2804:14:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":15643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2804:22:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2795:31:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15645,"nodeType":"ExpressionStatement","src":"2795:31:101"},{"assignments":[15647],"declarations":[{"constant":false,"id":15647,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15665,"src":"2837:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15646,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15657,"initialValue":{"arguments":[{"arguments":[{"id":15654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2893:4:101","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$15708","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$15708","typeString":"contract LidoWrapping"}],"id":15653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2885:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15652,"name":"address","nodeType":"ElementaryTypeName","src":"2885:7:101","typeDescriptions":{}}},"id":15655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2885:13:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15648,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"2854:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":15649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":3089,"src":"2854:13:101","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":15651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":15650,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15635,"src":"2876:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2854:30:101","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":15656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:45:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2837:62:101"},{"expression":{"arguments":[{"id":15659,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15519,"src":"2942:6:101","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},{"id":15660,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15633,"src":"2950:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15661,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15647,"src":"2961:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15662,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15637,"src":"2969:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15658,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2910:31:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2910:75:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15664,"nodeType":"ExpressionStatement","src":"2910:75:101"}]},"functionSelector":"2cbec84e","id":15666,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETH","nodeType":"FunctionDefinition","parameters":{"id":15638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15633,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15666,"src":"2687:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15632,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15635,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15666,"src":"2714:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15634,"name":"uint256","nodeType":"ElementaryTypeName","src":"2714:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15637,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15666,"src":"2738:23:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15636,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2677:90:101"},"returnParameters":{"id":15639,"nodeType":"ParameterList","parameters":[],"src":"2785:0:101"},"scope":15708,"src":"2660:332:101","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15706,"nodeType":"Block","src":"3130:798:101","statements":[{"expression":{"id":15679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15675,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15670,"src":"3140:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15677,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15670,"src":"3164:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15676,"name":"_resolveAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15451,"src":"3149:14:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":15678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3149:22:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3140:31:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15680,"nodeType":"ExpressionStatement","src":"3140:31:101"},{"assignments":[15682],"declarations":[{"constant":false,"id":15682,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15706,"src":"3292:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15681,"name":"uint256","nodeType":"ElementaryTypeName","src":"3292:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15687,"initialValue":{"arguments":[{"id":15685,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15670,"src":"3334:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15683,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"3309:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":15684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWstETHByStETH","nodeType":"MemberAccess","referencedDeclaration":3126,"src":"3309:24:101","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":15686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3309:32:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3292:49:101"},{"expression":{"arguments":[{"id":15696,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15670,"src":"3827:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":15692,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"3807:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}],"id":15691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3799:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15690,"name":"address","nodeType":"ElementaryTypeName","src":"3799:7:101","typeDescriptions":{}}},"id":15693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3799:16:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3791:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":15688,"name":"address","nodeType":"ElementaryTypeName","src":"3791:8:101","stateMutability":"payable","typeDescriptions":{}}},"id":15694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3791:25:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":7531,"src":"3791:35:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":15697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3791:43:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15698,"nodeType":"ExpressionStatement","src":"3791:43:101"},{"expression":{"arguments":[{"id":15700,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15521,"src":"3877:7:101","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},{"id":15701,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15668,"src":"3886:9:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15702,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15682,"src":"3897:6:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15703,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15672,"src":"3905:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15699,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"3845:31:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3845:76:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15705,"nodeType":"ExpressionStatement","src":"3845:76:101"}]},"functionSelector":"1089e5e3","id":15707,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETHAndWrap","nodeType":"FunctionDefinition","parameters":{"id":15673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15668,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15707,"src":"3032:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15667,"name":"address","nodeType":"ElementaryTypeName","src":"3032:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15670,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15707,"src":"3059:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15669,"name":"uint256","nodeType":"ElementaryTypeName","src":"3059:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15672,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15707,"src":"3083:23:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15671,"name":"uint256","nodeType":"ElementaryTypeName","src":"3083:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3022:90:101"},"returnParameters":{"id":15674,"nodeType":"ParameterList","parameters":[],"src":"3130:0:101"},"scope":15708,"src":"2998:930:101","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15709,"src":"1190:2740:101"}],"src":"688:3243:101"},"id":101},"contracts/relayer/ReaperWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ReaperWrapping.sol","exportedSymbols":{"ReaperWrapping":[15827]},"id":15828,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15710,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:102"},{"id":15711,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:102"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol","id":15712,"nodeType":"ImportDirective","scope":15828,"sourceUnit":2643,"src":"747:87:102","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":15713,"nodeType":"ImportDirective","scope":15828,"sourceUnit":15505,"src":"836:35:102","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15715,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1138:19:102","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":15716,"nodeType":"InheritanceSpecifier","src":"1138:19:102"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":15714,"nodeType":"StructuredDocumentation","src":"873:228:102","text":" @title ReaperWrapping\n @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH"},"fullyImplemented":false,"id":15827,"linearizedBaseContracts":[15827,15504,9418],"name":"ReaperWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":15768,"nodeType":"Block","src":"1365:502:102","statements":[{"expression":{"id":15735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15729,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"1375:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15731,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"1411:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},{"id":15732,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"1423:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15733,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15720,"src":"1431:6:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15730,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"1384:26:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":15734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1384:54:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:63:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15736,"nodeType":"ExpressionStatement","src":"1375:63:102"},{"expression":{"arguments":[{"id":15740,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"1533:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15737,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"1513:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"id":15739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2635,"src":"1513:19:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":15741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1513:27:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15742,"nodeType":"ExpressionStatement","src":"1513:27:102"},{"assignments":[15744],"declarations":[{"constant":false,"id":15744,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":15768,"src":"1551:22:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15743,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1551:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15750,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15746,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15718,"src":"1583:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"id":15747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"1583:16:102","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1583:18:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15745,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1576:6:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1576:26:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1551:51:102"},{"assignments":[15752],"declarations":[{"constant":false,"id":15752,"mutability":"mutable","name":"withdrawnAmount","nodeType":"VariableDeclaration","scope":15768,"src":"1690:23:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15751,"name":"uint256","nodeType":"ElementaryTypeName","src":"1690:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15760,"initialValue":{"arguments":[{"arguments":[{"id":15757,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1750:4:102","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$15827","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$15827","typeString":"contract ReaperWrapping"}],"id":15756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1742:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15755,"name":"address","nodeType":"ElementaryTypeName","src":"1742:7:102","typeDescriptions":{}}},"id":15758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1742:13:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15753,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15744,"src":"1716:15:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":15754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"1716:25:102","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1716:40:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1690:66:102"},{"expression":{"arguments":[{"id":15762,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15744,"src":"1799:15:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":15763,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15722,"src":"1816:9:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15764,"name":"withdrawnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"1827:15:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15765,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15726,"src":"1844:15:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15761,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"1767:31:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1767:93:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15767,"nodeType":"ExpressionStatement","src":"1767:93:102"}]},"functionSelector":"d293f290","id":15769,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":15727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15718,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":15769,"src":"1205:28:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"},"typeName":{"id":15717,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":2642,"src":"1205:17:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":15720,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15769,"src":"1243:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15719,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15722,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15769,"src":"1267:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15721,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15724,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15769,"src":"1294:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15726,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15769,"src":"1318:23:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1318:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1195:152:102"},"returnParameters":{"id":15728,"nodeType":"ParameterList","parameters":[],"src":"1365:0:102"},"scope":15827,"src":"1164:703:102","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15825,"nodeType":"Block","src":"2072:494:102","statements":[{"assignments":[15783],"declarations":[{"constant":false,"id":15783,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":15825,"src":"2082:22:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15782,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2082:6:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15789,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15785,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"2114:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"id":15786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"2114:16:102","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2114:18:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15784,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2107:6:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2107:26:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2082:51:102"},{"expression":{"id":15800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15790,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15777,"src":"2144:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15792,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15783,"src":"2194:15:102","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":15795,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"2219:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}],"id":15794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2211:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15793,"name":"address","nodeType":"ElementaryTypeName","src":"2211:7:102","typeDescriptions":{}}},"id":15796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2211:19:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15797,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15777,"src":"2232:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15798,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15773,"src":"2240:6:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15791,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"2153:40:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":15799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:94:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2144:103:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15801,"nodeType":"ExpressionStatement","src":"2144:103:102"},{"expression":{"arguments":[{"id":15805,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15777,"src":"2322:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15802,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"2303:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"id":15804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2629,"src":"2303:18:102","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":15806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2303:26:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15807,"nodeType":"ExpressionStatement","src":"2303:26:102"},{"assignments":[15809],"declarations":[{"constant":false,"id":15809,"mutability":"mutable","name":"sharesGained","nodeType":"VariableDeclaration","scope":15825,"src":"2405:20:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15808,"name":"uint256","nodeType":"ElementaryTypeName","src":"2405:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15817,"initialValue":{"arguments":[{"arguments":[{"id":15814,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2457:4:102","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$15827","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$15827","typeString":"contract ReaperWrapping"}],"id":15813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2449:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15812,"name":"address","nodeType":"ElementaryTypeName","src":"2449:7:102","typeDescriptions":{}}},"id":15815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2449:13:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15810,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"2428:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"id":15811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2428:20:102","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2428:35:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2405:58:102"},{"expression":{"arguments":[{"id":15819,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15771,"src":"2506:10:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},{"id":15820,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"2518:9:102","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15821,"name":"sharesGained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15809,"src":"2529:12:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15822,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15779,"src":"2543:15:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15818,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2474:31:102","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2474:85:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15824,"nodeType":"ExpressionStatement","src":"2474:85:102"}]},"functionSelector":"e8210e3c","id":15826,"implemented":true,"kind":"function","modifiers":[],"name":"wrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":15780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15771,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":15826,"src":"1912:28:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"},"typeName":{"id":15770,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":2642,"src":"1912:17:102","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$2642","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":15773,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15826,"src":"1950:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15772,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15775,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15826,"src":"1974:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15774,"name":"address","nodeType":"ElementaryTypeName","src":"1974:7:102","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15777,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15826,"src":"2001:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15776,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15779,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15826,"src":"2025:23:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15778,"name":"uint256","nodeType":"ElementaryTypeName","src":"2025:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1902:152:102"},"returnParameters":{"id":15781,"nodeType":"ParameterList","parameters":[],"src":"2072:0:102"},"scope":15827,"src":"1873:693:102","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15828,"src":"1102:1466:102"}],"src":"688:1881:102"},"id":102},"contracts/relayer/SiloWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/SiloWrapping.sol","exportedSymbols":{"SiloWrapping":[15963]},"id":15964,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15829,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:103"},{"id":15830,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:103"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","id":15831,"nodeType":"ImportDirective","scope":15964,"sourceUnit":2721,"src":"747:75:103","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","id":15832,"nodeType":"ImportDirective","scope":15964,"sourceUnit":2662,"src":"823:81:103","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":15833,"nodeType":"ImportDirective","scope":15964,"sourceUnit":15505,"src":"906:35:103","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15835,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1159:19:103","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":15836,"nodeType":"InheritanceSpecifier","src":"1159:19:103"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":15834,"nodeType":"StructuredDocumentation","src":"943:181:103","text":" @title SiloWrapping\n @notice Allows users to wrap and unwrap Silo shareTokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":15963,"linearizedBaseContracts":[15963,15504,9418],"name":"SiloWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":15893,"nodeType":"Block","src":"1374:630:103","statements":[{"assignments":[15850],"declarations":[{"constant":false,"id":15850,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":15893,"src":"1469:22:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15849,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1469:6:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15856,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15852,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15838,"src":"1501:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":15853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":2654,"src":"1501:18:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1501:20:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15851,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1494:6:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1494:28:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1469:53:103"},{"assignments":[15858],"declarations":[{"constant":false,"id":15858,"mutability":"mutable","name":"silo","nodeType":"VariableDeclaration","scope":15893,"src":"1594:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"},"typeName":{"id":15857,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"1594:5:103","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"visibility":"internal"}],"id":15862,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15859,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15838,"src":"1607:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":15860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"silo","nodeType":"MemberAccess","referencedDeclaration":2660,"src":"1607:17:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ISilo_$2720_$","typeString":"function () view external returns (contract ISilo)"}},"id":15861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1607:19:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"nodeType":"VariableDeclarationStatement","src":"1594:32:103"},{"expression":{"id":15873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15863,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"1637:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15865,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"1687:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":15868,"name":"silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15858,"src":"1712:4:103","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}],"id":15867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1704:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15866,"name":"address","nodeType":"ElementaryTypeName","src":"1704:7:103","typeDescriptions":{}}},"id":15869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1704:13:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15870,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"1719:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15871,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15840,"src":"1727:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15864,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1646:40:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":15872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:88:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1637:97:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15874,"nodeType":"ExpressionStatement","src":"1637:97:103"},{"assignments":[null,15876],"declarations":[null,{"constant":false,"id":15876,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15893,"src":"1856:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15875,"name":"uint256","nodeType":"ElementaryTypeName","src":"1856:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15887,"initialValue":{"arguments":[{"arguments":[{"id":15881,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"1898:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":15880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1890:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15879,"name":"address","nodeType":"ElementaryTypeName","src":"1890:7:103","typeDescriptions":{}}},"id":15882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1890:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15883,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15842,"src":"1916:9:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15884,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15844,"src":"1927:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":15885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1935:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":15877,"name":"silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15858,"src":"1874:4:103","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"id":15878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":2705,"src":"1874:15:103","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,bool) external returns (uint256,uint256)"}},"id":15886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1874:67:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1853:88:103"},{"expression":{"arguments":[{"id":15889,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"1973:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15890,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15876,"src":"1990:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15888,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"1952:20:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":15891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1952:45:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15892,"nodeType":"ExpressionStatement","src":"1952:45:103"}]},"functionSelector":"5001fe75","id":15894,"implemented":true,"kind":"function","modifiers":[],"name":"wrapShareToken","nodeType":"FunctionDefinition","parameters":{"id":15847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15838,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":15894,"src":"1218:24:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":15837,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1218:11:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":15840,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15894,"src":"1252:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15839,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15842,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15894,"src":"1276:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15841,"name":"address","nodeType":"ElementaryTypeName","src":"1276:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15844,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15894,"src":"1303:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1303:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15846,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15894,"src":"1327:23:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1327:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1208:148:103"},"returnParameters":{"id":15848,"nodeType":"ParameterList","parameters":[],"src":"1374:0:103"},"scope":15963,"src":"1185:819:103","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15961,"nodeType":"Block","src":"2201:809:103","statements":[{"expression":{"id":15913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15907,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15902,"src":"2211:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15909,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15896,"src":"2247:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},{"id":15910,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15902,"src":"2261:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15911,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"2269:6:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15908,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2220:26:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":15912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:56:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2211:65:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15914,"nodeType":"ExpressionStatement","src":"2211:65:103"},{"assignments":[15916],"declarations":[{"constant":false,"id":15916,"mutability":"mutable","name":"silo","nodeType":"VariableDeclaration","scope":15961,"src":"2349:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"},"typeName":{"id":15915,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"2349:5:103","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"visibility":"internal"}],"id":15920,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15917,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15896,"src":"2362:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":15918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"silo","nodeType":"MemberAccess","referencedDeclaration":2660,"src":"2362:17:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ISilo_$2720_$","typeString":"function () view external returns (contract ISilo)"}},"id":15919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:19:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"nodeType":"VariableDeclarationStatement","src":"2349:32:103"},{"assignments":[15922],"declarations":[{"constant":false,"id":15922,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":15961,"src":"2391:22:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15921,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2391:6:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15928,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15924,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15896,"src":"2423:12:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":15925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":2654,"src":"2423:18:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2423:20:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15923,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2416:6:103","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2416:28:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2391:53:103"},{"expression":{"arguments":[{"arguments":[{"id":15934,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"2797:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":15933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2789:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15932,"name":"address","nodeType":"ElementaryTypeName","src":"2789:7:103","typeDescriptions":{}}},"id":15935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2789:24:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":15938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2820:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15937,"name":"uint256","nodeType":"ElementaryTypeName","src":"2820:7:103","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":15936,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2815:4:103","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2815:13:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":15940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"2815:17:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":15941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2834:5:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":15929,"name":"silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"2775:4:103","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"id":15931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2719,"src":"2775:13:103","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,bool) external returns (uint256,uint256)"}},"id":15942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2775:65:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":15943,"nodeType":"ExpressionStatement","src":"2775:65:103"},{"assignments":[15945],"declarations":[{"constant":false,"id":15945,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":15961,"src":"2851:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15944,"name":"uint256","nodeType":"ElementaryTypeName","src":"2851:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15953,"initialValue":{"arguments":[{"arguments":[{"id":15950,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2902:4:103","typeDescriptions":{"typeIdentifier":"t_contract$_SiloWrapping_$15963","typeString":"contract SiloWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SiloWrapping_$15963","typeString":"contract SiloWrapping"}],"id":15949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2894:7:103","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15948,"name":"address","nodeType":"ElementaryTypeName","src":"2894:7:103","typeDescriptions":{}}},"id":15951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2894:13:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15946,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"2868:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":15947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2868:25:103","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2868:40:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2851:57:103"},{"expression":{"arguments":[{"id":15955,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"2951:15:103","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":15956,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15900,"src":"2968:9:103","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15957,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15945,"src":"2979:6:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15958,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15904,"src":"2987:15:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15954,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2919:31:103","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":15959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2919:84:103","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15960,"nodeType":"ExpressionStatement","src":"2919:84:103"}]},"functionSelector":"4e9d9bab","id":15962,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapShareToken","nodeType":"FunctionDefinition","parameters":{"id":15905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15896,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":15962,"src":"2045:24:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":15895,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"2045:11:103","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":15898,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":15962,"src":"2079:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15897,"name":"address","nodeType":"ElementaryTypeName","src":"2079:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15900,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":15962,"src":"2103:17:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15899,"name":"address","nodeType":"ElementaryTypeName","src":"2103:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15902,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15962,"src":"2130:14:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15901,"name":"uint256","nodeType":"ElementaryTypeName","src":"2130:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15904,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":15962,"src":"2154:23:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15903,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2035:148:103"},"returnParameters":{"id":15906,"nodeType":"ParameterList","parameters":[],"src":"2201:0:103"},"scope":15963,"src":"2010:1000:103","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":15964,"src":"1125:1887:103"}],"src":"688:2325:103"},"id":103},"contracts/relayer/TetuWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/TetuWrapping.sol","exportedSymbols":{"TetuWrapping":[16082]},"id":16083,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15965,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:104"},{"id":15966,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:104"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","id":15967,"nodeType":"ImportDirective","scope":16083,"sourceUnit":3023,"src":"747:85:104","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":15968,"nodeType":"ImportDirective","scope":16083,"sourceUnit":15505,"src":"834:35:104","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15970,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1082:19:104","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":15971,"nodeType":"InheritanceSpecifier","src":"1082:19:104"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":15969,"nodeType":"StructuredDocumentation","src":"871:176:104","text":" @title TetuWrapping\n @notice Allows users to wrap and unwrap Tetu tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":16082,"linearizedBaseContracts":[16082,15504,9418],"name":"TetuWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":16027,"nodeType":"Block","src":"1295:406:104","statements":[{"assignments":[15985],"declarations":[{"constant":false,"id":15985,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":16027,"src":"1305:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":15984,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1305:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15991,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15987,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"1332:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":15988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":3006,"src":"1332:23:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":15989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:25:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15986,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1325:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":15990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1325:33:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1305:53:104"},{"expression":{"id":16002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15992,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15979,"src":"1369:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15994,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15985,"src":"1419:10:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":15997,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"1439:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":15996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1431:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15995,"name":"address","nodeType":"ElementaryTypeName","src":"1431:7:104","typeDescriptions":{}}},"id":15998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1431:21:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15999,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15979,"src":"1454:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16000,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15975,"src":"1462:6:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15993,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1378:40:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":16001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1378:91:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1369:100:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16003,"nodeType":"ExpressionStatement","src":"1369:100:104"},{"expression":{"arguments":[{"id":16007,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15979,"src":"1501:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16004,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"1480:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":16006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2977,"src":"1480:20:104","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":16008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1480:28:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16009,"nodeType":"ExpressionStatement","src":"1480:28:104"},{"assignments":[16011],"declarations":[{"constant":false,"id":16011,"mutability":"mutable","name":"receivedWrappedAmount","nodeType":"VariableDeclaration","scope":16027,"src":"1518:29:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16010,"name":"uint256","nodeType":"ElementaryTypeName","src":"1518:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16019,"initialValue":{"arguments":[{"arguments":[{"id":16016,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1581:4:104","typeDescriptions":{"typeIdentifier":"t_contract$_TetuWrapping_$16082","typeString":"contract TetuWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TetuWrapping_$16082","typeString":"contract TetuWrapping"}],"id":16015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1573:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16014,"name":"address","nodeType":"ElementaryTypeName","src":"1573:7:104","typeDescriptions":{}}},"id":16017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1573:13:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16012,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"1550:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":16013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"1550:22:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1550:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1518:69:104"},{"expression":{"arguments":[{"id":16021,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15973,"src":"1630:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},{"id":16022,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15977,"src":"1644:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16023,"name":"receivedWrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16011,"src":"1655:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16024,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15981,"src":"1678:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16020,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"1598:31:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":16025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:96:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16026,"nodeType":"ExpressionStatement","src":"1598:96:104"}]},"functionSelector":"b064b376","id":16028,"implemented":true,"kind":"function","modifiers":[],"name":"wrapTetu","nodeType":"FunctionDefinition","parameters":{"id":15982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15973,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":16028,"src":"1135:28:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":15972,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"1135:15:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"},{"constant":false,"id":15975,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":16028,"src":"1173:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15974,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15977,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16028,"src":"1197:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15976,"name":"address","nodeType":"ElementaryTypeName","src":"1197:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15979,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16028,"src":"1224:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15978,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15981,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16028,"src":"1248:23:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15980,"name":"uint256","nodeType":"ElementaryTypeName","src":"1248:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1125:152:104"},"returnParameters":{"id":15983,"nodeType":"ParameterList","parameters":[],"src":"1295:0:104"},"scope":16082,"src":"1108:593:104","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16080,"nodeType":"Block","src":"1896:360:104","statements":[{"expression":{"id":16047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16041,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16036,"src":"1906:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16043,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16030,"src":"1942:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},{"id":16044,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16036,"src":"1956:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16045,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16032,"src":"1964:6:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":16042,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"1915:26:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":16046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:56:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1906:65:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16048,"nodeType":"ExpressionStatement","src":"1906:65:104"},{"assignments":[16050],"declarations":[{"constant":false,"id":16050,"mutability":"mutable","name":"mainToken","nodeType":"VariableDeclaration","scope":16080,"src":"1982:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":16049,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1982:6:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":16056,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16052,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16030,"src":"2008:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":16053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":3006,"src":"2008:23:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":16054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2008:25:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16051,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2001:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":16055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2001:33:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1982:52:104"},{"expression":{"arguments":[{"id":16060,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16036,"src":"2066:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16057,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16030,"src":"2044:12:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":16059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2994,"src":"2044:21:104","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":16061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2044:29:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16062,"nodeType":"ExpressionStatement","src":"2044:29:104"},{"assignments":[16064],"declarations":[{"constant":false,"id":16064,"mutability":"mutable","name":"withdrawnMainAmount","nodeType":"VariableDeclaration","scope":16080,"src":"2083:27:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16063,"name":"uint256","nodeType":"ElementaryTypeName","src":"2083:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16072,"initialValue":{"arguments":[{"arguments":[{"id":16069,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2141:4:104","typeDescriptions":{"typeIdentifier":"t_contract$_TetuWrapping_$16082","typeString":"contract TetuWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TetuWrapping_$16082","typeString":"contract TetuWrapping"}],"id":16068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2133:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16067,"name":"address","nodeType":"ElementaryTypeName","src":"2133:7:104","typeDescriptions":{}}},"id":16070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2133:13:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16065,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16050,"src":"2113:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2113:19:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2113:34:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2083:64:104"},{"expression":{"arguments":[{"id":16074,"name":"mainToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16050,"src":"2190:9:104","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":16075,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16034,"src":"2201:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16076,"name":"withdrawnMainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16064,"src":"2212:19:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16077,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16038,"src":"2233:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16073,"name":"_transferAndSetChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"2158:31:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256,uint256)"}},"id":16078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2158:91:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16079,"nodeType":"ExpressionStatement","src":"2158:91:104"}]},"functionSelector":"311c5c57","id":16081,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapTetu","nodeType":"FunctionDefinition","parameters":{"id":16039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16030,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":16081,"src":"1736:28:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":16029,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"1736:15:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"},{"constant":false,"id":16032,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":16081,"src":"1774:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16031,"name":"address","nodeType":"ElementaryTypeName","src":"1774:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16034,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16081,"src":"1798:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16033,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16036,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16081,"src":"1825:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1825:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16038,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16081,"src":"1849:23:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16037,"name":"uint256","nodeType":"ElementaryTypeName","src":"1849:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1726:152:104"},"returnParameters":{"id":16040,"nodeType":"ParameterList","parameters":[],"src":"1896:0:104"},"scope":16082,"src":"1707:549:104","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16083,"src":"1048:1210:104"}],"src":"688:1571:104"},"id":104},"contracts/relayer/UnbuttonWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","exportedSymbols":{"UnbuttonWrapping":[16175]},"id":16176,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16084,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:105"},{"id":16085,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:105"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol","id":16086,"nodeType":"ImportDirective","scope":16176,"sourceUnit":3040,"src":"747:84:105","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":16087,"nodeType":"ImportDirective","scope":16176,"sourceUnit":15505,"src":"833:35:105","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":16089,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1512:19:105","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":16090,"nodeType":"InheritanceSpecifier","src":"1512:19:105"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":16088,"nodeType":"StructuredDocumentation","src":"870:603:105","text":" @title UnbuttonWrapping\n @author @aalavandhan1984 (eng@fragments.org)\n @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n a non-rebasing static balance version using the Unbutton wrapper.\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n The rebasing token to be wrapped is called the \"underlying\" token.\n The wrapped non-rebasing token is called the \"wrapped\" token.\n Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol"},"fullyImplemented":false,"id":16175,"linearizedBaseContracts":[16175,15504,9418],"name":"UnbuttonWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":16137,"nodeType":"Block","src":"2024:328:105","statements":[{"assignments":[16105],"declarations":[{"constant":false,"id":16105,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":16137,"src":"2034:22:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":16104,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2034:6:105","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":16111,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16107,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16093,"src":"2066:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},"id":16108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":2044,"src":"2066:23:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":16109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2066:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16106,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2059:6:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2059:33:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2034:58:105"},{"expression":{"id":16122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16112,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16099,"src":"2103:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16114,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16105,"src":"2154:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":16117,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16093,"src":"2179:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}],"id":16116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2171:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16115,"name":"address","nodeType":"ElementaryTypeName","src":"2171:7:105","typeDescriptions":{}}},"id":16118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2171:21:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16119,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16099,"src":"2194:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16120,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16095,"src":"2203:6:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":16113,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"2113:40:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":16121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2113:97:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2103:107:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16123,"nodeType":"ExpressionStatement","src":"2103:107:105"},{"assignments":[16125],"declarations":[{"constant":false,"id":16125,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":16137,"src":"2221:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16124,"name":"uint256","nodeType":"ElementaryTypeName","src":"2221:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16131,"initialValue":{"arguments":[{"id":16128,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16097,"src":"2266:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16129,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16099,"src":"2277:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16126,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16093,"src":"2242:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},"id":16127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":2006,"src":"2242:23:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":16130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2242:43:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2221:64:105"},{"expression":{"arguments":[{"id":16133,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16101,"src":"2317:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16134,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16125,"src":"2334:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16132,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"2296:20:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2296:49:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16136,"nodeType":"ExpressionStatement","src":"2296:49:105"}]},"documentation":{"id":16091,"nodeType":"StructuredDocumentation","src":"1538:285:105","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param uAmount The underling token amount to be deposited into the wrapper.\n @param outputReference Chained output reference."},"functionSelector":"abf6d399","id":16138,"implemented":true,"kind":"function","modifiers":[],"name":"wrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":16102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16093,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":16138,"src":"1864:27:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"},"typeName":{"id":16092,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":3039,"src":"1864:14:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":16095,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":16138,"src":"1901:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16094,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16097,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16138,"src":"1925:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16096,"name":"address","nodeType":"ElementaryTypeName","src":"1925:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16099,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":16138,"src":"1952:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1952:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16101,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16138,"src":"1977:23:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1977:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1854:152:105"},"returnParameters":{"id":16103,"nodeType":"ParameterList","parameters":[],"src":"2024:0:105"},"scope":16175,"src":"1828:524:105","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16173,"nodeType":"Block","src":"2847:224:105","statements":[{"expression":{"id":16158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16152,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16147,"src":"2857:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16154,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16141,"src":"2893:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},{"id":16155,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16147,"src":"2907:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16156,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16143,"src":"2915:6:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":16153,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"2866:26:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":16157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2866:56:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2857:65:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16159,"nodeType":"ExpressionStatement","src":"2857:65:105"},{"assignments":[16161],"declarations":[{"constant":false,"id":16161,"mutability":"mutable","name":"withdrawnUAmount","nodeType":"VariableDeclaration","scope":16173,"src":"2933:24:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16160,"name":"uint256","nodeType":"ElementaryTypeName","src":"2933:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16167,"initialValue":{"arguments":[{"id":16164,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16145,"src":"2980:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16165,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16147,"src":"2991:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16162,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16141,"src":"2960:12:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},"id":16163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnTo","nodeType":"MemberAccess","referencedDeclaration":1974,"src":"2960:19:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":16166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2960:38:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2933:65:105"},{"expression":{"arguments":[{"id":16169,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16149,"src":"3030:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16170,"name":"withdrawnUAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16161,"src":"3047:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16168,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"3009:20:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3009:55:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16172,"nodeType":"ExpressionStatement","src":"3009:55:105"}]},"documentation":{"id":16139,"nodeType":"StructuredDocumentation","src":"2358:287:105","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n @param outputReference Chained output reference."},"functionSelector":"611b90dd","id":16174,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":16150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16141,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":16174,"src":"2688:27:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"},"typeName":{"id":16140,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":3039,"src":"2688:14:105","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$3039","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":16143,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":16174,"src":"2725:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16142,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16145,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16174,"src":"2749:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16144,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16147,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16174,"src":"2776:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2776:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16149,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16174,"src":"2800:23:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2800:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:151:105"},"returnParameters":{"id":16151,"nodeType":"ParameterList","parameters":[],"src":"2847:0:105"},"scope":16175,"src":"2650:421:105","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":16176,"src":"1474:1599:105"}],"src":"688:2386:105"},"id":105},"contracts/relayer/VaultActions.sol":{"ast":{"absolutePath":"contracts/relayer/VaultActions.sol","exportedSymbols":{"ComposableStablePoolUserData":[17491],"LegacyStablePoolUserData":[17483],"VaultActions":[17474]},"id":17492,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":16177,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:106"},{"id":16178,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:106"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":16179,"nodeType":"ImportDirective","scope":17492,"sourceUnit":3865,"src":"747:65:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":16180,"nodeType":"ImportDirective","scope":17492,"sourceUnit":918,"src":"813:87:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","id":16181,"nodeType":"ImportDirective","scope":17492,"sourceUnit":590,"src":"901:83:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":16182,"nodeType":"ImportDirective","scope":17492,"sourceUnit":5173,"src":"986:77:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","id":16183,"nodeType":"ImportDirective","scope":17492,"sourceUnit":5489,"src":"1064:77:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":16184,"nodeType":"ImportDirective","scope":17492,"sourceUnit":7475,"src":"1142:66:106","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":16185,"nodeType":"ImportDirective","scope":17492,"sourceUnit":15505,"src":"1210:35:106","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":16187,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1661:19:106","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":16188,"nodeType":"InheritanceSpecifier","src":"1661:19:106"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":16186,"nodeType":"StructuredDocumentation","src":"1247:379:106","text":" @title VaultActions\n @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n @dev Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token\n transfers from the Vault.\n All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":17474,"linearizedBaseContracts":[17474,15504,9418],"name":"VaultActions","nodeType":"ContractDefinition","nodes":[{"id":16191,"libraryName":{"id":16189,"name":"Math","nodeType":"UserDefinedTypeName","referencedDeclaration":7474,"src":"1693:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_Math_$7474","typeString":"library Math"}},"nodeType":"UsingForDirective","src":"1687:23:106","typeName":{"id":16190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"VaultActions.OutputReference","id":16196,"members":[{"constant":false,"id":16193,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":16196,"src":"2847:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16192,"name":"uint256","nodeType":"ElementaryTypeName","src":"2847:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16195,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":16196,"src":"2870:11:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16194,"name":"uint256","nodeType":"ElementaryTypeName","src":"2870:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OutputReference","nodeType":"StructDefinition","scope":17474,"src":"2814:74:106","visibility":"public"},{"body":{"id":16266,"nodeType":"Block","src":"3127:470:106","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16212,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16200,"src":"3145:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":16213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3763,"src":"3145:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16214,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3161:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3161:10:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3145:26:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16217,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16200,"src":"3175:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":16218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3763,"src":"3175:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16221,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3199:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}],"id":16220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3191:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16219,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:106","typeDescriptions":{}}},"id":16222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3191:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3175:29:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:59:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":16225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3206:18:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":16211,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3137:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3137:88:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16227,"nodeType":"ExpressionStatement","src":"3137:88:106"},{"condition":{"arguments":[{"expression":{"id":16229,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16198,"src":"3260:10:106","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":16230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3712,"src":"3260:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16228,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"3240:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3240:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16242,"nodeType":"IfStatement","src":"3236:133:106","trueBody":{"id":16241,"nodeType":"Block","src":"3280:89:106","statements":[{"expression":{"id":16239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":16232,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16198,"src":"3294:10:106","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":16234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3712,"src":"3294:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":16236,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16198,"src":"3340:10:106","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":16237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3712,"src":"3340:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16235,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"3314:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":16238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3314:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3294:64:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16240,"nodeType":"ExpressionStatement","src":"3294:64:106"}]}},{"assignments":[16244],"declarations":[{"constant":false,"id":16244,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":16266,"src":"3379:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16243,"name":"uint256","nodeType":"ElementaryTypeName","src":"3379:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16255,"initialValue":{"arguments":[{"id":16250,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16198,"src":"3428:10:106","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},{"id":16251,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16200,"src":"3440:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":16252,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"3447:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16253,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16204,"src":"3454:8:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16245,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"3396:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3396:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3702,"src":"3396:15:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3715_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":16249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16248,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16206,"src":"3420:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3396:31:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3715_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$value","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":16254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3396:67:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3379:84:106"},{"condition":{"arguments":[{"id":16257,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16208,"src":"3498:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16256,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"3478:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3478:36:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16265,"nodeType":"IfStatement","src":"3474:117:106","trueBody":{"id":16264,"nodeType":"Block","src":"3516:75:106","statements":[{"expression":{"arguments":[{"id":16260,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16208,"src":"3556:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16244,"src":"3573:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16259,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"3530:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3530:50:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16263,"nodeType":"ExpressionStatement","src":"3530:50:106"}]}}]},"functionSelector":"2e6272ea","id":16267,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":16209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16198,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":16267,"src":"2917:35:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":16197,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3715,"src":"2917:17:106","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3715_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":16200,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":16267,"src":"2962:36:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":16199,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"2962:21:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":16202,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":16267,"src":"3008:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16201,"name":"uint256","nodeType":"ElementaryTypeName","src":"3008:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16204,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16267,"src":"3031:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16203,"name":"uint256","nodeType":"ElementaryTypeName","src":"3031:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16206,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16267,"src":"3057:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16205,"name":"uint256","nodeType":"ElementaryTypeName","src":"3057:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16208,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16267,"src":"3080:23:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16207,"name":"uint256","nodeType":"ElementaryTypeName","src":"3080:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2907:202:106"},"returnParameters":{"id":16210,"nodeType":"ParameterList","parameters":[],"src":"3127:0:106"},"scope":17474,"src":"2894:703:106","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16398,"nodeType":"Block","src":"3936:1192:106","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16291,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16277,"src":"3954:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":16292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3763,"src":"3954:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16293,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3970:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3970:10:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3954:26:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16296,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16277,"src":"3984:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":16297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3763,"src":"3984:12:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16300,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4008:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}],"id":16299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4000:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16298,"name":"address","nodeType":"ElementaryTypeName","src":"4000:7:106","typeDescriptions":{}}},"id":16301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4000:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3984:29:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3954:59:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":16304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4015:18:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":16290,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3946:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3946:88:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16306,"nodeType":"ExpressionStatement","src":"3946:88:106"},{"body":{"id":16339,"nodeType":"Block","src":"4088:187:106","statements":[{"assignments":[16319],"declarations":[{"constant":false,"id":16319,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16339,"src":"4102:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16318,"name":"uint256","nodeType":"ElementaryTypeName","src":"4102:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16324,"initialValue":{"expression":{"baseExpression":{"id":16320,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16272,"src":"4119:5:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":16322,"indexExpression":{"id":16321,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16308,"src":"4125:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4119:8:106","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":16323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3745,"src":"4119:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4102:32:106"},{"condition":{"arguments":[{"id":16326,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"4172:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16325,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"4152:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4152:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16338,"nodeType":"IfStatement","src":"4148:117:106","trueBody":{"id":16337,"nodeType":"Block","src":"4181:84:106","statements":[{"expression":{"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":16328,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16272,"src":"4199:5:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":16330,"indexExpression":{"id":16329,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16308,"src":"4205:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4199:8:106","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":16331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3745,"src":"4199:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16333,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16319,"src":"4243:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16332,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"4217:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":16334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4217:33:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4199:51:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16336,"nodeType":"ExpressionStatement","src":"4199:51:106"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16311,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16308,"src":"4065:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16312,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16272,"src":"4069:5:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":16313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4069:12:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4065:16:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16340,"initializationExpression":{"assignments":[16308],"declarations":[{"constant":false,"id":16308,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16340,"src":"4050:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16307,"name":"uint256","nodeType":"ElementaryTypeName","src":"4050:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16310,"initialValue":{"hexValue":"30","id":16309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4062:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4050:13:106"},"loopExpression":{"expression":{"id":16316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4083:3:106","subExpression":{"id":16315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16308,"src":"4085:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16317,"nodeType":"ExpressionStatement","src":"4083:3:106"},"nodeType":"ForStatement","src":"4045:230:106"},{"assignments":[16345],"declarations":[{"constant":false,"id":16345,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":16398,"src":"4285:23:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":16343,"name":"int256","nodeType":"ElementaryTypeName","src":"4285:6:106","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":16344,"nodeType":"ArrayTypeName","src":"4285:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":16358,"initialValue":{"arguments":[{"id":16351,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16269,"src":"4348:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},{"id":16352,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16272,"src":"4354:5:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":16353,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16275,"src":"4361:6:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"}},{"id":16354,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16277,"src":"4369:5:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":16355,"name":"limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16280,"src":"4376:6:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"}},{"id":16356,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16282,"src":"4384:8:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16346,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"4311:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4311:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"batchSwap","nodeType":"MemberAccess","referencedDeclaration":3737,"src":"4311:20:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3688_$_t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":16350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16284,"src":"4340:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4311:36:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3688_$_t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$_t_struct$_FundManagement_$3770_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$value","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":16357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4311:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4285:108:106"},{"body":{"id":16396,"nodeType":"Block","src":"4458:664:106","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":16372,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16287,"src":"4500:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16374,"indexExpression":{"id":16373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"4517:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4500:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"4500:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16371,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"4480:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4480:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":16377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4526:27:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":16370,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4472:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4472:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16379,"nodeType":"ExpressionStatement","src":"4472:82:106"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":16381,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16287,"src":"5041:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16383,"indexExpression":{"id":16382,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"5058:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5041:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"5041:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":16387,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16345,"src":"5075:7:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":16392,"indexExpression":{"expression":{"baseExpression":{"id":16388,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16287,"src":"5083:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16390,"indexExpression":{"id":16389,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"5100:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5083:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":16193,"src":"5083:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5075:34:106","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":16385,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7474,"src":"5066:4:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$7474_$","typeString":"type(library Math)"}},"id":16386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":7217,"src":"5066:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":16393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5066:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16380,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"5015:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5015:96:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16395,"nodeType":"ExpressionStatement","src":"5015:96:106"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"4424:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16364,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16287,"src":"4428:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4428:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4424:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16397,"initializationExpression":{"assignments":[16360],"declarations":[{"constant":false,"id":16360,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16397,"src":"4409:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16359,"name":"uint256","nodeType":"ElementaryTypeName","src":"4409:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16362,"initialValue":{"hexValue":"30","id":16361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4421:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4409:13:106"},"loopExpression":{"expression":{"id":16368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4453:3:106","subExpression":{"id":16367,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16360,"src":"4455:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16369,"nodeType":"ExpressionStatement","src":"4453:3:106"},"nodeType":"ForStatement","src":"4404:718:106"}]},"functionSelector":"18369446","id":16399,"implemented":true,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":16288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16269,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":16399,"src":"3631:20:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"},"typeName":{"id":16268,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3688,"src":"3631:15:106","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3688","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":16272,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":16399,"src":"3661:35:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":16270,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3748,"src":"3661:20:106","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3748_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":16271,"nodeType":"ArrayTypeName","src":"3661:22:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3748_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":16275,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":16399,"src":"3706:24:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_calldata_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":16273,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"3706:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"id":16274,"nodeType":"ArrayTypeName","src":"3706:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":16277,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":16399,"src":"3740:36:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":16276,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3770,"src":"3740:21:106","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3770_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":16280,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":16399,"src":"3786:24:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":16278,"name":"int256","nodeType":"ElementaryTypeName","src":"3786:6:106","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":16279,"nodeType":"ArrayTypeName","src":"3786:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":16282,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":16399,"src":"3820:16:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3820:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16284,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16399,"src":"3846:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16283,"name":"uint256","nodeType":"ElementaryTypeName","src":"3846:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16287,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":16399,"src":"3869:43:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":16285,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":16196,"src":"3869:15:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":16286,"nodeType":"ArrayTypeName","src":"3869:17:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"3621:297:106"},"returnParameters":{"id":16289,"nodeType":"ParameterList","parameters":[],"src":"3936:0:106"},"scope":17474,"src":"3603:1525:106","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16510,"nodeType":"Block","src":"5303:839:106","statements":[{"body":{"id":16463,"nodeType":"Block","src":"5354:288:106","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":16422,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5376:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16424,"indexExpression":{"id":16423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5380:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5376:6:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":16425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3491,"src":"5376:13:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16426,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5393:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5393:10:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5376:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":16429,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5407:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16431,"indexExpression":{"id":16430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5411:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5407:6:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":16432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3491,"src":"5407:13:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16435,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5432:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}],"id":16434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5424:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16433,"name":"address","nodeType":"ElementaryTypeName","src":"5424:7:106","typeDescriptions":{}}},"id":16436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5424:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5407:30:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5376:61:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":16439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5439:18:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":16421,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5368:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5368:90:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16441,"nodeType":"ExpressionStatement","src":"5368:90:106"},{"assignments":[16443],"declarations":[{"constant":false,"id":16443,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16463,"src":"5473:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16442,"name":"uint256","nodeType":"ElementaryTypeName","src":"5473:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16448,"initialValue":{"expression":{"baseExpression":{"id":16444,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5490:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16446,"indexExpression":{"id":16445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5494:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5490:6:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":16447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3489,"src":"5490:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5473:30:106"},{"condition":{"arguments":[{"id":16450,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16443,"src":"5541:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16449,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"5521:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5521:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16462,"nodeType":"IfStatement","src":"5517:115:106","trueBody":{"id":16461,"nodeType":"Block","src":"5550:82:106","statements":[{"expression":{"id":16459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":16452,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5568:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16454,"indexExpression":{"id":16453,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5572:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5568:6:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":16455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3489,"src":"5568:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16457,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16443,"src":"5610:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16456,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"5584:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":16458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5584:33:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5568:49:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16460,"nodeType":"ExpressionStatement","src":"5568:49:106"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16414,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5333:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16415,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5337:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5337:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5333:14:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16464,"initializationExpression":{"assignments":[16411],"declarations":[{"constant":false,"id":16411,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16464,"src":"5318:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16410,"name":"uint256","nodeType":"ElementaryTypeName","src":"5318:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16413,"initialValue":{"hexValue":"30","id":16412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5330:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5318:13:106"},"loopExpression":{"expression":{"id":16419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5349:3:106","subExpression":{"id":16418,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16411,"src":"5349:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16420,"nodeType":"ExpressionStatement","src":"5349:3:106"},"nodeType":"ForStatement","src":"5313:329:106"},{"expression":{"arguments":[{"id":16470,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"5697:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16465,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"5652:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5652:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":3483,"src":"5652:28:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":16469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16404,"src":"5689:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5652:44:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":16471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5652:49:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16472,"nodeType":"ExpressionStatement","src":"5652:49:106"},{"body":{"id":16508,"nodeType":"Block","src":"5925:211:106","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":16486,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16407,"src":"5967:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16488,"indexExpression":{"id":16487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16474,"src":"5984:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5967:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"5967:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16485,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"5947:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5947:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":16491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5993:27:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":16484,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5939:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5939:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16493,"nodeType":"ExpressionStatement","src":"5939:82:106"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":16495,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16407,"src":"6062:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16497,"indexExpression":{"id":16496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16474,"src":"6079:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6062:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"6062:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":16499,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16402,"src":"6087:3:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":16504,"indexExpression":{"expression":{"baseExpression":{"id":16500,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16407,"src":"6091:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16502,"indexExpression":{"id":16501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16474,"src":"6108:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6091:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":16193,"src":"6091:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6087:30:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":16505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3489,"src":"6087:37:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16494,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"6036:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6036:89:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16507,"nodeType":"ExpressionStatement","src":"6036:89:106"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16474,"src":"5891:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16478,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16407,"src":"5895:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5895:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5891:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16509,"initializationExpression":{"assignments":[16474],"declarations":[{"constant":false,"id":16474,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16509,"src":"5876:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16473,"name":"uint256","nodeType":"ElementaryTypeName","src":"5876:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16476,"initialValue":{"hexValue":"30","id":16475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5888:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5876:13:106"},"loopExpression":{"expression":{"id":16482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5920:3:106","subExpression":{"id":16481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16474,"src":"5922:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16483,"nodeType":"ExpressionStatement","src":"5920:3:106"},"nodeType":"ForStatement","src":"5871:265:106"}]},"functionSelector":"837f9bcb","id":16511,"implemented":true,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":16408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16402,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":16511,"src":"5170:33:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":16400,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3494,"src":"5170:20:106","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3494_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":16401,"nodeType":"ArrayTypeName","src":"5170:22:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3494_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"},{"constant":false,"id":16404,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16511,"src":"5213:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16403,"name":"uint256","nodeType":"ElementaryTypeName","src":"5213:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16407,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":16511,"src":"5236:43:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":16405,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":16196,"src":"5236:15:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":16406,"nodeType":"ArrayTypeName","src":"5236:17:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"5160:125:106"},"returnParameters":{"id":16409,"nodeType":"ParameterList","parameters":[],"src":"5303:0:106"},"scope":17474,"src":"5134:1008:106","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"VaultActions.PoolKind","id":16516,"members":[{"id":16512,"name":"WEIGHTED","nodeType":"EnumValue","src":"6164:8:106"},{"id":16513,"name":"LEGACY_STABLE","nodeType":"EnumValue","src":"6174:13:106"},{"id":16514,"name":"COMPOSABLE_STABLE","nodeType":"EnumValue","src":"6189:17:106"},{"id":16515,"name":"COMPOSABLE_STABLE_V2","nodeType":"EnumValue","src":"6208:20:106"}],"name":"PoolKind","nodeType":"EnumDefinition","src":"6148:82:106"},{"body":{"id":16610,"nodeType":"Block","src":"6478:1254:106","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16534,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"6496:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16535,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6506:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6506:10:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6496:20:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16538,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"6520:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16541,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6538:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}],"id":16540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6530:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16539,"name":"address","nodeType":"ElementaryTypeName","src":"6530:7:106","typeDescriptions":{}}},"id":16542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6530:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6520:23:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6496:47:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":16545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6545:18:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":16533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6488:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6488:76:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16547,"nodeType":"ExpressionStatement","src":"6488:76:106"},{"assignments":[16549],"declarations":[{"constant":false,"id":16549,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":16610,"src":"6885:10:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":16548,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6885:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":16556,"initialValue":{"arguments":[{"arguments":[{"id":16553,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"6932:6:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":16551,"name":"VaultHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5488,"src":"6905:12:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VaultHelpers_$5488_$","typeString":"type(library VaultHelpers)"}},"id":16552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toPoolAddress","nodeType":"MemberAccess","referencedDeclaration":5487,"src":"6905:26:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) pure returns (address)"}},"id":16554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6905:34:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16550,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6898:6:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":16555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6898:42:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6885:55:106"},{"assignments":[16558],"declarations":[{"constant":false,"id":16558,"mutability":"mutable","name":"maybeInitialRecipientBPT","nodeType":"VariableDeclaration","scope":16610,"src":"6950:32:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16557,"name":"uint256","nodeType":"ElementaryTypeName","src":"6950:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16568,"initialValue":{"condition":{"arguments":[{"id":16560,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16530,"src":"7005:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16559,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"6985:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6985:36:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7051:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6985:67:106","trueExpression":{"arguments":[{"id":16564,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16524,"src":"7038:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16562,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16549,"src":"7024:3:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"7024:13:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7024:24:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6950:102:106"},{"expression":{"id":16577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":16569,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16526,"src":"7063:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":16571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3640,"src":"7063:16:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16573,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"7122:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":16574,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16526,"src":"7128:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":16575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3640,"src":"7128:16:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16572,"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"7082:39:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$16516_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":16576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7082:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7063:82:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16578,"nodeType":"ExpressionStatement","src":"7063:82:106"},{"expression":{"arguments":[{"id":16584,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"7192:6:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16585,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"7200:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16586,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16524,"src":"7208:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16587,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16526,"src":"7219:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16579,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"7156:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7156:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinPool","nodeType":"MemberAccess","referencedDeclaration":3632,"src":"7156:19:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3643_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":16583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16528,"src":"7184:5:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"7156:35:106","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3643_memory_ptr_$returns$__$value","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":16588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7156:71:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16589,"nodeType":"ExpressionStatement","src":"7156:71:106"},{"condition":{"arguments":[{"id":16591,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16530,"src":"7262:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16590,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"7242:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7242:36:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16609,"nodeType":"IfStatement","src":"7238:488:106","trueBody":{"id":16608,"nodeType":"Block","src":"7280:446:106","statements":[{"assignments":[16594],"declarations":[{"constant":false,"id":16594,"mutability":"mutable","name":"finalRecipientBPT","nodeType":"VariableDeclaration","scope":16608,"src":"7558:25:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16593,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16599,"initialValue":{"arguments":[{"id":16597,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16524,"src":"7600:9:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16595,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16549,"src":"7586:3:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"7586:13:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7586:24:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7558:52:106"},{"expression":{"arguments":[{"id":16601,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16530,"src":"7650:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":16604,"name":"maybeInitialRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16558,"src":"7689:24:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16602,"name":"finalRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16594,"src":"7667:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7312,"src":"7667:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7667:47:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16600,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"7624:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":16606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7624:91:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16607,"nodeType":"ExpressionStatement","src":"7624:91:106"}]}}]},"functionSelector":"8fe4624f","id":16611,"implemented":true,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":16531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16518,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":16611,"src":"6263:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6263:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16520,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":16611,"src":"6287:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":16519,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":16516,"src":"6287:8:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":16522,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":16611,"src":"6310:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16521,"name":"address","nodeType":"ElementaryTypeName","src":"6310:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16524,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":16611,"src":"6334:17:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16523,"name":"address","nodeType":"ElementaryTypeName","src":"6334:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16526,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":16611,"src":"6361:37:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":16525,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3643,"src":"6361:22:106","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3643_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"},{"constant":false,"id":16528,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":16611,"src":"6408:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16527,"name":"uint256","nodeType":"ElementaryTypeName","src":"6408:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16530,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":16611,"src":"6431:23:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16529,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6253:207:106"},"returnParameters":{"id":16532,"nodeType":"ParameterList","parameters":[],"src":"6478:0:106"},"scope":17474,"src":"6236:1496:106","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16656,"nodeType":"Block","src":"8038:442:106","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":16624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16621,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"8052:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16622,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"8060:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":16623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"8060:17:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"8052:25:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":16633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16630,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"8187:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16631,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"8195:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":16632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LEGACY_STABLE","nodeType":"MemberAccess","src":"8195:22:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"8187:30:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":16637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16634,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"8233:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16635,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"8241:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":16636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPOSABLE_STABLE","nodeType":"MemberAccess","src":"8241:26:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"8233:34:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8187:80:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":16642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16639,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16614,"src":"8283:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16640,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"8291:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":16641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPOSABLE_STABLE_V2","nodeType":"MemberAccess","src":"8291:29:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"8283:37:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8187:133:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16653,"nodeType":"Block","src":"8420:54:106","statements":[{"expression":{"arguments":[{"hexValue":"554e48414e444c45445f504f4f4c5f4b494e44","id":16650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8441:21:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_b509e50d8880288988d5c5abfa96e71653e352aa44d7b3233ed3a4213fff79c2","typeString":"literal_string \"UNHANDLED_POOL_KIND\""},"value":"UNHANDLED_POOL_KIND"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b509e50d8880288988d5c5abfa96e71653e352aa44d7b3233ed3a4213fff79c2","typeString":"literal_string \"UNHANDLED_POOL_KIND\""}],"id":16649,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8434:6:106","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":16651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8434:29:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16652,"nodeType":"ExpressionStatement","src":"8434:29:106"}]},"id":16654,"nodeType":"IfStatement","src":"8170:304:106","trueBody":{"id":16648,"nodeType":"Block","src":"8331:83:106","statements":[{"expression":{"arguments":[{"id":16645,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"8394:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16644,"name":"_doStableJoinChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"8352:41:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":16646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8352:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16620,"id":16647,"nodeType":"Return","src":"8345:58:106"}]}},"id":16655,"nodeType":"IfStatement","src":"8048:426:106","trueBody":{"id":16629,"nodeType":"Block","src":"8079:85:106","statements":[{"expression":{"arguments":[{"id":16626,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16616,"src":"8144:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16625,"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16688,"src":"8100:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":16627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8100:53:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16620,"id":16628,"nodeType":"Return","src":"8093:60:106"}]}}]},"documentation":{"id":16612,"nodeType":"StructuredDocumentation","src":"7738:157:106","text":" @dev Compute the final userData for a join, depending on the PoolKind, performing replacements for chained\n references as necessary."},"id":16657,"implemented":true,"kind":"function","modifiers":[],"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":16617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16614,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":16657,"src":"7949:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":16613,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":16516,"src":"7949:8:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":16616,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":16657,"src":"7964:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16615,"name":"bytes","nodeType":"ElementaryTypeName","src":"7964:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7948:38:106"},"returnParameters":{"id":16620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16619,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16657,"src":"8020:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16618,"name":"bytes","nodeType":"ElementaryTypeName","src":"8020:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8019:14:106"},"scope":17474,"src":"7900:580:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16687,"nodeType":"Block","src":"8593:450:106","statements":[{"assignments":[16667],"declarations":[{"constant":false,"id":16667,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":16687,"src":"8603:34:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":16666,"name":"WeightedPoolUserData.JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":716,"src":"8603:29:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"id":16672,"initialValue":{"arguments":[{"id":16670,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16659,"src":"8670:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16668,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"8640:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":16669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinKind","nodeType":"MemberAccess","referencedDeclaration":735,"src":"8640:29:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_JoinKind_$716_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.JoinKind)"}},"id":16671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8640:39:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"VariableDeclarationStatement","src":"8603:76:106"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"},"id":16677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16673,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16667,"src":"8694:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":16674,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"8702:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":16675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":716,"src":"8702:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":16676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"8702:57:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},"src":"8694:65:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16685,"nodeType":"Block","src":"8854:183:106","statements":[{"expression":{"id":16683,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16659,"src":"9018:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16663,"id":16684,"nodeType":"Return","src":"9011:15:106"}]},"id":16686,"nodeType":"IfStatement","src":"8690:347:106","trueBody":{"id":16682,"nodeType":"Block","src":"8761:87:106","statements":[{"expression":{"arguments":[{"id":16679,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16659,"src":"8828:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16678,"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16722,"src":"8782:45:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":16680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8782:55:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16663,"id":16681,"nodeType":"Return","src":"8775:62:106"}]}}]},"id":16688,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":16660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16659,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":16688,"src":"8539:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16658,"name":"bytes","nodeType":"ElementaryTypeName","src":"8539:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8538:23:106"},"returnParameters":{"id":16663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16662,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16688,"src":"8579:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16661,"name":"bytes","nodeType":"ElementaryTypeName","src":"8579:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8578:14:106"},"scope":17474,"src":"8486:557:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16721,"nodeType":"Block","src":"9158:414:106","statements":[{"assignments":[16699,16701],"declarations":[{"constant":false,"id":16699,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":16721,"src":"9169:26:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16697,"name":"uint256","nodeType":"ElementaryTypeName","src":"9169:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16698,"nodeType":"ArrayTypeName","src":"9169:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16701,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":16721,"src":"9197:23:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16700,"name":"uint256","nodeType":"ElementaryTypeName","src":"9197:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16706,"initialValue":{"arguments":[{"id":16704,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16690,"src":"9268:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16702,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"9224:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":16703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactTokensInForBptOut","nodeType":"MemberAccess","referencedDeclaration":799,"src":"9224:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256[] memory,uint256)"}},"id":16705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9224:53:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9168:109:106"},{"expression":{"condition":{"arguments":[{"id":16708,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16699,"src":"9412:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":16707,"name":"_replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16838,"src":"9395:16:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (uint256[] memory) returns (bool)"}},"id":16709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9395:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":16718,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16690,"src":"9557:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9395:170:106","trueExpression":{"arguments":[{"expression":{"expression":{"id":16712,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"9452:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":16713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":716,"src":"9452:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$716_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":16714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"9452:57:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"}},{"id":16715,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16699,"src":"9511:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16716,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16701,"src":"9522:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_JoinKind_$716","typeString":"enum WeightedPoolUserData.JoinKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16710,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9441:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"9441:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9441:97:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16694,"id":16720,"nodeType":"Return","src":"9376:189:106"}]},"id":16722,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":16691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16690,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":16722,"src":"9104:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16689,"name":"bytes","nodeType":"ElementaryTypeName","src":"9104:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9103:23:106"},"returnParameters":{"id":16694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16693,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16722,"src":"9144:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16692,"name":"bytes","nodeType":"ElementaryTypeName","src":"9144:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9143:14:106"},"scope":17474,"src":"9049:523:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16752,"nodeType":"Block","src":"9683:980:106","statements":[{"assignments":[16732],"declarations":[{"constant":false,"id":16732,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":16752,"src":"10231:32:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"},"typeName":{"id":16731,"name":"StablePoolUserData.JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":388,"src":"10231:27:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"visibility":"internal"}],"id":16737,"initialValue":{"arguments":[{"id":16735,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16724,"src":"10294:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16733,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"10266:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":16734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinKind","nodeType":"MemberAccess","referencedDeclaration":407,"src":"10266:27:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_JoinKind_$388_$","typeString":"function (bytes memory) pure returns (enum StablePoolUserData.JoinKind)"}},"id":16736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10266:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"nodeType":"VariableDeclarationStatement","src":"10231:72:106"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"},"id":16742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16738,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16732,"src":"10318:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":16739,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"10326:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":16740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":388,"src":"10326:27:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},"id":16741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"10326:55:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},"src":"10318:63:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16750,"nodeType":"Block","src":"10474:183:106","statements":[{"expression":{"id":16748,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16724,"src":"10638:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16728,"id":16749,"nodeType":"Return","src":"10631:15:106"}]},"id":16751,"nodeType":"IfStatement","src":"10314:343:106","trueBody":{"id":16747,"nodeType":"Block","src":"10383:85:106","statements":[{"expression":{"arguments":[{"id":16744,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16724,"src":"10448:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16743,"name":"_doStableExactTokensInForBPTOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16787,"src":"10404:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":16745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10404:53:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16728,"id":16746,"nodeType":"Return","src":"10397:60:106"}]}}]},"id":16753,"implemented":true,"kind":"function","modifiers":[],"name":"_doStableJoinChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":16725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16724,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":16753,"src":"9629:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16723,"name":"bytes","nodeType":"ElementaryTypeName","src":"9629:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9628:23:106"},"returnParameters":{"id":16728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16727,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16753,"src":"9669:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16726,"name":"bytes","nodeType":"ElementaryTypeName","src":"9669:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9668:14:106"},"scope":17474,"src":"9578:1085:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16786,"nodeType":"Block","src":"10776:410:106","statements":[{"assignments":[16764,16766],"declarations":[{"constant":false,"id":16764,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":16786,"src":"10787:26:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16762,"name":"uint256","nodeType":"ElementaryTypeName","src":"10787:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16763,"nodeType":"ArrayTypeName","src":"10787:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16766,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":16786,"src":"10815:23:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16765,"name":"uint256","nodeType":"ElementaryTypeName","src":"10815:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16771,"initialValue":{"arguments":[{"id":16769,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"10884:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16767,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"10842:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":16768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactTokensInForBptOut","nodeType":"MemberAccess","referencedDeclaration":471,"src":"10842:41:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256[] memory,uint256)"}},"id":16770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10842:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10786:107:106"},{"expression":{"condition":{"arguments":[{"id":16773,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"11028:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":16772,"name":"_replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16838,"src":"11011:16:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (uint256[] memory) returns (bool)"}},"id":16774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11011:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":16783,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16755,"src":"11171:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11011:168:106","trueExpression":{"arguments":[{"expression":{"expression":{"id":16777,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"11068:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":16778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":388,"src":"11068:27:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$388_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},"id":16779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"11068:55:106","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"}},{"id":16780,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16764,"src":"11125:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16781,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16766,"src":"11136:15:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_JoinKind_$388","typeString":"enum StablePoolUserData.JoinKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16775,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11057:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"11057:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11057:95:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16759,"id":16785,"nodeType":"Return","src":"10992:187:106"}]},"id":16787,"implemented":true,"kind":"function","modifiers":[],"name":"_doStableExactTokensInForBPTOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":16756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16755,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":16787,"src":"10722:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16754,"name":"bytes","nodeType":"ElementaryTypeName","src":"10722:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10721:23:106"},"returnParameters":{"id":16759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16758,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16787,"src":"10762:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16757,"name":"bytes","nodeType":"ElementaryTypeName","src":"10762:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10761:14:106"},"scope":17474,"src":"10669:517:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":16837,"nodeType":"Block","src":"11342:359:106","statements":[{"assignments":[16796],"declarations":[{"constant":false,"id":16796,"mutability":"mutable","name":"madeReplacements","nodeType":"VariableDeclaration","scope":16837,"src":"11352:21:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16795,"name":"bool","nodeType":"ElementaryTypeName","src":"11352:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16798,"initialValue":{"hexValue":"66616c7365","id":16797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11376:5:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"11352:29:106"},{"body":{"id":16833,"nodeType":"Block","src":"11439:222:106","statements":[{"assignments":[16811],"declarations":[{"constant":false,"id":16811,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":16833,"src":"11453:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16810,"name":"uint256","nodeType":"ElementaryTypeName","src":"11453:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16815,"initialValue":{"baseExpression":{"id":16812,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16790,"src":"11470:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16814,"indexExpression":{"id":16813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"11480:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11470:12:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11453:29:106"},{"condition":{"arguments":[{"id":16817,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16811,"src":"11520:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16816,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"11500:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11500:27:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16832,"nodeType":"IfStatement","src":"11496:155:106","trueBody":{"id":16831,"nodeType":"Block","src":"11529:122:106","statements":[{"expression":{"id":16825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16819,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16790,"src":"11547:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16821,"indexExpression":{"id":16820,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"11557:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11547:12:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16823,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16811,"src":"11588:6:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16822,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"11562:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":16824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11562:33:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11547:48:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16826,"nodeType":"ExpressionStatement","src":"11547:48:106"},{"expression":{"id":16829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16827,"name":"madeReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16796,"src":"11613:16:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11632:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11613:23:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16830,"nodeType":"ExpressionStatement","src":"11613:23:106"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16803,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"11412:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16804,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16790,"src":"11416:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11416:16:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11412:20:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16834,"initializationExpression":{"assignments":[16800],"declarations":[{"constant":false,"id":16800,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16834,"src":"11397:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16799,"name":"uint256","nodeType":"ElementaryTypeName","src":"11397:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16802,"initialValue":{"hexValue":"30","id":16801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11409:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11397:13:106"},"loopExpression":{"expression":{"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11434:3:106","subExpression":{"id":16807,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16800,"src":"11436:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16809,"nodeType":"ExpressionStatement","src":"11434:3:106"},"nodeType":"ForStatement","src":"11392:269:106"},{"expression":{"id":16835,"name":"madeReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16796,"src":"11678:16:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":16794,"id":16836,"nodeType":"Return","src":"11671:23:106"}]},"id":16838,"implemented":true,"kind":"function","modifiers":[],"name":"_replacedAmounts","nodeType":"FunctionDefinition","parameters":{"id":16791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16790,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":16838,"src":"11291:26:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16788,"name":"uint256","nodeType":"ElementaryTypeName","src":"11291:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16789,"nodeType":"ArrayTypeName","src":"11291:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11290:28:106"},"returnParameters":{"id":16794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16793,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":16838,"src":"11336:4:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16792,"name":"bool","nodeType":"ElementaryTypeName","src":"11336:4:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11335:6:106"},"scope":17474,"src":"11265:436:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17081,"nodeType":"Block","src":"11954:2297:106","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16855,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16844,"src":"11972:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":16856,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11982:3:106","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11982:10:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"11972:20:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16859,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16844,"src":"11996:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16862,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12014:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$17474","typeString":"contract VaultActions"}],"id":16861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12006:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16860,"name":"address","nodeType":"ElementaryTypeName","src":"12006:7:106","typeDescriptions":{}}},"id":16863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12006:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11996:23:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11972:47:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":16866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12021:18:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":16854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11964:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11964:76:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16868,"nodeType":"ExpressionStatement","src":"11964:76:106"},{"assignments":[16872],"declarations":[{"constant":false,"id":16872,"mutability":"mutable","name":"trackedTokens","nodeType":"VariableDeclaration","scope":17081,"src":"12218:29:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":16870,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"12218:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16871,"nodeType":"ArrayTypeName","src":"12218:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":16879,"initialValue":{"arguments":[{"expression":{"id":16876,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"12263:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12263:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12250:12:106","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":16873,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"12254:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16874,"nodeType":"ArrayTypeName","src":"12254:8:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":16878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12250:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12218:69:106"},{"assignments":[16884],"declarations":[{"constant":false,"id":16884,"mutability":"mutable","name":"initialRecipientBalances","nodeType":"VariableDeclaration","scope":17081,"src":"12386:41:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16882,"name":"uint256","nodeType":"ElementaryTypeName","src":"12386:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16883,"nodeType":"ArrayTypeName","src":"12386:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16891,"initialValue":{"arguments":[{"expression":{"id":16888,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"12444:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12444:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12430:13:106","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16885,"name":"uint256","nodeType":"ElementaryTypeName","src":"12434:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16886,"nodeType":"ArrayTypeName","src":"12434:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12430:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"12386:82:106"},{"body":{"id":16953,"nodeType":"Block","src":"12532:432:106","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":16905,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"12574:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16907,"indexExpression":{"id":16906,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12591:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12574:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"12574:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16904,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"12554:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":16909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12554:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":16910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12600:27:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":16903,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12546:7:106","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12546:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16912,"nodeType":"ExpressionStatement","src":"12546:82:106"},{"assignments":[16914],"declarations":[{"constant":false,"id":16914,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":16953,"src":"12643:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":16913,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"12643:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"}],"id":16922,"initialValue":{"baseExpression":{"expression":{"id":16915,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"12658:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":16916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3658,"src":"12658:14:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":16921,"indexExpression":{"expression":{"baseExpression":{"id":16917,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"12673:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16919,"indexExpression":{"id":16918,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12690:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12673:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":16920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":16193,"src":"12673:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12658:41:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"12643:56:106"},{"condition":{"expression":{"id":16923,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"12717:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":16924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3665,"src":"12717:25:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16951,"nodeType":"Block","src":"12818:136:106","statements":[{"expression":{"id":16949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16934,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16884,"src":"12836:24:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16936,"indexExpression":{"id":16935,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12861:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12836:27:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":16938,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16914,"src":"12873:5:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":16937,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"12866:6:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":16939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12866:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":16946,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"12929:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":16943,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16914,"src":"12912:5:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":16942,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"12902:9:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_contract$_IERC20_$1722_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":16944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12902:16:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"12902:26:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":16947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12902:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12866:73:106","trueExpression":{"expression":{"id":16940,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"12882:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":16941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"12882:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12836:103:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16950,"nodeType":"ExpressionStatement","src":"12836:103:106"}]},"id":16952,"nodeType":"IfStatement","src":"12713:241:106","trueBody":{"id":16933,"nodeType":"Block","src":"12744:68:106","statements":[{"expression":{"id":16931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16925,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16872,"src":"12762:13:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16927,"indexExpression":{"id":16926,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12776:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12762:16:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16929,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16914,"src":"12791:5:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":16928,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"12781:9:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_contract$_IERC20_$1722_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":16930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12781:16:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"12762:35:106","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":16932,"nodeType":"ExpressionStatement","src":"12762:35:106"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16896,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12498:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16897,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"12502:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12502:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12498:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16954,"initializationExpression":{"assignments":[16893],"declarations":[{"constant":false,"id":16893,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":16954,"src":"12483:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16892,"name":"uint256","nodeType":"ElementaryTypeName","src":"12483:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16895,"initialValue":{"hexValue":"30","id":16894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12495:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12483:13:106"},"loopExpression":{"expression":{"id":16901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12527:3:106","subExpression":{"id":16900,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16893,"src":"12527:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16902,"nodeType":"ExpressionStatement","src":"12527:3:106"},"nodeType":"ForStatement","src":"12478:486:106"},{"condition":{"expression":{"id":16955,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"12977:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":16956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3665,"src":"12977:25:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16967,"nodeType":"IfStatement","src":"12973:138:106","trueBody":{"id":16966,"nodeType":"Block","src":"13004:107:106","statements":[{"expression":{"id":16964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16957,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16884,"src":"13018:24:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16961,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"13075:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16962,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16872,"src":"13086:13:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16958,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"13045:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13045:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3476,"src":"13045:29:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":16963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13045:55:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13018:82:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16965,"nodeType":"ExpressionStatement","src":"13018:82:106"}]}},{"expression":{"id":16976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":16968,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"13146:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":16970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3663,"src":"13146:16:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16972,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16842,"src":"13205:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":16973,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"13211:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":16974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3663,"src":"13211:16:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16971,"name":"_doExitPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17139,"src":"13165:39:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$16516_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":16975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13165:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"13146:82:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16977,"nodeType":"ExpressionStatement","src":"13146:82:106"},{"expression":{"arguments":[{"id":16981,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16840,"src":"13258:6:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16982,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16844,"src":"13266:6:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16983,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"13274:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":16984,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"13285:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16978,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"13238:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":16979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13238:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":16980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"13238:19:106","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3666_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":16985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13238:55:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16986,"nodeType":"ExpressionStatement","src":"13238:55:106"},{"assignments":[16991],"declarations":[{"constant":false,"id":16991,"mutability":"mutable","name":"finalRecipientTokenBalances","nodeType":"VariableDeclaration","scope":17081,"src":"13363:44:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16989,"name":"uint256","nodeType":"ElementaryTypeName","src":"13363:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16990,"nodeType":"ArrayTypeName","src":"13363:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":16998,"initialValue":{"arguments":[{"expression":{"id":16995,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"13424:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":16996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13424:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13410:13:106","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":16992,"name":"uint256","nodeType":"ElementaryTypeName","src":"13414:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16993,"nodeType":"ArrayTypeName","src":"13414:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":16997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13410:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13363:85:106"},{"condition":{"expression":{"id":16999,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"13462:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":17000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3665,"src":"13462:25:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17051,"nodeType":"Block","src":"13605:331:106","statements":[{"body":{"id":17049,"nodeType":"Block","src":"13673:253:106","statements":[{"assignments":[17023],"declarations":[{"constant":false,"id":17023,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":17049,"src":"13691:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"},"typeName":{"id":17022,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":3151,"src":"13691:6:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"visibility":"internal"}],"id":17031,"initialValue":{"baseExpression":{"expression":{"id":17024,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16848,"src":"13706:7:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":17025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3658,"src":"13706:14:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":17030,"indexExpression":{"expression":{"baseExpression":{"id":17026,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"13721:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":17028,"indexExpression":{"id":17027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17012,"src":"13738:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13721:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":17029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":16193,"src":"13721:25:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13706:41:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"13691:56:106"},{"expression":{"id":17047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17032,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16991,"src":"13765:27:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17034,"indexExpression":{"id":17033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17012,"src":"13793:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13765:30:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":17036,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17023,"src":"13805:5:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":17035,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"13798:6:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":17037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13798:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":17044,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"13901:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":17041,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17023,"src":"13884:5:106","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$3151","typeString":"contract IAsset"}],"id":17040,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"13874:9:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$3151_$returns$_t_contract$_IERC20_$1722_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":17042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13874:16:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"13874:26:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13874:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13798:113:106","trueExpression":{"expression":{"id":17038,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"13834:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":17039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"13834:17:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13765:146:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17048,"nodeType":"ExpressionStatement","src":"13765:146:106"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17012,"src":"13639:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17016,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"13643:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":17017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13643:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13639:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17050,"initializationExpression":{"assignments":[17012],"declarations":[{"constant":false,"id":17012,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17050,"src":"13624:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17011,"name":"uint256","nodeType":"ElementaryTypeName","src":"13624:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17014,"initialValue":{"hexValue":"30","id":17013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13636:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13624:13:106"},"loopExpression":{"expression":{"id":17020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13668:3:106","subExpression":{"id":17019,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17012,"src":"13668:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17021,"nodeType":"ExpressionStatement","src":"13668:3:106"},"nodeType":"ForStatement","src":"13619:307:106"}]},"id":17052,"nodeType":"IfStatement","src":"13458:478:106","trueBody":{"id":17010,"nodeType":"Block","src":"13489:110:106","statements":[{"expression":{"id":17008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17001,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16991,"src":"13503:27:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17005,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16846,"src":"13563:9:106","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":17006,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16872,"src":"13574:13:106","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17002,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"13533:8:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":17003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13533:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":17004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3476,"src":"13533:29:106","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":17007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13533:55:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13503:85:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17009,"nodeType":"ExpressionStatement","src":"13503:85:106"}]}},{"body":{"id":17079,"nodeType":"Block","src":"14059:186:106","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":17065,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"14116:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":17067,"indexExpression":{"id":17066,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"14133:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14116:19:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":17068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":16195,"src":"14116:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":17073,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16884,"src":"14192:24:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17075,"indexExpression":{"id":17074,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"14217:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14192:27:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":17069,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16991,"src":"14157:27:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17071,"indexExpression":{"id":17070,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"14185:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14157:30:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7312,"src":"14157:34:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":17076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14157:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17064,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"14073:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":17077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14073:161:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17078,"nodeType":"ExpressionStatement","src":"14073:161:106"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17057,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"14025:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17058,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16851,"src":"14029:16:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":17059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14029:23:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14025:27:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17080,"initializationExpression":{"assignments":[17054],"declarations":[{"constant":false,"id":17054,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":17080,"src":"14010:9:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17053,"name":"uint256","nodeType":"ElementaryTypeName","src":"14010:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17056,"initialValue":{"hexValue":"30","id":17055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14022:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14010:13:106"},"loopExpression":{"expression":{"id":17062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14054:3:106","subExpression":{"id":17061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17054,"src":"14054:1:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17063,"nodeType":"ExpressionStatement","src":"14054:3:106"},"nodeType":"ForStatement","src":"14005:240:106"}]},"functionSelector":"d80952d5","id":17082,"implemented":true,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":16852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16840,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":17082,"src":"11734:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11734:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16842,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":17082,"src":"11758:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":16841,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":16516,"src":"11758:8:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":16844,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":17082,"src":"11781:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16843,"name":"address","nodeType":"ElementaryTypeName","src":"11781:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16846,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17082,"src":"11805:25:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":16845,"name":"address","nodeType":"ElementaryTypeName","src":"11805:15:106","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":16848,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":17082,"src":"11840:37:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":16847,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"11840:22:106","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"},{"constant":false,"id":16851,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":17082,"src":"11887:43:106","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":16849,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":16196,"src":"11887:15:106","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$16196_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":16850,"nodeType":"ArrayTypeName","src":"11887:17:106","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$16196_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"11724:212:106"},"returnParameters":{"id":16853,"nodeType":"ParameterList","parameters":[],"src":"11954:0:106"},"scope":17474,"src":"11707:2544:106","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":17138,"nodeType":"Block","src":"14558:662:106","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":17095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17092,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17085,"src":"14572:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17093,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"14580:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":17094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"14580:17:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"14572:25:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17136,"nodeType":"Block","src":"14690:524:106","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":17104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17101,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17085,"src":"14708:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17102,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"14716:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":17103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LEGACY_STABLE","nodeType":"MemberAccess","src":"14716:22:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"14708:30:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":17113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17110,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17085,"src":"14847:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17111,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"14855:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":17112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPOSABLE_STABLE","nodeType":"MemberAccess","src":"14855:26:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"14847:34:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"id":17122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17119,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17085,"src":"14994:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":17120,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"15002:8:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$16516_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":17121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"COMPOSABLE_STABLE_V2","nodeType":"MemberAccess","src":"15002:29:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"src":"14994:37:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17132,"nodeType":"Block","src":"15142:62:106","statements":[{"expression":{"arguments":[{"hexValue":"554e48414e444c45445f504f4f4c5f4b494e44","id":17129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15167:21:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_b509e50d8880288988d5c5abfa96e71653e352aa44d7b3233ed3a4213fff79c2","typeString":"literal_string \"UNHANDLED_POOL_KIND\""},"value":"UNHANDLED_POOL_KIND"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b509e50d8880288988d5c5abfa96e71653e352aa44d7b3233ed3a4213fff79c2","typeString":"literal_string \"UNHANDLED_POOL_KIND\""}],"id":17128,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"15160:6:106","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":17130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15160:29:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17131,"nodeType":"ExpressionStatement","src":"15160:29:106"}]},"id":17133,"nodeType":"IfStatement","src":"14990:214:106","trueBody":{"id":17127,"nodeType":"Block","src":"15033:103:106","statements":[{"expression":{"arguments":[{"id":17124,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17087,"src":"15112:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17123,"name":"_doComposableStableV2ExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17396,"src":"15058:53:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15058:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17091,"id":17126,"nodeType":"Return","src":"15051:70:106"}]}},"id":17134,"nodeType":"IfStatement","src":"14843:361:106","trueBody":{"id":17118,"nodeType":"Block","src":"14883:101:106","statements":[{"expression":{"arguments":[{"id":17115,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17087,"src":"14960:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17114,"name":"_doComposableStableExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17345,"src":"14908:51:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14908:61:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17091,"id":17117,"nodeType":"Return","src":"14901:68:106"}]}},"id":17135,"nodeType":"IfStatement","src":"14704:500:106","trueBody":{"id":17109,"nodeType":"Block","src":"14740:97:106","statements":[{"expression":{"arguments":[{"id":17106,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17087,"src":"14813:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17105,"name":"_doLegacyStableExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17309,"src":"14765:47:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14765:57:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17091,"id":17108,"nodeType":"Return","src":"14758:64:106"}]}}]},"id":17137,"nodeType":"IfStatement","src":"14568:646:106","trueBody":{"id":17100,"nodeType":"Block","src":"14599:85:106","statements":[{"expression":{"arguments":[{"id":17097,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17087,"src":"14664:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17096,"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17181,"src":"14620:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14620:53:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17091,"id":17099,"nodeType":"Return","src":"14613:60:106"}]}}]},"documentation":{"id":17083,"nodeType":"StructuredDocumentation","src":"14257:158:106","text":" @dev Compute the final userData for an exit, depending on the PoolKind, performing replacements for chained\n references as necessary."},"id":17139,"implemented":true,"kind":"function","modifiers":[],"name":"_doExitPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":17088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17085,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":17139,"src":"14469:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":17084,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":16516,"src":"14469:8:106","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$16516","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":17087,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17139,"src":"14484:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17086,"name":"bytes","nodeType":"ElementaryTypeName","src":"14484:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14468:38:106"},"returnParameters":{"id":17091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17090,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17139,"src":"14540:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17089,"name":"bytes","nodeType":"ElementaryTypeName","src":"14540:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14539:14:106"},"scope":17474,"src":"14420:800:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17180,"nodeType":"Block","src":"15333:621:106","statements":[{"assignments":[17149],"declarations":[{"constant":false,"id":17149,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":17180,"src":"15343:34:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":17148,"name":"WeightedPoolUserData.ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":720,"src":"15343:29:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"id":17154,"initialValue":{"arguments":[{"id":17152,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17141,"src":"15410:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17150,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"15380:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":750,"src":"15380:29:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$720_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.ExitKind)"}},"id":17153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15380:39:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"VariableDeclarationStatement","src":"15343:76:106"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},"id":17159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17155,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17149,"src":"15434:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":17156,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"15442:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":720,"src":"15442:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":17158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"15442:60:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"15434:68:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},"id":17169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17165,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17149,"src":"15603:4:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":17166,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"15611:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":720,"src":"15611:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":17168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"15611:57:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"15603:65:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17177,"nodeType":"Block","src":"15763:185:106","statements":[{"expression":{"id":17175,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17141,"src":"15929:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17145,"id":17176,"nodeType":"Return","src":"15922:15:106"}]},"id":17178,"nodeType":"IfStatement","src":"15599:349:106","trueBody":{"id":17174,"nodeType":"Block","src":"15670:87:106","statements":[{"expression":{"arguments":[{"id":17171,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17141,"src":"15737:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17170,"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17258,"src":"15691:45:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15691:55:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17145,"id":17173,"nodeType":"Return","src":"15684:62:106"}]}},"id":17179,"nodeType":"IfStatement","src":"15430:518:106","trueBody":{"id":17164,"nodeType":"Block","src":"15504:89:106","statements":[{"expression":{"arguments":[{"id":17161,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17141,"src":"15573:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17160,"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17221,"src":"15525:47:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":17162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15525:57:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17145,"id":17163,"nodeType":"Return","src":"15518:64:106"}]}}]},"id":17181,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":17142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17141,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17181,"src":"15279:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17140,"name":"bytes","nodeType":"ElementaryTypeName","src":"15279:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15278:23:106"},"returnParameters":{"id":17145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17144,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17181,"src":"15319:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17143,"name":"bytes","nodeType":"ElementaryTypeName","src":"15319:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15318:14:106"},"scope":17474,"src":"15226:728:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17220,"nodeType":"Block","src":"16071:494:106","statements":[{"assignments":[17189,17191],"declarations":[{"constant":false,"id":17189,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":17220,"src":"16082:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17188,"name":"uint256","nodeType":"ElementaryTypeName","src":"16082:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17191,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":17220,"src":"16103:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17190,"name":"uint256","nodeType":"ElementaryTypeName","src":"16103:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17196,"initialValue":{"arguments":[{"id":17194,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17183,"src":"16168:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17192,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"16125:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokenOut","nodeType":"MemberAccess","referencedDeclaration":869,"src":"16125:42:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256,uint256)"}},"id":17195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16125:52:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16081:96:106"},{"condition":{"arguments":[{"id":17198,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"16212:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17197,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"16192:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":17199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16192:32:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17218,"nodeType":"Block","src":"16427:132:106","statements":[{"expression":{"id":17216,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17183,"src":"16540:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17187,"id":17217,"nodeType":"Return","src":"16533:15:106"}]},"id":17219,"nodeType":"IfStatement","src":"16188:371:106","trueBody":{"id":17215,"nodeType":"Block","src":"16226:195:106","statements":[{"expression":{"id":17204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17200,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"16240:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17202,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"16280:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17201,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"16254:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":17203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16254:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16240:52:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17205,"nodeType":"ExpressionStatement","src":"16240:52:106"},{"expression":{"arguments":[{"expression":{"expression":{"id":17208,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"16324:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":720,"src":"16324:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":17210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"16324:60:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":17211,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17189,"src":"16386:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17212,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17191,"src":"16399:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17206,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16313:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"16313:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16313:97:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17187,"id":17214,"nodeType":"Return","src":"16306:104:106"}]}}]},"id":17221,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":17184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17183,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17221,"src":"16017:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17182,"name":"bytes","nodeType":"ElementaryTypeName","src":"16017:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16016:23:106"},"returnParameters":{"id":17187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17186,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17221,"src":"16057:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17185,"name":"bytes","nodeType":"ElementaryTypeName","src":"16057:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16056:14:106"},"scope":17474,"src":"15960:605:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17257,"nodeType":"Block","src":"16680:458:106","statements":[{"assignments":[17229],"declarations":[{"constant":false,"id":17229,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":17257,"src":"16690:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17228,"name":"uint256","nodeType":"ElementaryTypeName","src":"16690:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17234,"initialValue":{"arguments":[{"id":17232,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17223,"src":"16756:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17230,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"16712:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokensOut","nodeType":"MemberAccess","referencedDeclaration":889,"src":"16712:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":17233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16712:53:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16690:75:106"},{"condition":{"arguments":[{"id":17236,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17229,"src":"16800:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17235,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"16780:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":17237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16780:32:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17255,"nodeType":"Block","src":"17000:132:106","statements":[{"expression":{"id":17253,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17223,"src":"17113:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17227,"id":17254,"nodeType":"Return","src":"17106:15:106"}]},"id":17256,"nodeType":"IfStatement","src":"16776:356:106","trueBody":{"id":17252,"nodeType":"Block","src":"16814:180:106","statements":[{"expression":{"id":17242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17238,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17229,"src":"16828:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17240,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17229,"src":"16868:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17239,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"16842:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":17241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16842:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16828:52:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17243,"nodeType":"ExpressionStatement","src":"16828:52:106"},{"expression":{"arguments":[{"expression":{"expression":{"id":17246,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"16912:20:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":720,"src":"16912:29:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":17248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"16912:57:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":17249,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17229,"src":"16971:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17244,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16901:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"16901:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16901:82:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17227,"id":17251,"nodeType":"Return","src":"16894:89:106"}]}}]},"id":17258,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":17224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17223,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17258,"src":"16626:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17222,"name":"bytes","nodeType":"ElementaryTypeName","src":"16626:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16625:23:106"},"returnParameters":{"id":17227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17226,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17258,"src":"16666:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17225,"name":"bytes","nodeType":"ElementaryTypeName","src":"16666:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16665:14:106"},"scope":17474,"src":"16571:567:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17308,"nodeType":"Block","src":"18102:652:106","statements":[{"assignments":[17266],"declarations":[{"constant":false,"id":17266,"mutability":"mutable","name":"exitKind","nodeType":"VariableDeclaration","scope":17308,"src":"18112:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17265,"name":"uint8","nodeType":"ElementaryTypeName","src":"18112:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":17274,"initialValue":{"arguments":[{"arguments":[{"id":17271,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17260,"src":"18163:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17269,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"18135:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":422,"src":"18135:27:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$392_$","typeString":"function (bytes memory) pure returns (enum StablePoolUserData.ExitKind)"}},"id":17272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18135:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}],"id":17268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18129:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17267,"name":"uint8","nodeType":"ElementaryTypeName","src":"18129:5:106","typeDescriptions":{}}},"id":17273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18129:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18112:61:106"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17275,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"18188:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":17278,"name":"LegacyStablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17483,"src":"18206:24:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LegacyStablePoolUserData_$17483_$","typeString":"type(library LegacyStablePoolUserData)"}},"id":17279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":17482,"src":"18206:33:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$17482_$","typeString":"type(enum LegacyStablePoolUserData.ExitKind)"}},"id":17280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"18206:64:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$17482","typeString":"enum LegacyStablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$17482","typeString":"enum LegacyStablePoolUserData.ExitKind"}],"id":17277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18200:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17276,"name":"uint8","nodeType":"ElementaryTypeName","src":"18200:5:106","typeDescriptions":{}}},"id":17281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18200:71:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18188:83:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17289,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"18380:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":17292,"name":"LegacyStablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17483,"src":"18398:24:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LegacyStablePoolUserData_$17483_$","typeString":"type(library LegacyStablePoolUserData)"}},"id":17293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":17482,"src":"18398:33:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$17482_$","typeString":"type(enum LegacyStablePoolUserData.ExitKind)"}},"id":17294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"18398:61:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$17482","typeString":"enum LegacyStablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$17482","typeString":"enum LegacyStablePoolUserData.ExitKind"}],"id":17291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18392:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17290,"name":"uint8","nodeType":"ElementaryTypeName","src":"18392:5:106","typeDescriptions":{}}},"id":17295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18392:68:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18380:80:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17305,"nodeType":"Block","src":"18563:185:106","statements":[{"expression":{"id":17303,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17260,"src":"18729:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17264,"id":17304,"nodeType":"Return","src":"18722:15:106"}]},"id":17306,"nodeType":"IfStatement","src":"18376:372:106","trueBody":{"id":17302,"nodeType":"Block","src":"18462:95:106","statements":[{"expression":{"arguments":[{"id":17298,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17260,"src":"18527:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17299,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"18537:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17297,"name":"_doStableExactBptInForTokensOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17473,"src":"18483:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint8) returns (bytes memory)"}},"id":17300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18483:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17264,"id":17301,"nodeType":"Return","src":"18476:70:106"}]}},"id":17307,"nodeType":"IfStatement","src":"18184:564:106","trueBody":{"id":17288,"nodeType":"Block","src":"18273:97:106","statements":[{"expression":{"arguments":[{"id":17284,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17260,"src":"18340:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17285,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"18350:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17283,"name":"_doStableExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17436,"src":"18294:45:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint8) returns (bytes memory)"}},"id":17286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18294:65:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17264,"id":17287,"nodeType":"Return","src":"18287:72:106"}]}}]},"id":17309,"implemented":true,"kind":"function","modifiers":[],"name":"_doLegacyStableExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":17261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17260,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17309,"src":"18048:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17259,"name":"bytes","nodeType":"ElementaryTypeName","src":"18048:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18047:23:106"},"returnParameters":{"id":17264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17309,"src":"18088:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17262,"name":"bytes","nodeType":"ElementaryTypeName","src":"18088:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18087:14:106"},"scope":17474,"src":"17991:763:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17344,"nodeType":"Block","src":"18931:469:106","statements":[{"assignments":[17317],"declarations":[{"constant":false,"id":17317,"mutability":"mutable","name":"exitKind","nodeType":"VariableDeclaration","scope":17344,"src":"18941:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17316,"name":"uint8","nodeType":"ElementaryTypeName","src":"18941:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":17325,"initialValue":{"arguments":[{"arguments":[{"id":17322,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17311,"src":"18992:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17320,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"18964:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":422,"src":"18964:27:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$392_$","typeString":"function (bytes memory) pure returns (enum StablePoolUserData.ExitKind)"}},"id":17323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18964:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}],"id":17319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18958:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17318,"name":"uint8","nodeType":"ElementaryTypeName","src":"18958:5:106","typeDescriptions":{}}},"id":17324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18958:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18941:61:106"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17326,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17317,"src":"19017:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":17329,"name":"ComposableStablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17491,"src":"19035:28:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ComposableStablePoolUserData_$17491_$","typeString":"type(library ComposableStablePoolUserData)"}},"id":17330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":17490,"src":"19035:37:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$17490_$","typeString":"type(enum ComposableStablePoolUserData.ExitKind)"}},"id":17331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"19035:68:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$17490","typeString":"enum ComposableStablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$17490","typeString":"enum ComposableStablePoolUserData.ExitKind"}],"id":17328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19029:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17327,"name":"uint8","nodeType":"ElementaryTypeName","src":"19029:5:106","typeDescriptions":{}}},"id":17332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19029:75:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19017:87:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17342,"nodeType":"Block","src":"19209:185:106","statements":[{"expression":{"id":17340,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17311,"src":"19375:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17315,"id":17341,"nodeType":"Return","src":"19368:15:106"}]},"id":17343,"nodeType":"IfStatement","src":"19013:381:106","trueBody":{"id":17339,"nodeType":"Block","src":"19106:97:106","statements":[{"expression":{"arguments":[{"id":17335,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17311,"src":"19173:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17336,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17317,"src":"19183:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17334,"name":"_doStableExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17436,"src":"19127:45:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint8) returns (bytes memory)"}},"id":17337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19127:65:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17315,"id":17338,"nodeType":"Return","src":"19120:72:106"}]}}]},"id":17345,"implemented":true,"kind":"function","modifiers":[],"name":"_doComposableStableExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":17312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17311,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17345,"src":"18877:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17310,"name":"bytes","nodeType":"ElementaryTypeName","src":"18877:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18876:23:106"},"returnParameters":{"id":17315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17345,"src":"18917:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17313,"name":"bytes","nodeType":"ElementaryTypeName","src":"18917:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18916:14:106"},"scope":17474,"src":"18816:584:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17395,"nodeType":"Block","src":"19585:644:106","statements":[{"assignments":[17353],"declarations":[{"constant":false,"id":17353,"mutability":"mutable","name":"exitKind","nodeType":"VariableDeclaration","scope":17395,"src":"19595:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17352,"name":"uint8","nodeType":"ElementaryTypeName","src":"19595:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":17361,"initialValue":{"arguments":[{"arguments":[{"id":17358,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17347,"src":"19646:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17356,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"19618:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":422,"src":"19618:27:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$392_$","typeString":"function (bytes memory) pure returns (enum StablePoolUserData.ExitKind)"}},"id":17359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19618:37:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}],"id":17355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19612:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17354,"name":"uint8","nodeType":"ElementaryTypeName","src":"19612:5:106","typeDescriptions":{}}},"id":17360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19612:44:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"19595:61:106"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17362,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"19671:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":17365,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"19689:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":392,"src":"19689:27:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},"id":17367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"19689:58:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}],"id":17364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19683:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17363,"name":"uint8","nodeType":"ElementaryTypeName","src":"19683:5:106","typeDescriptions":{}}},"id":17368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19683:65:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19671:77:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17376,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"19857:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":17379,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"19875:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":392,"src":"19875:27:106","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$392_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},"id":17381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ALL_TOKENS_OUT","nodeType":"MemberAccess","src":"19875:59:106","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$392","typeString":"enum StablePoolUserData.ExitKind"}],"id":17378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19869:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":17377,"name":"uint8","nodeType":"ElementaryTypeName","src":"19869:5:106","typeDescriptions":{}}},"id":17382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19869:66:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19857:78:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17392,"nodeType":"Block","src":"20038:185:106","statements":[{"expression":{"id":17390,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17347,"src":"20204:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17351,"id":17391,"nodeType":"Return","src":"20197:15:106"}]},"id":17393,"nodeType":"IfStatement","src":"19853:370:106","trueBody":{"id":17389,"nodeType":"Block","src":"19937:95:106","statements":[{"expression":{"arguments":[{"id":17385,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17347,"src":"20002:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17386,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"20012:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17384,"name":"_doStableExactBptInForTokensOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17473,"src":"19958:43:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint8) returns (bytes memory)"}},"id":17387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19958:63:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17351,"id":17388,"nodeType":"Return","src":"19951:70:106"}]}},"id":17394,"nodeType":"IfStatement","src":"19667:556:106","trueBody":{"id":17375,"nodeType":"Block","src":"19750:97:106","statements":[{"expression":{"arguments":[{"id":17371,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17347,"src":"19817:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17372,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17353,"src":"19827:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17370,"name":"_doStableExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17436,"src":"19771:45:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint8) returns (bytes memory)"}},"id":17373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19771:65:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17351,"id":17374,"nodeType":"Return","src":"19764:72:106"}]}}]},"id":17396,"implemented":true,"kind":"function","modifiers":[],"name":"_doComposableStableV2ExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":17348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17347,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17396,"src":"19511:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17346,"name":"bytes","nodeType":"ElementaryTypeName","src":"19511:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19510:23:106"},"returnParameters":{"id":17351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17350,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17396,"src":"19567:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17349,"name":"bytes","nodeType":"ElementaryTypeName","src":"19567:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19566:14:106"},"scope":17474,"src":"19448:781:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17435,"nodeType":"Block","src":"20781:440:106","statements":[{"assignments":[17406,17408],"declarations":[{"constant":false,"id":17406,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":17435,"src":"20792:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17405,"name":"uint256","nodeType":"ElementaryTypeName","src":"20792:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17408,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":17435,"src":"20813:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17407,"name":"uint256","nodeType":"ElementaryTypeName","src":"20813:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17413,"initialValue":{"arguments":[{"id":17411,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17398,"src":"20876:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17409,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"20835:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokenOut","nodeType":"MemberAccess","referencedDeclaration":541,"src":"20835:40:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256,uint256)"}},"id":17412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20835:50:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"20791:94:106"},{"condition":{"arguments":[{"id":17415,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17406,"src":"20920:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17414,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"20900:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":17416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20900:32:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17433,"nodeType":"Block","src":"21083:132:106","statements":[{"expression":{"id":17431,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17398,"src":"21196:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17404,"id":17432,"nodeType":"Return","src":"21189:15:106"}]},"id":17434,"nodeType":"IfStatement","src":"20896:319:106","trueBody":{"id":17430,"nodeType":"Block","src":"20934:143:106","statements":[{"expression":{"id":17421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17417,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17406,"src":"20948:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17419,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17406,"src":"20988:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17418,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"20962:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":17420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20962:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20948:52:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17422,"nodeType":"ExpressionStatement","src":"20948:52:106"},{"expression":{"arguments":[{"id":17425,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17400,"src":"21032:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17426,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17406,"src":"21042:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17427,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17408,"src":"21055:10:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17423,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21021:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"21021:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21021:45:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17404,"id":17429,"nodeType":"Return","src":"21014:52:106"}]}}]},"id":17436,"implemented":true,"kind":"function","modifiers":[],"name":"_doStableExactBptInForOneTokenOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":17401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17398,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17436,"src":"20691:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17397,"name":"bytes","nodeType":"ElementaryTypeName","src":"20691:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17400,"mutability":"mutable","name":"exitKind","nodeType":"VariableDeclaration","scope":17436,"src":"20714:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17399,"name":"uint8","nodeType":"ElementaryTypeName","src":"20714:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"20690:39:106"},"returnParameters":{"id":17404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17403,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17436,"src":"20763:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17402,"name":"bytes","nodeType":"ElementaryTypeName","src":"20763:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20762:14:106"},"scope":17474,"src":"20636:585:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":17472,"nodeType":"Block","src":"21370:407:106","statements":[{"assignments":[17446],"declarations":[{"constant":false,"id":17446,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":17472,"src":"21380:19:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17445,"name":"uint256","nodeType":"ElementaryTypeName","src":"21380:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17451,"initialValue":{"arguments":[{"id":17449,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17438,"src":"21444:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17447,"name":"StablePoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"21402:18:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StablePoolUserData_$589_$","typeString":"type(library StablePoolUserData)"}},"id":17448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokensOut","nodeType":"MemberAccess","referencedDeclaration":561,"src":"21402:41:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":17450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21402:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21380:73:106"},{"condition":{"arguments":[{"id":17453,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17446,"src":"21488:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17452,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15348,"src":"21468:19:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":17454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21468:32:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17470,"nodeType":"Block","src":"21639:132:106","statements":[{"expression":{"id":17468,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17438,"src":"21752:8:106","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17444,"id":17469,"nodeType":"Return","src":"21745:15:106"}]},"id":17471,"nodeType":"IfStatement","src":"21464:307:106","trueBody":{"id":17467,"nodeType":"Block","src":"21502:131:106","statements":[{"expression":{"id":17459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17455,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17446,"src":"21516:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17457,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17446,"src":"21556:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17456,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15362,"src":"21530:25:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":17458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21530:38:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21516:52:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17460,"nodeType":"ExpressionStatement","src":"21516:52:106"},{"expression":{"arguments":[{"id":17463,"name":"exitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17440,"src":"21600:8:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17464,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17446,"src":"21610:11:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17461,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21589:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"21589:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21589:33:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":17444,"id":17466,"nodeType":"Return","src":"21582:40:106"}]}}]},"id":17473,"implemented":true,"kind":"function","modifiers":[],"name":"_doStableExactBptInForTokensOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":17441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17438,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17473,"src":"21280:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17437,"name":"bytes","nodeType":"ElementaryTypeName","src":"21280:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17440,"mutability":"mutable","name":"exitKind","nodeType":"VariableDeclaration","scope":17473,"src":"21303:14:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17439,"name":"uint8","nodeType":"ElementaryTypeName","src":"21303:5:106","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"21279:39:106"},"returnParameters":{"id":17444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17443,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17473,"src":"21352:12:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17442,"name":"bytes","nodeType":"ElementaryTypeName","src":"21352:5:106","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21351:14:106"},"scope":17474,"src":"21227:550:106","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":17492,"src":"1627:20152:106"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17483,"linearizedBaseContracts":[17483],"name":"LegacyStablePoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"LegacyStablePoolUserData.JoinKind","id":17478,"members":[{"id":17475,"name":"INIT","nodeType":"EnumValue","src":"22675:4:106"},{"id":17476,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"22681:27:106"},{"id":17477,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"22710:26:106"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"22659:79:106"},{"canonicalName":"LegacyStablePoolUserData.ExitKind","id":17482,"members":[{"id":17479,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"22759:30:106"},{"id":17480,"name":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"EnumValue","src":"22791:27:106"},{"id":17481,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"22820:27:106"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"22743:106:106"}],"scope":17492,"src":"22620:231:106"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":17491,"linearizedBaseContracts":[17491],"name":"ComposableStablePoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ComposableStablePoolUserData.JoinKind","id":17487,"members":[{"id":17484,"name":"INIT","nodeType":"EnumValue","src":"22988:4:106"},{"id":17485,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"22994:27:106"},{"id":17486,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"23023:26:106"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"22972:79:106"},{"canonicalName":"ComposableStablePoolUserData.ExitKind","id":17490,"members":[{"id":17488,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"23072:30:106"},{"id":17489,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"23104:27:106"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"23056:77:106"}],"scope":17492,"src":"22929:206:106"}],"src":"688:22448:106"},"id":106},"contracts/relayer/VaultPermit.sol":{"ast":{"absolutePath":"contracts/relayer/VaultPermit.sol","exportedSymbols":{"VaultPermit":[17573]},"id":17574,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17493,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:107"},{"id":17494,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:107"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":17495,"nodeType":"ImportDirective","scope":17574,"sourceUnit":1759,"src":"747:93:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","id":17496,"nodeType":"ImportDirective","scope":17574,"sourceUnit":1782,"src":"841:96:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":17497,"nodeType":"ImportDirective","scope":17574,"sourceUnit":3865,"src":"938:65:107","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":17498,"nodeType":"ImportDirective","scope":17574,"sourceUnit":15505,"src":"1005:35:107","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":17500,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1302:19:107","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":17501,"nodeType":"InheritanceSpecifier","src":"1302:19:107"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":17499,"nodeType":"StructuredDocumentation","src":"1042:226:107","text":" @title VaultPermit\n @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":17573,"linearizedBaseContracts":[17573,15504,9418],"name":"VaultPermit","nodeType":"ContractDefinition","nodes":[{"body":{"id":17534,"nodeType":"Block","src":"1525:83:107","statements":[{"expression":{"arguments":[{"id":17521,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17505,"src":"1548:5:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":17524,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"1563:8:107","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":17525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:10:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":17523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1555:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17522,"name":"address","nodeType":"ElementaryTypeName","src":"1555:7:107","typeDescriptions":{}}},"id":17526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1555:19:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17507,"src":"1576:5:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17528,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17509,"src":"1583:8:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17529,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17511,"src":"1593:1:107","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17530,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17513,"src":"1596:1:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":17531,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17515,"src":"1599:1:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":17518,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17503,"src":"1535:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1758","typeString":"contract IERC20Permit"}},"id":17520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":1743,"src":"1535:12:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":17532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1535:66:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17533,"nodeType":"ExpressionStatement","src":"1535:66:107"}]},"functionSelector":"8d64cfbc","id":17535,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermit","nodeType":"FunctionDefinition","parameters":{"id":17516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17503,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17535,"src":"1358:18:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1758","typeString":"contract IERC20Permit"},"typeName":{"id":17502,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":1758,"src":"1358:12:107","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1758","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":17505,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":17535,"src":"1386:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17504,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17507,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":17535,"src":"1409:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17506,"name":"uint256","nodeType":"ElementaryTypeName","src":"1409:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17509,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":17535,"src":"1432:16:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17511,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":17535,"src":"1458:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17510,"name":"uint8","nodeType":"ElementaryTypeName","src":"1458:5:107","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17513,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":17535,"src":"1475:9:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1475:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17515,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":17535,"src":"1494:9:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1494:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1348:161:107"},"returnParameters":{"id":17517,"nodeType":"ParameterList","parameters":[],"src":"1525:0:107"},"scope":17573,"src":"1328:280:107","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":17571,"nodeType":"Block","src":"1838:91:107","statements":[{"expression":{"arguments":[{"id":17557,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17539,"src":"1861:6:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":17560,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15307,"src":"1877:8:107","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":17561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1877:10:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":17559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1869:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17558,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:107","typeDescriptions":{}}},"id":17562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:19:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17563,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17541,"src":"1890:5:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17564,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17543,"src":"1897:6:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17565,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17545,"src":"1905:7:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":17566,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17547,"src":"1914:1:107","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17567,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17549,"src":"1917:1:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":17568,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17551,"src":"1920:1:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":17554,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17537,"src":"1848:5:107","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$1781","typeString":"contract IERC20PermitDAI"}},"id":17556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":1780,"src":"1848:12:107","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"}},"id":17569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1848:74:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17570,"nodeType":"ExpressionStatement","src":"1848:74:107"}]},"functionSelector":"959fc17a","id":17572,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermitDAI","nodeType":"FunctionDefinition","parameters":{"id":17552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17537,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":17572,"src":"1647:21:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$1781","typeString":"contract IERC20PermitDAI"},"typeName":{"id":17536,"name":"IERC20PermitDAI","nodeType":"UserDefinedTypeName","referencedDeclaration":1781,"src":"1647:15:107","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$1781","typeString":"contract IERC20PermitDAI"}},"visibility":"internal"},{"constant":false,"id":17539,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":17572,"src":"1678:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17538,"name":"address","nodeType":"ElementaryTypeName","src":"1678:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17541,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":17572,"src":"1702:13:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17543,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":17572,"src":"1725:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17542,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17545,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":17572,"src":"1749:12:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17544,"name":"bool","nodeType":"ElementaryTypeName","src":"1749:4:107","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17547,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":17572,"src":"1771:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17546,"name":"uint8","nodeType":"ElementaryTypeName","src":"1771:5:107","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17549,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":17572,"src":"1788:9:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1788:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":17551,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":17572,"src":"1807:9:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17550,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1807:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1637:185:107"},"returnParameters":{"id":17553,"nodeType":"ParameterList","parameters":[],"src":"1838:0:107"},"scope":17573,"src":"1614:315:107","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":17574,"src":"1269:662:107"}],"src":"688:1244:107"},"id":107},"contracts/relayer/YearnWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/YearnWrapping.sol","exportedSymbols":{"YearnWrapping":[17669]},"id":17670,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17575,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:108"},{"id":17576,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:108"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol","id":17577,"nodeType":"ImportDirective","scope":17670,"sourceUnit":3078,"src":"747:86:108","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":17578,"nodeType":"ImportDirective","scope":17670,"sourceUnit":15505,"src":"835:35:108","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":17580,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":15504,"src":"1086:19:108","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$15504","typeString":"contract IBaseRelayerLibrary"}},"id":17581,"nodeType":"InheritanceSpecifier","src":"1086:19:108"}],"contractDependencies":[9418,15504],"contractKind":"contract","documentation":{"id":17579,"nodeType":"StructuredDocumentation","src":"872:178:108","text":" @title YearnWrapping\n @notice Allows users to wrap and unwrap Yearn tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":17669,"linearizedBaseContracts":[17669,15504,9418],"name":"YearnWrapping","nodeType":"ContractDefinition","nodes":[{"body":{"id":17627,"nodeType":"Block","src":"1301:329:108","statements":[{"assignments":[17595],"declarations":[{"constant":false,"id":17595,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":17627,"src":"1311:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17594,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1311:6:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"id":17601,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17597,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17583,"src":"1338:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"id":17598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3050,"src":"1338:18:108","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":17599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1338:20:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17596,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1331:6:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1331:28:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1311:48:108"},{"expression":{"id":17612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17602,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17589,"src":"1370:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":17604,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17595,"src":"1420:10:108","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"id":17607,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17583,"src":"1440:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}],"id":17606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1432:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17605,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:108","typeDescriptions":{}}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1432:21:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17609,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17589,"src":"1455:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17610,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17585,"src":"1463:6:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17603,"name":"_resolveAmountPullTokenAndApproveSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"1379:40:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,address,uint256,address) returns (uint256)"}},"id":17611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1379:91:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1370:100:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17613,"nodeType":"ExpressionStatement","src":"1370:100:108"},{"assignments":[17615],"declarations":[{"constant":false,"id":17615,"mutability":"mutable","name":"receivedWrappedAmount","nodeType":"VariableDeclaration","scope":17627,"src":"1481:29:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17621,"initialValue":{"arguments":[{"id":17618,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17589,"src":"1534:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17619,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17587,"src":"1542:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17616,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17583,"src":"1513:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"id":17617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":3066,"src":"1513:20:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":17620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1513:39:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1481:71:108"},{"expression":{"arguments":[{"id":17623,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17591,"src":"1584:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17624,"name":"receivedWrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17615,"src":"1601:21:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17622,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"1563:20:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":17625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:60:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17626,"nodeType":"ExpressionStatement","src":"1563:60:108"}]},"functionSelector":"4f06a70b","id":17628,"implemented":true,"kind":"function","modifiers":[],"name":"wrapYearn","nodeType":"FunctionDefinition","parameters":{"id":17592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17583,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":17628,"src":"1140:29:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"},"typeName":{"id":17582,"name":"IYearnTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3077,"src":"1140:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"visibility":"internal"},{"constant":false,"id":17585,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":17628,"src":"1179:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17584,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17587,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17628,"src":"1203:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17586,"name":"address","nodeType":"ElementaryTypeName","src":"1203:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17589,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17628,"src":"1230:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17588,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17591,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":17628,"src":"1254:23:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17590,"name":"uint256","nodeType":"ElementaryTypeName","src":"1254:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1130:153:108"},"returnParameters":{"id":17593,"nodeType":"ParameterList","parameters":[],"src":"1301:0:108"},"scope":17669,"src":"1112:518:108","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":17667,"nodeType":"Block","src":"1827:231:108","statements":[{"expression":{"id":17652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17641,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17636,"src":"1837:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":17646,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17630,"src":"1888:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}],"id":17645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1880:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17644,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:108","typeDescriptions":{}}},"id":17647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1880:21:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17643,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1873:6:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1873:29:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":17649,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17636,"src":"1904:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17650,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17632,"src":"1912:6:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":17642,"name":"_resolveAmountAndPullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"1846:26:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256,address) returns (uint256)"}},"id":17651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:73:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1837:82:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17653,"nodeType":"ExpressionStatement","src":"1837:82:108"},{"assignments":[17655],"declarations":[{"constant":false,"id":17655,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":17667,"src":"1930:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1930:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17661,"initialValue":{"arguments":[{"id":17658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17636,"src":"1973:6:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17659,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17634,"src":"1981:9:108","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17656,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17630,"src":"1951:12:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"id":17657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":3076,"src":"1951:21:108","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":17660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1951:40:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1930:61:108"},{"expression":{"arguments":[{"id":17663,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17638,"src":"2023:15:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17664,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17655,"src":"2040:10:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17662,"name":"_setChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"2002:20:108","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":17665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2002:49:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17666,"nodeType":"ExpressionStatement","src":"2002:49:108"}]},"functionSelector":"8b35ac8d","id":17668,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapYearn","nodeType":"FunctionDefinition","parameters":{"id":17639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17630,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":17668,"src":"1666:29:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"},"typeName":{"id":17629,"name":"IYearnTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3077,"src":"1666:16:108","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"visibility":"internal"},{"constant":false,"id":17632,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":17668,"src":"1705:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17631,"name":"address","nodeType":"ElementaryTypeName","src":"1705:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17634,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":17668,"src":"1729:17:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17633,"name":"address","nodeType":"ElementaryTypeName","src":"1729:7:108","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17636,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17668,"src":"1756:14:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17635,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17638,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":17668,"src":"1780:23:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17637,"name":"uint256","nodeType":"ElementaryTypeName","src":"1780:7:108","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1656:153:108"},"returnParameters":{"id":17640,"nodeType":"ParameterList","parameters":[],"src":"1827:0:108"},"scope":17669,"src":"1636:422:108","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":17670,"src":"1051:1009:108"}],"src":"688:1373:108"},"id":108},"contracts/relayer/interfaces/IMockEulerProtocol.sol":{"ast":{"absolutePath":"contracts/relayer/interfaces/IMockEulerProtocol.sol","exportedSymbols":{"IMockEulerProtocol":[17692]},"id":17693,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17671,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:109"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":17692,"linearizedBaseContracts":[17692],"name":"IMockEulerProtocol","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":17672,"nodeType":"StructuredDocumentation","src":"748:188:109","text":" @notice Triggers a transferFrom call `from` msg.sender\n @dev This mimics the requirement to ensure the euler protocol\n is allowed to transfer from msg.sender"},"functionSelector":"3d4216d9","id":17681,"implemented":false,"kind":"function","modifiers":[],"name":"requestUnderlyingFromRelayer","nodeType":"FunctionDefinition","parameters":{"id":17679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17674,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":17681,"src":"988:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17673,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17676,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17681,"src":"1016:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17675,"name":"uint256","nodeType":"ElementaryTypeName","src":"1016:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17678,"mutability":"mutable","name":"msgSender","nodeType":"VariableDeclaration","scope":17681,"src":"1040:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17677,"name":"address","nodeType":"ElementaryTypeName","src":"1040:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"978:85:109"},"returnParameters":{"id":17680,"nodeType":"ParameterList","parameters":[],"src":"1072:0:109"},"scope":17692,"src":"941:132:109","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":17682,"nodeType":"StructuredDocumentation","src":"1079:113:109","text":" @notice Sends tokens from EulerProtocol to relayer\n @dev This is a simple ERC20.transfer"},"functionSelector":"d218fe88","id":17691,"implemented":false,"kind":"function","modifiers":[],"name":"sendUnderlyingToRelayer","nodeType":"FunctionDefinition","parameters":{"id":17689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17684,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":17691,"src":"1239:20:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17683,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17686,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":17691,"src":"1269:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17685,"name":"uint256","nodeType":"ElementaryTypeName","src":"1269:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17688,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":17691,"src":"1293:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17687,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1229:85:109"},"returnParameters":{"id":17690,"nodeType":"ParameterList","parameters":[],"src":"1323:0:109"},"scope":17692,"src":"1197:127:109","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17693,"src":"713:613:109"}],"src":"688:639:109"},"id":109},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/special/DoubleEntrypointFixRelayer.sol","exportedSymbols":{"DoubleEntrypointFixRelayer":[18232]},"id":18233,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17694,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:110"},{"id":17695,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:110"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","id":17696,"nodeType":"ImportDirective","scope":18233,"sourceUnit":590,"src":"747:83:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":17697,"nodeType":"ImportDirective","scope":18233,"sourceUnit":918,"src":"831:87:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":17698,"nodeType":"ImportDirective","scope":18233,"sourceUnit":3865,"src":"919:65:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","id":17699,"nodeType":"ImportDirective","scope":18233,"sourceUnit":3310,"src":"985:78:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","id":17700,"nodeType":"ImportDirective","scope":18233,"sourceUnit":5061,"src":"1065:77:110","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":17701,"nodeType":"ImportDirective","scope":18233,"sourceUnit":9108,"src":"1143:79:110","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17703,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3309,"src":"1511:19:110","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3309","typeString":"contract IFlashLoanRecipient"}},"id":17704,"nodeType":"InheritanceSpecifier","src":"1511:19:110"}],"contractDependencies":[3309],"contractKind":"contract","documentation":{"id":17702,"nodeType":"StructuredDocumentation","src":"1224:247:110","text":" @title DoubleEntrypointFixRelayer\n @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n tokens). It doesn't use the standard relayer architecture to simplify the code."},"fullyImplemented":true,"id":18232,"linearizedBaseContracts":[18232,3309],"name":"DoubleEntrypointFixRelayer","nodeType":"ContractDefinition","nodes":[{"id":17707,"libraryName":{"id":17705,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1543:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1537:27:110","typeName":{"id":17706,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1557:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":true,"functionSelector":"fd6ea58d","id":17712,"mutability":"constant","name":"BTC_STABLE_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":18232,"src":"1614:99:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17708,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1614:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307846656164643338396135633432373935324438666462383035374436433862613131353663433536","id":17710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17709,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1663:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1663:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e4231540","id":17715,"mutability":"constant","name":"BTC_STABLE_POOL_ID","nodeType":"VariableDeclaration","scope":18232,"src":"1719:111:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1719:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866656164643338396135633432373935326438666462383035376436633862613131353663633536303030303030303030303030303030303030303030303636","id":17714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1764:66:110","typeDescriptions":{"typeIdentifier":"t_rational_115194588061805410800048782926783719656362775004276595086089087795503944433766_by_1","typeString":"int_const 1151...(70 digits omitted)...3766"},"value":"0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066"},"visibility":"public"},{"constant":true,"functionSelector":"9b452931","id":17720,"mutability":"constant","name":"wBTC","nodeType":"VariableDeclaration","scope":18232,"src":"1881:80:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17716,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1881:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307832323630464143354535353432613737334161343466424366654466374331393362633243353939","id":17718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17717,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1911:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1911:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5fbc1031","id":17725,"mutability":"constant","name":"renBTC","nodeType":"VariableDeclaration","scope":18232,"src":"1967:82:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17721,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1967:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307845423443323738316534656241383034434539613938303343363764303839333433366242323744","id":17723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2006:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17722,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1999:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e043f56f","id":17730,"mutability":"constant","name":"sBTC","nodeType":"VariableDeclaration","scope":18232,"src":"2055:80:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17726,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2055:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307866453138626536623342643838413244324137663932386430303239324537613939363343664336","id":17728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2092:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17727,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2085:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2085:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"6ad3aaa4","id":17735,"mutability":"constant","name":"sBTC_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":18232,"src":"2141:95:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17731,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2141:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307831384663433334626445616146394533623639443235303033343335323763306339393562316436","id":17733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2193:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2186:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2186:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"0a5e13dc","id":17740,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":18232,"src":"2243:101:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17736,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2243:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307830373266313442383541446436333438384444614438386638353546646134413939643661433942","id":17738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2301:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17737,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2294:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5dc80bd0","id":17743,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ID","nodeType":"VariableDeclaration","scope":18232,"src":"2350:113:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17741,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2350:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830373266313462383561646436333438386464616438386638353566646134613939643661633962303030323030303030303030303030303030303030303237","id":17742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2397:66:110","typeDescriptions":{"typeIdentifier":"t_rational_3249374757253751268355276259122675239274040171040535564758290851987386794023_by_1","typeString":"int_const 3249...(68 digits omitted)...4023"},"value":"0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027"},"visibility":"public"},{"constant":true,"functionSelector":"e8d6101e","id":17748,"mutability":"constant","name":"SNX","nodeType":"VariableDeclaration","scope":18232,"src":"2469:79:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17744,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2469:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303131613733656538353736466234364635453163353735316341334239466530616632613646","id":17746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2505:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17745,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2498:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2498:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"ad5c4648","id":17753,"mutability":"constant","name":"WETH","nodeType":"VariableDeclaration","scope":18232,"src":"2554:80:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17749,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2554:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303261614133396232323346453844304130653543344632376541443930383343373536436332","id":17751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2591:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17750,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2584:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"a2abb55f","id":17758,"mutability":"constant","name":"SNX_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":18232,"src":"2640:94:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":17754,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2640:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307836333930333264333930303837356134636634393630614436623965653434313635376141393343","id":17756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2691:42:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x639032d3900875a4cf4960aD6b9ee441657aA93C"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":17755,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2684:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2684:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"id":17761,"mutability":"constant","name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"VariableDeclaration","scope":18232,"src":"2858:79:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":17760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2936:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":17763,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":18232,"src":"2944:31:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":17762,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"2944:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":17765,"mutability":"immutable","name":"_protocolFeeCollector","nodeType":"VariableDeclaration","scope":18232,"src":"2981:62:110","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":17764,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3399,"src":"2981:22:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"body":{"id":17780,"nodeType":"Block","src":"3076:97:110","statements":[{"expression":{"id":17772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17770,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"3086:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17771,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17767,"src":"3095:5:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"3086:14:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":17773,"nodeType":"ExpressionStatement","src":"3086:14:110"},{"expression":{"id":17778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17774,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"3110:21:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17775,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17767,"src":"3134:5:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":17776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3851,"src":"3134:30:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3399_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":17777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"src":"3110:56:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":17779,"nodeType":"ExpressionStatement","src":"3110:56:110"}]},"id":17781,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":17768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17767,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":17781,"src":"3062:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":17766,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3062:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3061:14:110"},"returnParameters":{"id":17769,"nodeType":"ParameterList","parameters":[],"src":"3076:0:110"},"scope":18232,"src":"3050:123:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17788,"nodeType":"Block","src":"3228:30:110","statements":[{"expression":{"id":17786,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"3245:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"functionReturnParameters":17785,"id":17787,"nodeType":"Return","src":"3238:13:110"}]},"functionSelector":"8d928af8","id":17789,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":17782,"nodeType":"ParameterList","parameters":[],"src":"3196:2:110"},"returnParameters":{"id":17785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17784,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17789,"src":"3220:6:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":17783,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"3220:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3219:8:110"},"scope":18232,"src":"3179:79:110","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":17909,"nodeType":"Block","src":"3583:1272:110","statements":[{"assignments":[17796],"declarations":[{"constant":false,"id":17796,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":17909,"src":"3593:22:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":17794,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3593:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17795,"nodeType":"ArrayTypeName","src":"3593:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":17802,"initialValue":{"arguments":[{"hexValue":"33","id":17800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3631:1:110","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":17799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3618:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":17797,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"3622:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17798,"nodeType":"ArrayTypeName","src":"3622:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":17801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3618:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3593:40:110"},{"expression":{"id":17807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17803,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17796,"src":"3643:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17805,"indexExpression":{"hexValue":"30","id":17804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3650:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3643:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17806,"name":"wBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17720,"src":"3655:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"3643:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17808,"nodeType":"ExpressionStatement","src":"3643:16:110"},{"expression":{"id":17813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17809,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17796,"src":"3669:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17811,"indexExpression":{"hexValue":"31","id":17810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3676:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3669:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17812,"name":"renBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17725,"src":"3681:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"3669:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17814,"nodeType":"ExpressionStatement","src":"3669:18:110"},{"expression":{"id":17819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17815,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17796,"src":"3697:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17817,"indexExpression":{"hexValue":"32","id":17816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3704:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3697:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17818,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"3709:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"3697:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17820,"nodeType":"ExpressionStatement","src":"3697:16:110"},{"assignments":[17822],"declarations":[{"constant":false,"id":17822,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":17909,"src":"3723:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17821,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17828,"initialValue":{"arguments":[{"expression":{"id":17825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3779:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3779:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":17823,"name":"BTC_STABLE_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17712,"src":"3745:23:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"3745:33:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:45:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3723:67:110"},{"expression":{"arguments":[{"id":17830,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"4089:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":17835,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"4118:21:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}],"id":17834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4110:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17833,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:110","typeDescriptions":{}}},"id":17836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4110:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17831,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"4095:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"4095:14:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4095:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17829,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18079,"src":"4055:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":17838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:87:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17839,"nodeType":"ExpressionStatement","src":"4055:87:110"},{"assignments":[17841],"declarations":[{"constant":false,"id":17841,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":17909,"src":"4182:21:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17840,"name":"bytes","nodeType":"ElementaryTypeName","src":"4182:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":17847,"initialValue":{"arguments":[{"id":17844,"name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17761,"src":"4217:50:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17845,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17822,"src":"4269:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17842,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4206:3:110","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"4206:10:110","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4206:75:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4182:99:110"},{"assignments":[17851],"declarations":[{"constant":false,"id":17851,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":17909,"src":"4291:37:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":17850,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"4291:22:110","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":17866,"initialValue":{"arguments":[{"arguments":[{"id":17855,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17796,"src":"4377:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":17854,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"4367:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":17856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4367:17:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":17860,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17796,"src":"4412:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4412:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4398:13:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":17857,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17858,"nodeType":"ArrayTypeName","src":"4402:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":17862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4398:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17863,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17841,"src":"4440:8:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":17864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4462:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17852,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"4331:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":17853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3666,"src":"4331:22:110","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3666_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":17865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:146:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"4291:186:110"},{"expression":{"arguments":[{"id":17870,"name":"BTC_STABLE_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17715,"src":"4507:18:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":17871,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4527:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4527:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":17873,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4539:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4539:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":17875,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17851,"src":"4551:7:110","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17867,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17789,"src":"4487:8:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":17868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":17869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"4487:19:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3666_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":17876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:72:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17877,"nodeType":"ExpressionStatement","src":"4487:72:110"},{"assignments":[17881],"declarations":[{"constant":false,"id":17881,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":17909,"src":"4644:31:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":17879,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4644:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17880,"nodeType":"ArrayTypeName","src":"4644:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":17887,"initialValue":{"arguments":[{"hexValue":"32","id":17885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4691:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":17884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4678:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":17882,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"4682:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17883,"nodeType":"ArrayTypeName","src":"4682:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":17886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4678:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4644:49:110"},{"expression":{"id":17892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17888,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17881,"src":"4703:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17890,"indexExpression":{"hexValue":"30","id":17889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4703:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17891,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17735,"src":"4724:19:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"4703:40:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17893,"nodeType":"ExpressionStatement","src":"4703:40:110"},{"expression":{"id":17903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17894,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17881,"src":"4753:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17896,"indexExpression":{"hexValue":"31","id":17895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4769:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4753:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":17900,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"4789:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":17899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4781:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17898,"name":"address","nodeType":"ElementaryTypeName","src":"4781:7:110","typeDescriptions":{}}},"id":17901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4781:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17897,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"4774:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":17902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4774:21:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"4753:42:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17904,"nodeType":"ExpressionStatement","src":"4753:42:110"},{"expression":{"arguments":[{"id":17906,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17881,"src":"4832:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":17905,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"4805:26:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":17907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4805:43:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17908,"nodeType":"ExpressionStatement","src":"4805:43:110"}]},"documentation":{"id":17790,"nodeType":"StructuredDocumentation","src":"3264:276:110","text":" @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"cbc87782","id":17910,"implemented":true,"kind":"function","modifiers":[],"name":"exitBTCStablePool","nodeType":"FunctionDefinition","parameters":{"id":17791,"nodeType":"ParameterList","parameters":[],"src":"3571:2:110"},"returnParameters":{"id":17792,"nodeType":"ParameterList","parameters":[],"src":"3583:0:110"},"scope":18232,"src":"3545:1310:110","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18026,"nodeType":"Block","src":"5173:1243:110","statements":[{"assignments":[17917],"declarations":[{"constant":false,"id":17917,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":18026,"src":"5183:22:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":17915,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"5183:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17916,"nodeType":"ArrayTypeName","src":"5183:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":17923,"initialValue":{"arguments":[{"hexValue":"32","id":17921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5221:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":17920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5208:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":17918,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"5212:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17919,"nodeType":"ArrayTypeName","src":"5212:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":17922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5208:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5183:40:110"},{"expression":{"id":17928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17924,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17917,"src":"5233:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17926,"indexExpression":{"hexValue":"30","id":17925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5233:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17927,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"5245:3:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"5233:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17929,"nodeType":"ExpressionStatement","src":"5233:15:110"},{"expression":{"id":17934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17930,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17917,"src":"5258:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17932,"indexExpression":{"hexValue":"31","id":17931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5265:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5258:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":17933,"name":"WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17753,"src":"5270:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"5258:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17935,"nodeType":"ExpressionStatement","src":"5258:16:110"},{"assignments":[17937],"declarations":[{"constant":false,"id":17937,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":18026,"src":"5284:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17936,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17943,"initialValue":{"arguments":[{"expression":{"id":17940,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5342:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5342:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":17938,"name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17740,"src":"5306:25:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"5306:35:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5306:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5284:69:110"},{"expression":{"arguments":[{"id":17945,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"5650:3:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":17950,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"5677:21:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}],"id":17949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5669:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17948,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:110","typeDescriptions":{}}},"id":17951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5669:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17946,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"5655:3:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"5655:13:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":17952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5655:45:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17944,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18079,"src":"5616:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":17953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5616:85:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17954,"nodeType":"ExpressionStatement","src":"5616:85:110"},{"assignments":[17956],"declarations":[{"constant":false,"id":17956,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":18026,"src":"5741:21:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17955,"name":"bytes","nodeType":"ElementaryTypeName","src":"5741:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":17964,"initialValue":{"arguments":[{"expression":{"expression":{"id":17959,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5776:20:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$917_$","typeString":"type(library WeightedPoolUserData)"}},"id":17960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":720,"src":"5776:29:110","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$720_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":17961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"5776:57:110","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":17962,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17937,"src":"5835:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$720","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17957,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5765:3:110","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5765:10:110","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5765:82:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5741:106:110"},{"assignments":[17968],"declarations":[{"constant":false,"id":17968,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":18026,"src":"5857:37:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":17967,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3666,"src":"5857:22:110","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":17983,"initialValue":{"arguments":[{"arguments":[{"id":17972,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17917,"src":"5943:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":17971,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"5933:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":17973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5933:17:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":17977,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17917,"src":"5978:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5978:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5964:13:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":17974,"name":"uint256","nodeType":"ElementaryTypeName","src":"5968:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17975,"nodeType":"ArrayTypeName","src":"5968:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":17979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5964:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17980,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17956,"src":"6006:8:110","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":17981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6028:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$3151_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17969,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"5897:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3864_$","typeString":"type(contract IVault)"}},"id":17970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3666,"src":"5897:22:110","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3666_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":17982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5897:146:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"5857:186:110"},{"expression":{"arguments":[{"id":17987,"name":"SNX_WEIGHTED_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17743,"src":"6073:20:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":17988,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6095:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6095:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":17990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6107:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6107:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":17992,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17968,"src":"6119:7:110","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3666_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17984,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17789,"src":"6053:8:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":17985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":17986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3655,"src":"6053:19:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3666_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":17993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:74:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17994,"nodeType":"ExpressionStatement","src":"6053:74:110"},{"assignments":[17998],"declarations":[{"constant":false,"id":17998,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":18026,"src":"6211:30:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":17996,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6211:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":17997,"nodeType":"ArrayTypeName","src":"6211:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":18004,"initialValue":{"arguments":[{"hexValue":"32","id":18002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6257:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":18001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6244:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":17999,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6248:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18000,"nodeType":"ArrayTypeName","src":"6248:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":18003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6244:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6211:48:110"},{"expression":{"id":18009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18005,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17998,"src":"6269:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18007,"indexExpression":{"hexValue":"30","id":18006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6284:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6269:17:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18008,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"6289:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"6269:38:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18010,"nodeType":"ExpressionStatement","src":"6269:38:110"},{"expression":{"id":18020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18011,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17998,"src":"6317:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18013,"indexExpression":{"hexValue":"31","id":18012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6332:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6317:17:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":18017,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"6352:3:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":18016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6344:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18015,"name":"address","nodeType":"ElementaryTypeName","src":"6344:7:110","typeDescriptions":{}}},"id":18018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6344:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18014,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6337:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6337:20:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"6317:40:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18021,"nodeType":"ExpressionStatement","src":"6317:40:110"},{"expression":{"arguments":[{"id":18023,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17998,"src":"6394:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":18022,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"6367:26:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":18024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6367:42:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18025,"nodeType":"ExpressionStatement","src":"6367:42:110"}]},"documentation":{"id":17911,"nodeType":"StructuredDocumentation","src":"4861:267:110","text":" @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"69af9c7e","id":18027,"implemented":true,"kind":"function","modifiers":[],"name":"exitSNXWeightedPool","nodeType":"FunctionDefinition","parameters":{"id":17912,"nodeType":"ParameterList","parameters":[],"src":"5161:2:110"},"returnParameters":{"id":17913,"nodeType":"ParameterList","parameters":[],"src":"5173:0:110"},"scope":18232,"src":"5133:1283:110","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18078,"nodeType":"Block","src":"6504:254:110","statements":[{"assignments":[18037],"declarations":[{"constant":false,"id":18037,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":18078,"src":"6514:22:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18035,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6514:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18036,"nodeType":"ArrayTypeName","src":"6514:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":18043,"initialValue":{"arguments":[{"hexValue":"31","id":18041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6552:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":18040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6539:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":18038,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6543:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18039,"nodeType":"ArrayTypeName","src":"6543:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":18042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6514:40:110"},{"expression":{"id":18048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18044,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18037,"src":"6564:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18046,"indexExpression":{"hexValue":"30","id":18045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6571:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6564:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18047,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18029,"src":"6576:5:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"6564:17:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18049,"nodeType":"ExpressionStatement","src":"6564:17:110"},{"assignments":[18054],"declarations":[{"constant":false,"id":18054,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":18078,"src":"6591:24:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18052,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18053,"nodeType":"ArrayTypeName","src":"6591:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":18060,"initialValue":{"arguments":[{"hexValue":"31","id":18058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6632:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":18057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6618:13:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":18055,"name":"uint256","nodeType":"ElementaryTypeName","src":"6622:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18056,"nodeType":"ArrayTypeName","src":"6622:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":18059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6618:16:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6591:43:110"},{"expression":{"id":18065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18061,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18054,"src":"6644:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18063,"indexExpression":{"hexValue":"30","id":18062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6652:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6644:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18064,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18031,"src":"6657:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6644:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18066,"nodeType":"ExpressionStatement","src":"6644:19:110"},{"expression":{"arguments":[{"id":18070,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18037,"src":"6718:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":18071,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18054,"src":"6726:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":18074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"6743:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":18073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6735:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18072,"name":"address","nodeType":"ElementaryTypeName","src":"6735:7:110","typeDescriptions":{}}},"id":18075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6735:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18067,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17765,"src":"6674:21:110","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3399","typeString":"contract IProtocolFeesCollector"}},"id":18069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":3359,"src":"6674:43:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":18076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6674:77:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18077,"nodeType":"ExpressionStatement","src":"6674:77:110"}]},"id":18079,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFromProtocolFeeCollector","nodeType":"FunctionDefinition","parameters":{"id":18032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18029,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":18079,"src":"6465:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":18028,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6465:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":18031,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18079,"src":"6479:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18030,"name":"uint256","nodeType":"ElementaryTypeName","src":"6479:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6464:30:110"},"returnParameters":{"id":18033,"nodeType":"ParameterList","parameters":[],"src":"6504:0:110"},"scope":18232,"src":"6422:336:110","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18145,"nodeType":"Block","src":"6897:431:110","statements":[{"assignments":[18086],"declarations":[{"constant":false,"id":18086,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":18145,"src":"6907:30:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18084,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6907:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18085,"nodeType":"ArrayTypeName","src":"6907:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":18092,"initialValue":{"arguments":[{"hexValue":"32","id":18090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":18089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6940:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":18087,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"6944:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18088,"nodeType":"ArrayTypeName","src":"6944:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":18091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6907:48:110"},{"expression":{"id":18097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18093,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18086,"src":"6965:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18095,"indexExpression":{"hexValue":"30","id":18094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6980:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6965:17:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18096,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"6985:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"6965:38:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18098,"nodeType":"ExpressionStatement","src":"6965:38:110"},{"expression":{"id":18108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18099,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18086,"src":"7013:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18101,"indexExpression":{"hexValue":"31","id":18100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7028:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7013:17:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":18105,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17748,"src":"7048:3:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":18104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7040:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18103,"name":"address","nodeType":"ElementaryTypeName","src":"7040:7:110","typeDescriptions":{}}},"id":18106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7040:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18102,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"7033:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7033:20:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"7013:40:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18109,"nodeType":"ExpressionStatement","src":"7013:40:110"},{"expression":{"arguments":[{"id":18111,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18086,"src":"7091:14:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":18110,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"7064:26:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":18112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7064:42:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18113,"nodeType":"ExpressionStatement","src":"7064:42:110"},{"assignments":[18117],"declarations":[{"constant":false,"id":18117,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":18145,"src":"7117:31:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18115,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7117:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18116,"nodeType":"ArrayTypeName","src":"7117:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":18123,"initialValue":{"arguments":[{"hexValue":"32","id":18121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7164:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":18120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7151:12:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":18118,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7155:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18119,"nodeType":"ArrayTypeName","src":"7155:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":18122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7151:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7117:49:110"},{"expression":{"id":18128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18124,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"7176:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18126,"indexExpression":{"hexValue":"30","id":18125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7192:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7176:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18127,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17735,"src":"7197:19:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"7176:40:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18129,"nodeType":"ExpressionStatement","src":"7176:40:110"},{"expression":{"id":18139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18130,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"7226:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18132,"indexExpression":{"hexValue":"31","id":18131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7242:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7226:18:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":18136,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"7262:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":18135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7254:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18134,"name":"address","nodeType":"ElementaryTypeName","src":"7254:7:110","typeDescriptions":{}}},"id":18137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7254:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18133,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"7247:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7247:21:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"7226:42:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18140,"nodeType":"ExpressionStatement","src":"7226:42:110"},{"expression":{"arguments":[{"id":18142,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"7305:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":18141,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18189,"src":"7278:26:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":18143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7278:43:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18144,"nodeType":"ExpressionStatement","src":"7278:43:110"}]},"documentation":{"id":18080,"nodeType":"StructuredDocumentation","src":"6764:97:110","text":" @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector."},"functionSelector":"5f5fb036","id":18146,"implemented":true,"kind":"function","modifiers":[],"name":"sweepSNXsBTC","nodeType":"FunctionDefinition","parameters":{"id":18081,"nodeType":"ParameterList","parameters":[],"src":"6887:2:110"},"returnParameters":{"id":18082,"nodeType":"ParameterList","parameters":[],"src":"6897:0:110"},"scope":18232,"src":"6866:462:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18188,"nodeType":"Block","src":"7548:186:110","statements":[{"assignments":[18157],"declarations":[{"constant":false,"id":18157,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":18188,"src":"7558:24:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18155,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18156,"nodeType":"ArrayTypeName","src":"7558:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":18164,"initialValue":{"arguments":[{"expression":{"id":18161,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18150,"src":"7599:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7599:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7585:13:110","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":18158,"name":"uint256","nodeType":"ElementaryTypeName","src":"7589:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18159,"nodeType":"ArrayTypeName","src":"7589:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":18163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:28:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7558:55:110"},{"expression":{"id":18177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18165,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18157,"src":"7623:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18167,"indexExpression":{"hexValue":"30","id":18166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7631:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7623:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":18174,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"7664:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":18173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7656:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18172,"name":"address","nodeType":"ElementaryTypeName","src":"7656:7:110","typeDescriptions":{}}},"id":18175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7656:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":18168,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18150,"src":"7636:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18170,"indexExpression":{"hexValue":"30","id":18169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7643:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7636:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"7636:19:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7636:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7623:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18178,"nodeType":"ExpressionStatement","src":"7623:49:110"},{"expression":{"arguments":[{"id":18182,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7699:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$18232","typeString":"contract DoubleEntrypointFixRelayer"}},{"id":18183,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18150,"src":"7705:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":18184,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18157,"src":"7713:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"3078","id":18185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7722:4:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$18232","typeString":"contract DoubleEntrypointFixRelayer"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":18179,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"7682:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":18181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flashLoan","nodeType":"MemberAccess","referencedDeclaration":3801,"src":"7682:16:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IFlashLoanRecipient_$3309_$_t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IFlashLoanRecipient,contract IERC20[] memory,uint256[] memory,bytes memory) external"}},"id":18186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7682:45:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18187,"nodeType":"ExpressionStatement","src":"7682:45:110"}]},"documentation":{"id":18147,"nodeType":"StructuredDocumentation","src":"7334:142:110","text":" @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n token."},"functionSelector":"0306ae12","id":18189,"implemented":true,"kind":"function","modifiers":[],"name":"sweepDoubleEntrypointToken","nodeType":"FunctionDefinition","parameters":{"id":18151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18150,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":18189,"src":"7517:22:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18148,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"7517:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18149,"nodeType":"ArrayTypeName","src":"7517:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"7516:24:110"},"returnParameters":{"id":18152,"nodeType":"ParameterList","parameters":[],"src":"7548:0:110"},"scope":18232,"src":"7481:253:110","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3308],"body":{"id":18230,"nodeType":"Block","src":"8137:142:110","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":18206,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8156:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8156:10:110","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":18210,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"8178:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":18209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8170:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18208,"name":"address","nodeType":"ElementaryTypeName","src":"8170:7:110","typeDescriptions":{}}},"id":18211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8170:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8156:29:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":18213,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"8187:6:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":18214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CALLER_NOT_VAULT","nodeType":"MemberAccess","referencedDeclaration":1052,"src":"8187:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18205,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[935,954],"referencedDeclaration":935,"src":"8147:8:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":18215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8147:64:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18216,"nodeType":"ExpressionStatement","src":"8147:64:110"},{"expression":{"arguments":[{"arguments":[{"id":18223,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17763,"src":"8252:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}],"id":18222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8244:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18221,"name":"address","nodeType":"ElementaryTypeName","src":"8244:7:110","typeDescriptions":{}}},"id":18224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8244:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":18225,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18196,"src":"8261:7:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18227,"indexExpression":{"hexValue":"30","id":18226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8269:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8261:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":18217,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18193,"src":"8221:6:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18219,"indexExpression":{"hexValue":"30","id":18218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8228:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8221:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"8221:22:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8221:51:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18229,"nodeType":"ExpressionStatement","src":"8221:51:110"}]},"documentation":{"id":18190,"nodeType":"StructuredDocumentation","src":"7740:228:110","text":" @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n synth). We only need to repay the first loan as that will automatically all other loans."},"functionSelector":"f04f2707","id":18231,"implemented":true,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","overrides":{"id":18203,"nodeType":"OverrideSpecifier","overrides":[],"src":"8128:8:110"},"parameters":{"id":18202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18193,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":18231,"src":"8008:22:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18191,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"8008:6:110","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18192,"nodeType":"ArrayTypeName","src":"8008:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1722_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":18196,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":18231,"src":"8040:24:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18194,"name":"uint256","nodeType":"ElementaryTypeName","src":"8040:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18195,"nodeType":"ArrayTypeName","src":"8040:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":18199,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18231,"src":"8074:16:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18197,"name":"uint256","nodeType":"ElementaryTypeName","src":"8074:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18198,"nodeType":"ArrayTypeName","src":"8074:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":18201,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18231,"src":"8100:12:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18200,"name":"bytes","nodeType":"ElementaryTypeName","src":"8100:5:110","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7998:120:110"},"returnParameters":{"id":18204,"nodeType":"ParameterList","parameters":[],"src":"8137:0:110"},"scope":18232,"src":"7973:306:110","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18233,"src":"1472:6809:110"}],"src":"688:7594:110"},"id":110},"contracts/test/MockAaveAMPLToken.sol":{"ast":{"absolutePath":"contracts/test/MockAaveAMPLToken.sol","exportedSymbols":{"MockAaveAMPLToken":[18265]},"id":18266,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18234,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"785:23:111"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol","id":18235,"nodeType":"ImportDirective","scope":18266,"sourceUnit":1791,"src":"810:77:111","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockUnbuttonERC20.sol","file":"./MockUnbuttonERC20.sol","id":18236,"nodeType":"ImportDirective","scope":18266,"sourceUnit":21437,"src":"889:33:111","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18237,"name":"MockUnbuttonERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":21436,"src":"954:17:111","typeDescriptions":{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}},"id":18238,"nodeType":"InheritanceSpecifier","src":"954:17:111"},{"baseName":{"id":18239,"name":"IAToken","nodeType":"UserDefinedTypeName","referencedDeclaration":1790,"src":"973:7:111","typeDescriptions":{"typeIdentifier":"t_contract$_IAToken_$1790","typeString":"contract IAToken"}},"id":18240,"nodeType":"InheritanceSpecifier","src":"973:7:111"}],"contractDependencies":[1722,1790,2075,8223,21436],"contractKind":"contract","fullyImplemented":true,"id":18265,"linearizedBaseContracts":[18265,1790,21436,2075,8223,1722],"name":"MockAaveAMPLToken","nodeType":"ContractDefinition","nodes":[{"body":{"id":18254,"nodeType":"Block","src":"1142:3:111","statements":[]},"id":18255,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18249,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18242,"src":"1113:11:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18250,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18244,"src":"1126:5:111","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18251,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18246,"src":"1133:7:111","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":18252,"modifierName":{"id":18248,"name":"MockUnbuttonERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21436,"src":"1095:17:111","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockUnbuttonERC20_$21436_$","typeString":"type(contract MockUnbuttonERC20)"}},"nodeType":"ModifierInvocation","src":"1095:46:111"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18242,"mutability":"mutable","name":"underlying_","nodeType":"VariableDeclaration","scope":18255,"src":"1009:19:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18241,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18244,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":18255,"src":"1038:19:111","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18243,"name":"string","nodeType":"ElementaryTypeName","src":"1038:6:111","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18246,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":18255,"src":"1067:21:111","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18245,"name":"string","nodeType":"ElementaryTypeName","src":"1067:6:111","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"999:95:111"},"returnParameters":{"id":18253,"nodeType":"ParameterList","parameters":[],"src":"1142:0:111"},"scope":18265,"src":"988:157:111","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1789],"body":{"id":18263,"nodeType":"Block","src":"1228:35:111","statements":[{"expression":{"id":18261,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"1245:11:111","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18260,"id":18262,"nodeType":"Return","src":"1238:18:111"}]},"functionSelector":"b16a19de","id":18264,"implemented":true,"kind":"function","modifiers":[],"name":"UNDERLYING_ASSET_ADDRESS","nodeType":"FunctionDefinition","overrides":{"id":18257,"nodeType":"OverrideSpecifier","overrides":[],"src":"1201:8:111"},"parameters":{"id":18256,"nodeType":"ParameterList","parameters":[],"src":"1184:2:111"},"returnParameters":{"id":18260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18259,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18264,"src":"1219:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18258,"name":"address","nodeType":"ElementaryTypeName","src":"1219:7:111","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1218:9:111"},"scope":18265,"src":"1151:112:111","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":18266,"src":"924:341:111"}],"src":"785:481:111"},"id":111},"contracts/test/MockBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBaseRelayerLibrary.sol","exportedSymbols":{"MockBaseRelayerLibrary":[18335]},"id":18336,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18267,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:112"},{"id":18268,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:112"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"../relayer/BaseRelayerLibrary.sol","id":18269,"nodeType":"ImportDirective","scope":18336,"sourceUnit":14475,"src":"883:43:112","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18270,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":14474,"src":"963:18:112","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$14474","typeString":"contract BaseRelayerLibrary"}},"id":18271,"nodeType":"InheritanceSpecifier","src":"963:18:112"}],"contractDependencies":[9418,14474,15504],"contractKind":"contract","fullyImplemented":true,"id":18335,"linearizedBaseContracts":[18335,14474,15504,9418],"name":"MockBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18275,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":18274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18273,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18275,"src":"1020:13:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1019:15:112"},"src":"988:47:112"},{"body":{"id":18286,"nodeType":"Block","src":"1125:2:112","statements":[]},"id":18287,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18282,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18277,"src":"1109:5:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":18283,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18279,"src":"1116:7:112","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":18284,"modifierName":{"id":18281,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14474,"src":"1090:18:112","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$14474_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1090:34:112"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18277,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":18287,"src":"1053:12:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":18276,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1053:6:112","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":18279,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":18287,"src":"1067:21:112","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18278,"name":"string","nodeType":"ElementaryTypeName","src":"1067:6:112","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1052:37:112"},"returnParameters":{"id":18285,"nodeType":"ParameterList","parameters":[],"src":"1125:0:112"},"scope":18335,"src":"1041:86:112","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18298,"nodeType":"Block","src":"1204:51:112","statements":[{"expression":{"arguments":[{"id":18295,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18289,"src":"1241:6:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18294,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[14351],"referencedDeclaration":14351,"src":"1221:19:112","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":18296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1221:27:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18293,"id":18297,"nodeType":"Return","src":"1214:34:112"}]},"functionSelector":"ec6edf00","id":18299,"implemented":true,"kind":"function","modifiers":[],"name":"isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":18290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18289,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18299,"src":"1161:14:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18288,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1160:16:112"},"returnParameters":{"id":18293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18292,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18299,"src":"1198:4:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18291,"name":"bool","nodeType":"ElementaryTypeName","src":"1198:4:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1197:6:112"},"scope":18335,"src":"1133:122:112","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":18311,"nodeType":"Block","src":"1338:54:112","statements":[{"expression":{"arguments":[{"id":18307,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18301,"src":"1374:3:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18303,"src":"1379:5:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18306,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[14384],"referencedDeclaration":14384,"src":"1348:25:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":18309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1348:37:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18310,"nodeType":"ExpressionStatement","src":"1348:37:112"}]},"functionSelector":"c518e531","id":18312,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":18304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18301,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":18312,"src":"1295:11:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1295:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18303,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18312,"src":"1308:13:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18302,"name":"uint256","nodeType":"ElementaryTypeName","src":"1308:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1294:28:112"},"returnParameters":{"id":18305,"nodeType":"ParameterList","parameters":[],"src":"1338:0:112"},"scope":18335,"src":"1261:131:112","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":18323,"nodeType":"Block","src":"1452:79:112","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":18319,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18314,"src":"1519:3:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18318,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[14410],"referencedDeclaration":14410,"src":"1493:25:112","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":18320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:30:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18317,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18275,"src":"1467:25:112","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1467:57:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18322,"nodeType":"EmitStatement","src":"1462:62:112"}]},"functionSelector":"5967b696","id":18324,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":18315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18314,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":18324,"src":"1432:11:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18313,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1431:13:112"},"returnParameters":{"id":18316,"nodeType":"ParameterList","parameters":[],"src":"1452:0:112"},"scope":18335,"src":"1398:133:112","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18333,"nodeType":"Block","src":"1613:29:112","statements":[{"expression":{"id":18331,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"1630:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":18330,"id":18332,"nodeType":"Return","src":"1623:12:112"}]},"functionSelector":"56cc064e","id":18334,"implemented":true,"kind":"function","modifiers":[],"name":"bytesTunnel","nodeType":"FunctionDefinition","parameters":{"id":18327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18326,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":18334,"src":"1558:18:112","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18325,"name":"bytes","nodeType":"ElementaryTypeName","src":"1558:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1557:20:112"},"returnParameters":{"id":18330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18334,"src":"1599:12:112","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18328,"name":"bytes","nodeType":"ElementaryTypeName","src":"1599:5:112","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1598:14:112"},"scope":18335,"src":"1537:105:112","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":18336,"src":"928:716:112"}],"src":"731:914:112"},"id":112},"contracts/test/MockBatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBatchRelayerLibrary.sol","exportedSymbols":{"MockBatchRelayerLibrary":[18390]},"id":18391,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18337,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:113"},{"id":18338,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:113"},{"absolutePath":"contracts/BatchRelayerLibrary.sol","file":"../BatchRelayerLibrary.sol","id":18339,"nodeType":"ImportDirective","scope":18391,"sourceUnit":12016,"src":"790:36:113","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18340,"name":"BatchRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12015,"src":"864:19:113","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRelayerLibrary_$12015","typeString":"contract BatchRelayerLibrary"}},"id":18341,"nodeType":"InheritanceSpecifier","src":"864:19:113"}],"contractDependencies":[9418,12015,13886,14474,14601,14696,14823,15164,15281,15504,15708,15827,15963,16082,16175,17474,17573,17669],"contractKind":"contract","fullyImplemented":true,"id":18390,"linearizedBaseContracts":[18390,12015,17669,17573,17474,16082,15963,15827,14601,16175,15708,15281,15164,14823,14696,14474,13886,15504,9418],"name":"MockBatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":18345,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":18344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18343,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18345,"src":"922:13:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18342,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"921:15:113"},"src":"890:47:113"},{"body":{"id":18363,"nodeType":"Block","src":"1144:2:113","statements":[]},"id":18364,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18356,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18347,"src":"1094:5:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":18357,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18349,"src":"1101:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},{"id":18358,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18351,"src":"1109:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},{"id":18359,"name":"canCallUserCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18353,"src":"1117:21:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"","id":18360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1140:2:113","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"id":18361,"modifierName":{"id":18355,"name":"BatchRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12015,"src":"1074:19:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRelayerLibrary_$12015_$","typeString":"type(contract BatchRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1074:69:113"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18347,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":18364,"src":"964:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":18346,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"964:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":18349,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":18364,"src":"986:13:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":18348,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"986:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":18351,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":18364,"src":"1009:22:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"},"typeName":{"id":18350,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":134,"src":"1009:15:113","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$134","typeString":"contract IBalancerMinter"}},"visibility":"internal"},{"constant":false,"id":18353,"mutability":"mutable","name":"canCallUserCheckpoint","nodeType":"VariableDeclaration","scope":18364,"src":"1041:26:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18352,"name":"bool","nodeType":"ElementaryTypeName","src":"1041:4:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"954:119:113"},"returnParameters":{"id":18362,"nodeType":"ParameterList","parameters":[],"src":"1144:0:113"},"scope":18390,"src":"943:203:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18376,"nodeType":"Block","src":"1221:54:113","statements":[{"expression":{"arguments":[{"id":18372,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"1257:3:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18368,"src":"1262:5:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18371,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[14384],"referencedDeclaration":14384,"src":"1231:25:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":18374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1231:37:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18375,"nodeType":"ExpressionStatement","src":"1231:37:113"}]},"functionSelector":"c518e531","id":18377,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":18369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18366,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":18377,"src":"1186:11:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18368,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":18377,"src":"1199:13:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1185:28:113"},"returnParameters":{"id":18370,"nodeType":"ParameterList","parameters":[],"src":"1221:0:113"},"scope":18390,"src":"1152:123:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18388,"nodeType":"Block","src":"1335:79:113","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":18384,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"1402:3:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18383,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[14410],"referencedDeclaration":14410,"src":"1376:25:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":18385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:30:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18382,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18345,"src":"1350:25:113","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1350:57:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18387,"nodeType":"EmitStatement","src":"1345:62:113"}]},"functionSelector":"5967b696","id":18389,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":18380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18379,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":18389,"src":"1315:11:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18378,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1314:13:113"},"returnParameters":{"id":18381,"nodeType":"ParameterList","parameters":[],"src":"1335:0:113"},"scope":18390,"src":"1281:133:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":18391,"src":"828:588:113"}],"src":"731:686:113"},"id":113},"contracts/test/MockCToken.sol":{"ast":{"absolutePath":"contracts/test/MockCToken.sol","exportedSymbols":{"MockCToken":[18598]},"id":18599,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18392,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:114"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol","id":18393,"nodeType":"ImportDirective","scope":18599,"sourceUnit":2104,"src":"713:77:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":18394,"nodeType":"ImportDirective","scope":18599,"sourceUnit":5906,"src":"792:72:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":18395,"nodeType":"ImportDirective","scope":18599,"sourceUnit":9108,"src":"865:79:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":18396,"nodeType":"ImportDirective","scope":18599,"sourceUnit":9289,"src":"945:71:114","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18397,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1041:9:114","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":18398,"nodeType":"InheritanceSpecifier","src":"1041:9:114"},{"baseName":{"id":18399,"name":"ICToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2103,"src":"1052:7:114","typeDescriptions":{"typeIdentifier":"t_contract$_ICToken_$2103","typeString":"contract ICToken"}},"id":18400,"nodeType":"InheritanceSpecifier","src":"1052:7:114"}],"contractDependencies":[1520,1722,1758,2103,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":18598,"linearizedBaseContracts":[18598,2103,9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"MockCToken","nodeType":"ContractDefinition","nodes":[{"id":18403,"libraryName":{"id":18401,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1072:9:114","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1066:27:114","typeName":{"id":18402,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1086:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":18406,"libraryName":{"id":18404,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1104:10:114","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1098:29:114","typeName":{"id":18405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1119:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":18408,"mutability":"immutable","name":"_underlying","nodeType":"VariableDeclaration","scope":18598,"src":"1133:37:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18407,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":18410,"mutability":"immutable","name":"_scaleFactor","nodeType":"VariableDeclaration","scope":18598,"src":"1176:38:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1176:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":18412,"mutability":"mutable","name":"_exchangeRate","nodeType":"VariableDeclaration","scope":18598,"src":"1221:29:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":18460,"nodeType":"Block","src":"1423:385:114","statements":[{"expression":{"id":18430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18428,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18408,"src":"1467:11:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18429,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18418,"src":"1481:15:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1467:29:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18431,"nodeType":"ExpressionStatement","src":"1467:29:114"},{"assignments":[18433],"declarations":[{"constant":false,"id":18433,"mutability":"mutable","name":"scaleFactor","nodeType":"VariableDeclaration","scope":18460,"src":"1574:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1574:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18448,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":18434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1596:2:114","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":18441,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18418,"src":"1623:15:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18440,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8223,"src":"1617:5:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8223_$","typeString":"type(contract ERC20)"}},"id":18442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1617:22:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":18443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":7809,"src":"1617:31:114","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":18444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1617:33:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"hexValue":"3130","id":18437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1609:2:114","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"id":18436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1601:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18435,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:114","typeDescriptions":{}}},"id":18438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1601:11:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5576,"src":"1601:15:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1601:50:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18446,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1600:52:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1596:56:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1574:78:114"},{"expression":{"id":18451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18449,"name":"_scaleFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"1662:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18450,"name":"scaleFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18433,"src":"1677:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1662:26:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18452,"nodeType":"ExpressionStatement","src":"1662:26:114"},{"expression":{"id":18458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18453,"name":"_exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18412,"src":"1752:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18456,"name":"scaleFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18433,"src":"1789:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18454,"name":"exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"1768:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"1768:20:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1768:33:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1752:49:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18459,"nodeType":"ExpressionStatement","src":"1752:49:114"}]},"id":18461,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18423,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18414,"src":"1406:4:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18424,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18416,"src":"1412:6:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"38","id":18425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1420:1:114","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"}],"id":18426,"modifierName":{"id":18422,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1396:9:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1396:26:114"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18414,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":18461,"src":"1278:18:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18413,"name":"string","nodeType":"ElementaryTypeName","src":"1278:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18416,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":18461,"src":"1306:20:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18415,"name":"string","nodeType":"ElementaryTypeName","src":"1306:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18418,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":18461,"src":"1336:23:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18417,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18420,"mutability":"mutable","name":"exchangeRate","nodeType":"VariableDeclaration","scope":18461,"src":"1369:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:127:114"},"returnParameters":{"id":18427,"nodeType":"ParameterList","parameters":[],"src":"1423:0:114"},"scope":18598,"src":"1257:551:114","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2086],"body":{"id":18470,"nodeType":"Block","src":"1905:35:114","statements":[{"expression":{"id":18468,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18408,"src":"1922:11:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18467,"id":18469,"nodeType":"Return","src":"1915:18:114"}]},"documentation":{"id":18462,"nodeType":"StructuredDocumentation","src":"1814:23:114","text":"@inheritdoc ICToken"},"functionSelector":"6f307dc3","id":18471,"implemented":true,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","overrides":{"id":18464,"nodeType":"OverrideSpecifier","overrides":[],"src":"1878:8:114"},"parameters":{"id":18463,"nodeType":"ParameterList","parameters":[],"src":"1861:2:114"},"returnParameters":{"id":18467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18471,"src":"1896:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18465,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1895:9:114"},"scope":18598,"src":"1842:98:114","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2094],"body":{"id":18507,"nodeType":"Block","src":"2044:213:114","statements":[{"assignments":[18481],"declarations":[{"constant":false,"id":18481,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":18507,"src":"2054:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2054:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18485,"initialValue":{"arguments":[{"id":18483,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18474,"src":"2092:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18482,"name":"toCTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18583,"src":"2077:14:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2077:26:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2054:49:114"},{"expression":{"arguments":[{"expression":{"id":18490,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2151:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2151:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":18494,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2171:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MockCToken_$18598","typeString":"contract MockCToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockCToken_$18598","typeString":"contract MockCToken"}],"id":18493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2163:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18492,"name":"address","nodeType":"ElementaryTypeName","src":"2163:7:114","typeDescriptions":{}}},"id":18495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2163:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18496,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18474,"src":"2178:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18487,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18408,"src":"2121:11:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18486,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2114:6:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2114:19:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"2114:36:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":18497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2114:75:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18498,"nodeType":"ExpressionStatement","src":"2114:75:114"},{"expression":{"arguments":[{"expression":{"id":18500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2206:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2206:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":18502,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18481,"src":"2218:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18499,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"2200:5:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":18503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2200:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18504,"nodeType":"ExpressionStatement","src":"2200:31:114"},{"expression":{"hexValue":"30","id":18505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2249:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18479,"id":18506,"nodeType":"Return","src":"2242:8:114"}]},"documentation":{"id":18472,"nodeType":"StructuredDocumentation","src":"1946:23:114","text":"@inheritdoc ICToken"},"functionSelector":"a0712d68","id":18508,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":18476,"nodeType":"OverrideSpecifier","overrides":[],"src":"2017:8:114"},"parameters":{"id":18475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18474,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18508,"src":"1988:18:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1987:20:114"},"returnParameters":{"id":18479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18478,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18508,"src":"2035:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18477,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2034:9:114"},"scope":18598,"src":"1974:283:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2102],"body":{"id":18540,"nodeType":"Block","src":"2365:204:114","statements":[{"expression":{"arguments":[{"expression":{"id":18518,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2381:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2381:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":18520,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18511,"src":"2393:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18517,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2375:5:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":18521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2375:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18522,"nodeType":"ExpressionStatement","src":"2375:31:114"},{"assignments":[18524],"declarations":[{"constant":false,"id":18524,"mutability":"mutable","name":"amountToReturn","nodeType":"VariableDeclaration","scope":18540,"src":"2417:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18523,"name":"uint256","nodeType":"ElementaryTypeName","src":"2417:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18528,"initialValue":{"arguments":[{"id":18526,"name":"redeemTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18511,"src":"2459:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18525,"name":"fromCTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18569,"src":"2442:16:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2442:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2417:55:114"},{"expression":{"arguments":[{"expression":{"id":18533,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2516:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2516:10:114","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":18535,"name":"amountToReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18524,"src":"2528:14:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18530,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18408,"src":"2490:11:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18529,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2483:6:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:19:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2483:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:60:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18537,"nodeType":"ExpressionStatement","src":"2483:60:114"},{"expression":{"hexValue":"30","id":18538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2561:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18516,"id":18539,"nodeType":"Return","src":"2554:8:114"}]},"documentation":{"id":18509,"nodeType":"StructuredDocumentation","src":"2263:23:114","text":"@inheritdoc ICToken"},"functionSelector":"db006a75","id":18541,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","overrides":{"id":18513,"nodeType":"OverrideSpecifier","overrides":[],"src":"2338:8:114"},"parameters":{"id":18512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18511,"mutability":"mutable","name":"redeemTokens","nodeType":"VariableDeclaration","scope":18541,"src":"2307:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2307:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2306:22:114"},"returnParameters":{"id":18516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18515,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18541,"src":"2356:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18514,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2355:9:114"},"scope":18598,"src":"2291:278:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18554,"nodeType":"Block","src":"2841:44:114","statements":[{"expression":{"arguments":[{"id":18550,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18544,"src":"2857:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18551,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18546,"src":"2867:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18549,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"2851:5:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":18552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2851:27:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18553,"nodeType":"ExpressionStatement","src":"2851:27:114"}]},"documentation":{"id":18542,"nodeType":"StructuredDocumentation","src":"2575:190:114","text":" @notice Mint cTokens directly without depositing underlying assets.\n @dev This is required for testing because Compound's `mint` function overrides `TestToken.mint`."},"functionSelector":"4b5da1ed","id":18555,"implemented":true,"kind":"function","modifiers":[],"name":"mintTestTokens","nodeType":"FunctionDefinition","parameters":{"id":18547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18544,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":18555,"src":"2794:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18543,"name":"address","nodeType":"ElementaryTypeName","src":"2794:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18546,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":18555,"src":"2812:18:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18545,"name":"uint256","nodeType":"ElementaryTypeName","src":"2812:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2793:38:114"},"returnParameters":{"id":18548,"nodeType":"ParameterList","parameters":[],"src":"2841:0:114"},"scope":18598,"src":"2770:115:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18568,"nodeType":"Block","src":"3169:51:114","statements":[{"expression":{"arguments":[{"id":18565,"name":"_exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18412,"src":"3199:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18558,"src":"3186:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":5667,"src":"3186:12:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3186:27:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18562,"id":18567,"nodeType":"Return","src":"3179:34:114"}]},"documentation":{"id":18556,"nodeType":"StructuredDocumentation","src":"2891:201:114","text":" @notice Preview the amount of underlying returned by a withdrawal.\n @param amount The number of cTokens to be redeemed.\n @return The number of underlying tokens returned."},"functionSelector":"63fac3c7","id":18569,"implemented":true,"kind":"function","modifiers":[],"name":"fromCTokenAmount","nodeType":"FunctionDefinition","parameters":{"id":18559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18558,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18569,"src":"3123:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3123:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3122:16:114"},"returnParameters":{"id":18562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18561,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18569,"src":"3160:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18560,"name":"uint256","nodeType":"ElementaryTypeName","src":"3160:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3159:9:114"},"scope":18598,"src":"3097:123:114","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":18582,"nodeType":"Block","src":"3497:53:114","statements":[{"expression":{"arguments":[{"id":18579,"name":"_exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18412,"src":"3529:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18577,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18572,"src":"3514:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"3514:14:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3514:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18576,"id":18581,"nodeType":"Return","src":"3507:36:114"}]},"documentation":{"id":18570,"nodeType":"StructuredDocumentation","src":"3226:196:114","text":" @notice Preview the amount of cTokens returned by a deposit.\n @param amount The number of underlying tokens to be deposited.\n @return The number of cTokens returned."},"functionSelector":"5fc0b727","id":18583,"implemented":true,"kind":"function","modifiers":[],"name":"toCTokenAmount","nodeType":"FunctionDefinition","parameters":{"id":18573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18572,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18583,"src":"3451:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18571,"name":"uint256","nodeType":"ElementaryTypeName","src":"3451:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3450:16:114"},"returnParameters":{"id":18576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18575,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18583,"src":"3488:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18574,"name":"uint256","nodeType":"ElementaryTypeName","src":"3488:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3487:9:114"},"scope":18598,"src":"3427:123:114","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":18596,"nodeType":"Block","src":"3780:70:114","statements":[{"expression":{"id":18594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18589,"name":"_exchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18412,"src":"3790:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18592,"name":"_scaleFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"3830:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18590,"name":"newExchangeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"3806:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"3806:23:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3806:37:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3790:53:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18595,"nodeType":"ExpressionStatement","src":"3790:53:114"}]},"documentation":{"id":18584,"nodeType":"StructuredDocumentation","src":"3556:160:114","text":" @notice Set the exchange rate for testing purposes.\n @param newExchangeRate The number of underlying tokens per cToken, scaled to 1e18."},"functionSelector":"db068e0e","id":18597,"implemented":true,"kind":"function","modifiers":[],"name":"setExchangeRate","nodeType":"FunctionDefinition","parameters":{"id":18587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18586,"mutability":"mutable","name":"newExchangeRate","nodeType":"VariableDeclaration","scope":18597,"src":"3746:23:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18585,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3745:25:114"},"returnParameters":{"id":18588,"nodeType":"ParameterList","parameters":[],"src":"3780:0:114"},"scope":18598,"src":"3721:129:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18599,"src":"1018:2834:114"}],"src":"688:3165:114"},"id":114},"contracts/test/MockEulerProtocol.sol":{"ast":{"absolutePath":"contracts/test/MockEulerProtocol.sol","exportedSymbols":{"MockEulerProtocol":[18647]},"id":18648,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18600,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:115"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":18601,"nodeType":"ImportDirective","scope":18648,"sourceUnit":1723,"src":"713:87:115","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":18602,"nodeType":"ImportDirective","scope":18648,"sourceUnit":9108,"src":"802:79:115","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":18647,"linearizedBaseContracts":[18647],"name":"MockEulerProtocol","nodeType":"ContractDefinition","nodes":[{"id":18605,"libraryName":{"id":18603,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"922:9:115","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"916:27:115","typeName":{"id":18604,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"936:6:115","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"body":{"id":18627,"nodeType":"Block","src":"1077:86:115","statements":[{"expression":{"arguments":[{"id":18618,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18611,"src":"1123:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"components":[{"arguments":[{"id":18621,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1141:4:115","typeDescriptions":{"typeIdentifier":"t_contract$_MockEulerProtocol_$18647","typeString":"contract MockEulerProtocol"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockEulerProtocol_$18647","typeString":"contract MockEulerProtocol"}],"id":18620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1133:7:115","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18619,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:115","typeDescriptions":{}}},"id":18622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1133:13:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":18623,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1132:15:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18624,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18609,"src":"1149:6:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18615,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18607,"src":"1094:10:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18614,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1087:6:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:18:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"1087:35:115","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":18625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1087:69:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18626,"nodeType":"ExpressionStatement","src":"1087:69:115"}]},"functionSelector":"3d4216d9","id":18628,"implemented":true,"kind":"function","modifiers":[],"name":"requestUnderlyingFromRelayer","nodeType":"FunctionDefinition","parameters":{"id":18612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18607,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":18628,"src":"996:18:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18606,"name":"address","nodeType":"ElementaryTypeName","src":"996:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18609,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18628,"src":"1024:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18611,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":18628,"src":"1048:15:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18610,"name":"address","nodeType":"ElementaryTypeName","src":"1048:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"986:83:115"},"returnParameters":{"id":18613,"nodeType":"ParameterList","parameters":[],"src":"1077:0:115"},"scope":18647,"src":"949:214:115","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18645,"nodeType":"Block","src":"1292:65:115","statements":[{"expression":{"arguments":[{"id":18641,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18634,"src":"1334:7:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18642,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18632,"src":"1343:6:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18638,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18630,"src":"1309:10:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18637,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1302:6:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1302:18:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"1302:31:115","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1302:48:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18644,"nodeType":"ExpressionStatement","src":"1302:48:115"}]},"functionSelector":"d218fe88","id":18646,"implemented":true,"kind":"function","modifiers":[],"name":"sendUnderlyingToRelayer","nodeType":"FunctionDefinition","parameters":{"id":18635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18630,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":18646,"src":"1211:18:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18629,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18632,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18646,"src":"1239:14:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18634,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":18646,"src":"1263:15:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18633,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1201:83:115"},"returnParameters":{"id":18636,"nodeType":"ParameterList","parameters":[],"src":"1292:0:115"},"scope":18647,"src":"1169:188:115","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":18648,"src":"883:476:115"}],"src":"688:672:115"},"id":115},"contracts/test/MockEulerToken.sol":{"ast":{"absolutePath":"contracts/test/MockEulerToken.sol","exportedSymbols":{"MockEulerToken":[18838]},"id":18839,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18649,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:116"},{"absolutePath":"contracts/relayer/interfaces/IMockEulerProtocol.sol","file":"../relayer/interfaces/IMockEulerProtocol.sol","id":18650,"nodeType":"ImportDirective","scope":18839,"sourceUnit":17693,"src":"960:54:116","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol","id":18651,"nodeType":"ImportDirective","scope":18839,"sourceUnit":2148,"src":"1016:81:116","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":18652,"nodeType":"ImportDirective","scope":18839,"sourceUnit":1723,"src":"1098:87:116","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":18653,"nodeType":"ImportDirective","scope":18839,"sourceUnit":9289,"src":"1187:71:116","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":18654,"nodeType":"ImportDirective","scope":18839,"sourceUnit":5906,"src":"1259:72:116","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18656,"name":"IEulerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2147,"src":"1485:11:116","typeDescriptions":{"typeIdentifier":"t_contract$_IEulerToken_$2147","typeString":"contract IEulerToken"}},"id":18657,"nodeType":"InheritanceSpecifier","src":"1485:11:116"},{"baseName":{"id":18658,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1498:9:116","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":18659,"nodeType":"InheritanceSpecifier","src":"1498:9:116"}],"contractDependencies":[1520,1722,1758,2147,4860,7732,8223,8280,8389,9288],"contractKind":"contract","documentation":{"id":18655,"nodeType":"StructuredDocumentation","src":"1333:124:116","text":" @notice Allows users to to `deposit` into and `withdraw` from an eToken. The eToken\n serves as a receipt Token."},"fullyImplemented":true,"id":18838,"linearizedBaseContracts":[18838,9288,8389,4860,7732,1520,1758,8280,8223,2147,1722],"name":"MockEulerToken","nodeType":"ContractDefinition","nodes":[{"id":18662,"libraryName":{"id":18660,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1520:10:116","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1514:29:116","typeName":{"id":18661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1535:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"b176bd9e","id":18664,"mutability":"mutable","name":"exchangeRateMultiplier","nodeType":"VariableDeclaration","scope":18838,"src":"1549:37:116","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"id":18671,"mutability":"constant","name":"MAX_UINT256","nodeType":"VariableDeclaration","scope":18838,"src":"1656:56:116","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1656:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":18668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1700:7:116","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18667,"name":"uint256","nodeType":"ElementaryTypeName","src":"1700:7:116","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":18666,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1695:4:116","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1695:13:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":18670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1695:17:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"functionSelector":"42cfe0ac","id":18673,"mutability":"immutable","name":"EULER_PROTOCOL","nodeType":"VariableDeclaration","scope":18838,"src":"1770:50:116","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"},"typeName":{"id":18672,"name":"IMockEulerProtocol","nodeType":"UserDefinedTypeName","referencedDeclaration":17692,"src":"1770:18:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"visibility":"public"},{"constant":false,"id":18675,"mutability":"immutable","name":"_underlying","nodeType":"VariableDeclaration","scope":18838,"src":"1827:37:116","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18674,"name":"address","nodeType":"ElementaryTypeName","src":"1827:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":18706,"nodeType":"Block","src":"2075:130:116","statements":[{"expression":{"id":18696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18693,"name":"exchangeRateMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18664,"src":"2085:22:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":18694,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"2110:10:116","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$5905_$","typeString":"type(library FixedPoint)"}},"id":18695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"2110:14:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2085:39:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18697,"nodeType":"ExpressionStatement","src":"2085:39:116"},{"expression":{"id":18700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18698,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18675,"src":"2134:11:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18699,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18683,"src":"2148:10:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2134:24:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18701,"nodeType":"ExpressionStatement","src":"2134:24:116"},{"expression":{"id":18704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18702,"name":"EULER_PROTOCOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18673,"src":"2168:14:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18703,"name":"eulerProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18685,"src":"2185:13:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"src":"2168:30:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"id":18705,"nodeType":"ExpressionStatement","src":"2168:30:116"}]},"id":18707,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18688,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18677,"src":"2051:4:116","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18689,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18679,"src":"2057:6:116","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18690,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18681,"src":"2065:8:116","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":18691,"modifierName":{"id":18687,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"2041:9:116","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"2041:33:116"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18677,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":18707,"src":"1892:18:116","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18676,"name":"string","nodeType":"ElementaryTypeName","src":"1892:6:116","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18679,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":18707,"src":"1920:20:116","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18678,"name":"string","nodeType":"ElementaryTypeName","src":"1920:6:116","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18681,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":18707,"src":"1950:14:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18680,"name":"uint8","nodeType":"ElementaryTypeName","src":"1950:5:116","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18683,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":18707,"src":"1974:18:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18682,"name":"address","nodeType":"ElementaryTypeName","src":"1974:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18685,"mutability":"mutable","name":"eulerProtocol","nodeType":"VariableDeclaration","scope":18707,"src":"2002:32:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"},"typeName":{"id":18684,"name":"IMockEulerProtocol","nodeType":"UserDefinedTypeName","referencedDeclaration":17692,"src":"2002:18:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"visibility":"internal"}],"src":"1882:158:116"},"returnParameters":{"id":18692,"nodeType":"ParameterList","parameters":[],"src":"2075:0:116"},"scope":18838,"src":"1871:334:116","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2116],"body":{"id":18721,"nodeType":"Block","src":"2335:61:116","statements":[{"expression":{"arguments":[{"id":18718,"name":"exchangeRateMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18664,"src":"2366:22:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18716,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18710,"src":"2352:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":5667,"src":"2352:13:116","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2352:37:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18715,"id":18720,"nodeType":"Return","src":"2345:44:116"}]},"documentation":{"id":18708,"nodeType":"StructuredDocumentation","src":"2211:27:116","text":"@inheritdoc IEulerToken"},"functionSelector":"010ad6d1","id":18722,"implemented":true,"kind":"function","modifiers":[],"name":"convertBalanceToUnderlying","nodeType":"FunctionDefinition","overrides":{"id":18712,"nodeType":"OverrideSpecifier","overrides":[],"src":"2308:8:116"},"parameters":{"id":18711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18710,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":18722,"src":"2279:15:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18709,"name":"uint256","nodeType":"ElementaryTypeName","src":"2279:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2278:17:116"},"returnParameters":{"id":18715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18714,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18722,"src":"2326:7:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18713,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:9:116"},"scope":18838,"src":"2243:153:116","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":18731,"nodeType":"Block","src":"2479:65:116","statements":[{"expression":{"id":18729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18727,"name":"exchangeRateMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18664,"src":"2489:22:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18728,"name":"_exchangeRateMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18724,"src":"2514:23:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2489:48:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18730,"nodeType":"ExpressionStatement","src":"2489:48:116"}]},"functionSelector":"28c08285","id":18732,"implemented":true,"kind":"function","modifiers":[],"name":"setExchangeRateMultiplier","nodeType":"FunctionDefinition","parameters":{"id":18725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18724,"mutability":"mutable","name":"_exchangeRateMultiplier","nodeType":"VariableDeclaration","scope":18732,"src":"2437:31:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18723,"name":"uint256","nodeType":"ElementaryTypeName","src":"2437:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:33:116"},"returnParameters":{"id":18726,"nodeType":"ParameterList","parameters":[],"src":"2479:0:116"},"scope":18838,"src":"2402:142:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2124],"body":{"id":18746,"nodeType":"Block","src":"2674:63:116","statements":[{"expression":{"arguments":[{"id":18743,"name":"exchangeRateMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18664,"src":"2707:22:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18741,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18735,"src":"2691:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"2691:15:116","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":18744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:39:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18740,"id":18745,"nodeType":"Return","src":"2684:46:116"}]},"documentation":{"id":18733,"nodeType":"StructuredDocumentation","src":"2550:27:116","text":"@inheritdoc IEulerToken"},"functionSelector":"52eac8af","id":18747,"implemented":true,"kind":"function","modifiers":[],"name":"convertUnderlyingToBalance","nodeType":"FunctionDefinition","overrides":{"id":18737,"nodeType":"OverrideSpecifier","overrides":[],"src":"2647:8:116"},"parameters":{"id":18736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18735,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":18747,"src":"2618:15:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18734,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2617:17:116"},"returnParameters":{"id":18740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18739,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18747,"src":"2665:7:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18738,"name":"uint256","nodeType":"ElementaryTypeName","src":"2665:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2664:9:116"},"scope":18838,"src":"2582:155:116","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2146],"body":{"id":18756,"nodeType":"Block","src":"2843:35:116","statements":[{"expression":{"id":18754,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18675,"src":"2860:11:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18753,"id":18755,"nodeType":"Return","src":"2853:18:116"}]},"documentation":{"id":18748,"nodeType":"StructuredDocumentation","src":"2743:27:116","text":"@inheritdoc IEulerToken"},"functionSelector":"7158da7c","id":18757,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingAsset","nodeType":"FunctionDefinition","overrides":{"id":18750,"nodeType":"OverrideSpecifier","overrides":[],"src":"2816:8:116"},"parameters":{"id":18749,"nodeType":"ParameterList","parameters":[],"src":"2799:2:116"},"returnParameters":{"id":18753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18752,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18757,"src":"2834:7:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18751,"name":"address","nodeType":"ElementaryTypeName","src":"2834:7:116","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2833:9:116"},"scope":18838,"src":"2775:103:116","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2132],"body":{"id":18783,"nodeType":"Block","src":"2976:676:116","statements":[{"expression":{"arguments":[{"id":18769,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18675,"src":"3550:11:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18770,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18762,"src":"3563:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18771,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3571:3:116","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3571:10:116","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":18766,"name":"EULER_PROTOCOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18673,"src":"3506:14:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"id":18768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"requestUnderlyingFromRelayer","nodeType":"MemberAccess","referencedDeclaration":17681,"src":"3506:43:116","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) external"}},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3506:76:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18774,"nodeType":"ExpressionStatement","src":"3506:76:116"},{"expression":{"arguments":[{"expression":{"id":18776,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3598:3:116","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3598:10:116","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":18779,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18762,"src":"3637:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18778,"name":"convertUnderlyingToBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18747,"src":"3610:26:116","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3610:34:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18775,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"3592:5:116","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":18781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3592:53:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18782,"nodeType":"ExpressionStatement","src":"3592:53:116"}]},"documentation":{"id":18758,"nodeType":"StructuredDocumentation","src":"2884:27:116","text":"@inheritdoc IEulerToken"},"functionSelector":"e2bbb158","id":18784,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":18764,"nodeType":"OverrideSpecifier","overrides":[],"src":"2967:8:116"},"parameters":{"id":18763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18760,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18784,"src":"2933:7:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2933:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18762,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18784,"src":"2942:14:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18761,"name":"uint256","nodeType":"ElementaryTypeName","src":"2942:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2932:25:116"},"returnParameters":{"id":18765,"nodeType":"ParameterList","parameters":[],"src":"2976:0:116"},"scope":18838,"src":"2916:736:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2140],"body":{"id":18836,"nodeType":"Block","src":"3751:507:116","statements":[{"assignments":[18794],"declarations":[{"constant":false,"id":18794,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":18836,"src":"3761:21:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18793,"name":"uint256","nodeType":"ElementaryTypeName","src":"3761:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18795,"nodeType":"VariableDeclarationStatement","src":"3761:21:116"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18796,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18789,"src":"3797:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18797,"name":"MAX_UINT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18671,"src":"3807:11:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3797:21:116","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18819,"nodeType":"Block","src":"4053:75:116","statements":[{"expression":{"id":18817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18813,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18794,"src":"4067:13:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18789,"src":"4110:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18814,"name":"convertUnderlyingToBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18747,"src":"4083:26:116","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4083:34:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4067:50:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18818,"nodeType":"ExpressionStatement","src":"4067:50:116"}]},"id":18820,"nodeType":"IfStatement","src":"3793:335:116","trueBody":{"id":18812,"nodeType":"Block","src":"3820:227:116","statements":[{"expression":{"id":18804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18799,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18794,"src":"3935:13:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":18801,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3961:3:116","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3961:10:116","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":18800,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"3951:9:116","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":18803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3951:21:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3935:37:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18805,"nodeType":"ExpressionStatement","src":"3935:37:116"},{"expression":{"id":18810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18806,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18789,"src":"3986:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18808,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18794,"src":"4022:13:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18807,"name":"convertBalanceToUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18722,"src":"3995:26:116","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3995:41:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3986:50:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18811,"nodeType":"ExpressionStatement","src":"3986:50:116"}]}},{"expression":{"arguments":[{"id":18824,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18675,"src":"4177:11:116","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18825,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18789,"src":"4190:6:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18826,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4198:3:116","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4198:10:116","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":18821,"name":"EULER_PROTOCOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18673,"src":"4138:14:116","typeDescriptions":{"typeIdentifier":"t_contract$_IMockEulerProtocol_$17692","typeString":"contract IMockEulerProtocol"}},"id":18823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUnderlyingToRelayer","nodeType":"MemberAccess","referencedDeclaration":17691,"src":"4138:38:116","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) external"}},"id":18828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4138:71:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18829,"nodeType":"ExpressionStatement","src":"4138:71:116"},{"expression":{"arguments":[{"expression":{"id":18831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4225:3:116","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4225:10:116","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":18833,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18794,"src":"4237:13:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18830,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"4219:5:116","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":18834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:32:116","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18835,"nodeType":"ExpressionStatement","src":"4219:32:116"}]},"documentation":{"id":18785,"nodeType":"StructuredDocumentation","src":"3658:27:116","text":"@inheritdoc IEulerToken"},"functionSelector":"441a3e70","id":18837,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":18791,"nodeType":"OverrideSpecifier","overrides":[],"src":"3742:8:116"},"parameters":{"id":18790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18787,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18837,"src":"3708:7:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18786,"name":"uint256","nodeType":"ElementaryTypeName","src":"3708:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18789,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":18837,"src":"3717:14:116","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18788,"name":"uint256","nodeType":"ElementaryTypeName","src":"3717:7:116","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3707:25:116"},"returnParameters":{"id":18792,"nodeType":"ParameterList","parameters":[],"src":"3751:0:116"},"scope":18838,"src":"3690:568:116","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":18839,"src":"1458:2802:116"}],"src":"688:3573:116"},"id":116},"contracts/test/MockGearboxDieselToken.sol":{"ast":{"absolutePath":"contracts/test/MockGearboxDieselToken.sol","exportedSymbols":{"MockGearboxDieselToken":[18879]},"id":18880,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18840,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:117"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","id":18841,"nodeType":"ImportDirective","scope":18880,"sourceUnit":2207,"src":"756:89:117","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":18842,"nodeType":"ImportDirective","scope":18880,"sourceUnit":9289,"src":"847:71:117","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18843,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"955:9:117","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":18844,"nodeType":"InheritanceSpecifier","src":"955:9:117"},{"baseName":{"id":18845,"name":"IGearboxDieselToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2159,"src":"966:19:117","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxDieselToken_$2159","typeString":"contract IGearboxDieselToken"}},"id":18846,"nodeType":"InheritanceSpecifier","src":"966:19:117"}],"contractDependencies":[1520,1722,1758,2159,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":18879,"linearizedBaseContracts":[18879,2159,9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"MockGearboxDieselToken","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18848,"mutability":"immutable","name":"_gearboxVaultAddress","nodeType":"VariableDeclaration","scope":18879,"src":"992:46:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18847,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":18868,"nodeType":"Block","src":"1216:59:117","statements":[{"expression":{"id":18866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18864,"name":"_gearboxVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18848,"src":"1226:20:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18865,"name":"gearboxVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18856,"src":"1249:19:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1226:42:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18867,"nodeType":"ExpressionStatement","src":"1226:42:117"}]},"id":18869,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18859,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18850,"src":"1192:4:117","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18860,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18852,"src":"1198:6:117","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18861,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18854,"src":"1206:8:117","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":18862,"modifierName":{"id":18858,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1182:9:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1182:33:117"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18850,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":18869,"src":"1066:18:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18849,"name":"string","nodeType":"ElementaryTypeName","src":"1066:6:117","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18852,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":18869,"src":"1094:20:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18851,"name":"string","nodeType":"ElementaryTypeName","src":"1094:6:117","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18854,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":18869,"src":"1124:14:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18853,"name":"uint8","nodeType":"ElementaryTypeName","src":"1124:5:117","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":18856,"mutability":"mutable","name":"gearboxVaultAddress","nodeType":"VariableDeclaration","scope":18869,"src":"1148:27:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18855,"name":"address","nodeType":"ElementaryTypeName","src":"1148:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1056:125:117"},"returnParameters":{"id":18863,"nodeType":"ParameterList","parameters":[],"src":"1216:0:117"},"scope":18879,"src":"1045:230:117","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2158],"body":{"id":18877,"nodeType":"Block","src":"1339:44:117","statements":[{"expression":{"id":18875,"name":"_gearboxVaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18848,"src":"1356:20:117","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18874,"id":18876,"nodeType":"Return","src":"1349:27:117"}]},"functionSelector":"8da5cb5b","id":18878,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nodeType":"FunctionDefinition","overrides":{"id":18871,"nodeType":"OverrideSpecifier","overrides":[],"src":"1312:8:117"},"parameters":{"id":18870,"nodeType":"ParameterList","parameters":[],"src":"1295:2:117"},"returnParameters":{"id":18874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18873,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18878,"src":"1330:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18872,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:117","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1329:9:117"},"scope":18879,"src":"1281:102:117","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":18880,"src":"920:465:117"}],"src":"731:655:117"},"id":117},"contracts/test/MockGearboxVault.sol":{"ast":{"absolutePath":"contracts/test/MockGearboxVault.sol","exportedSymbols":{"MockGearboxVault":[19074]},"id":19075,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18881,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:118"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol","id":18882,"nodeType":"ImportDirective","scope":19075,"sourceUnit":2207,"src":"756:89:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":18883,"nodeType":"ImportDirective","scope":19075,"sourceUnit":9108,"src":"847:79:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":18884,"nodeType":"ImportDirective","scope":19075,"sourceUnit":5906,"src":"927:72:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":18885,"nodeType":"ImportDirective","scope":19075,"sourceUnit":9289,"src":"1000:71:118","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockGearboxDieselToken.sol","file":"./MockGearboxDieselToken.sol","id":18886,"nodeType":"ImportDirective","scope":19075,"sourceUnit":18880,"src":"1073:38:118","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18887,"name":"IGearboxVault","nodeType":"UserDefinedTypeName","referencedDeclaration":2206,"src":"1142:13:118","typeDescriptions":{"typeIdentifier":"t_contract$_IGearboxVault_$2206","typeString":"contract IGearboxVault"}},"id":18888,"nodeType":"InheritanceSpecifier","src":"1142:13:118"}],"contractDependencies":[2206],"contractKind":"contract","fullyImplemented":true,"id":19074,"linearizedBaseContracts":[19074,2206],"name":"MockGearboxVault","nodeType":"ContractDefinition","nodes":[{"id":18891,"libraryName":{"id":18889,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1168:9:118","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1162:27:118","typeName":{"id":18890,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1182:6:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":18894,"libraryName":{"id":18892,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1200:10:118","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1194:29:118","typeName":{"id":18893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1215:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":18897,"mutability":"immutable","name":"_rate","nodeType":"VariableDeclaration","scope":19074,"src":"1229:38:118","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18895,"name":"uint256","nodeType":"ElementaryTypeName","src":"1229:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653237","id":18896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1263:4:118","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"},"visibility":"private"},{"constant":false,"id":18899,"mutability":"mutable","name":"_dieselToken","nodeType":"VariableDeclaration","scope":19074,"src":"1273:43:118","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"},"typeName":{"id":18898,"name":"MockGearboxDieselToken","nodeType":"UserDefinedTypeName","referencedDeclaration":18879,"src":"1273:22:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"visibility":"private"},{"constant":false,"id":18901,"mutability":"immutable","name":"_underlyingToken","nodeType":"VariableDeclaration","scope":19074,"src":"1322:41:118","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":18900,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1322:6:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"private"},{"body":{"id":18912,"nodeType":"Block","src":"1428:66:118","statements":[{"expression":{"id":18910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18906,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18901,"src":"1438:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18908,"name":"underlyingTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18903,"src":"1464:22:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18907,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1457:6:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":18909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1457:30:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1438:49:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18911,"nodeType":"ExpressionStatement","src":"1438:49:118"}]},"id":18913,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":18904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18903,"mutability":"mutable","name":"underlyingTokenAddress","nodeType":"VariableDeclaration","scope":18913,"src":"1391:30:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18902,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1381:46:118"},"returnParameters":{"id":18905,"nodeType":"ParameterList","parameters":[],"src":"1428:0:118"},"scope":19074,"src":"1370:124:118","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18924,"nodeType":"Block","src":"1561:74:118","statements":[{"expression":{"id":18922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18918,"name":"_dieselToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18899,"src":"1571:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18920,"name":"dieselTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18915,"src":"1609:18:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18919,"name":"MockGearboxDieselToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18879,"src":"1586:22:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockGearboxDieselToken_$18879_$","typeString":"type(contract MockGearboxDieselToken)"}},"id":18921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1586:42:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"src":"1571:57:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"id":18923,"nodeType":"ExpressionStatement","src":"1571:57:118"}]},"functionSelector":"a245a295","id":18925,"implemented":true,"kind":"function","modifiers":[],"name":"setDieselToken","nodeType":"FunctionDefinition","parameters":{"id":18916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18915,"mutability":"mutable","name":"dieselTokenAddress","nodeType":"VariableDeclaration","scope":18925,"src":"1524:26:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18914,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1523:28:118"},"returnParameters":{"id":18917,"nodeType":"ParameterList","parameters":[],"src":"1561:0:118"},"scope":19074,"src":"1500:135:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2165],"body":{"id":18936,"nodeType":"Block","src":"1709:49:118","statements":[{"expression":{"arguments":[{"id":18933,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18901,"src":"1734:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":18932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1726:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18931,"name":"address","nodeType":"ElementaryTypeName","src":"1726:7:118","typeDescriptions":{}}},"id":18934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1726:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18930,"id":18935,"nodeType":"Return","src":"1719:32:118"}]},"functionSelector":"2495a599","id":18937,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingToken","nodeType":"FunctionDefinition","overrides":{"id":18927,"nodeType":"OverrideSpecifier","overrides":[],"src":"1682:8:118"},"parameters":{"id":18926,"nodeType":"ParameterList","parameters":[],"src":"1665:2:118"},"returnParameters":{"id":18930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18929,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18937,"src":"1700:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18928,"name":"address","nodeType":"ElementaryTypeName","src":"1700:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1699:9:118"},"scope":19074,"src":"1641:117:118","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2171],"body":{"id":18945,"nodeType":"Block","src":"1887:29:118","statements":[{"expression":{"id":18943,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18897,"src":"1904:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18942,"id":18944,"nodeType":"Return","src":"1897:12:118"}]},"functionSelector":"788c6bfe","id":18946,"implemented":true,"kind":"function","modifiers":[],"name":"getDieselRate_RAY","nodeType":"FunctionDefinition","overrides":{"id":18939,"nodeType":"OverrideSpecifier","overrides":[],"src":"1860:8:118"},"parameters":{"id":18938,"nodeType":"ParameterList","parameters":[],"src":"1843:2:118"},"returnParameters":{"id":18942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18941,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18946,"src":"1878:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1877:9:118"},"scope":19074,"src":"1817:99:118","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2179],"body":{"id":18958,"nodeType":"Block","src":"2005:49:118","statements":[{"expression":{"arguments":[{"id":18955,"name":"amountDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18948,"src":"2034:12:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18954,"name":"_fromDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19055,"src":"2022:11:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2022:25:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18953,"id":18957,"nodeType":"Return","src":"2015:32:118"}]},"functionSelector":"5427c938","id":18959,"implemented":true,"kind":"function","modifiers":[],"name":"fromDiesel","nodeType":"FunctionDefinition","overrides":{"id":18950,"nodeType":"OverrideSpecifier","overrides":[],"src":"1978:8:118"},"parameters":{"id":18949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18948,"mutability":"mutable","name":"amountDiesel","nodeType":"VariableDeclaration","scope":18959,"src":"1942:20:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18947,"name":"uint256","nodeType":"ElementaryTypeName","src":"1942:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1941:22:118"},"returnParameters":{"id":18953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18959,"src":"1996:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1996:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1995:9:118"},"scope":19074,"src":"1922:132:118","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2187],"body":{"id":18971,"nodeType":"Block","src":"2145:51:118","statements":[{"expression":{"arguments":[{"id":18968,"name":"amountUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18961,"src":"2172:16:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18967,"name":"_toDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19073,"src":"2162:9:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18966,"id":18970,"nodeType":"Return","src":"2155:34:118"}]},"functionSelector":"4d778ad1","id":18972,"implemented":true,"kind":"function","modifiers":[],"name":"toDiesel","nodeType":"FunctionDefinition","overrides":{"id":18963,"nodeType":"OverrideSpecifier","overrides":[],"src":"2118:8:118"},"parameters":{"id":18962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18961,"mutability":"mutable","name":"amountUnderlying","nodeType":"VariableDeclaration","scope":18972,"src":"2078:24:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18960,"name":"uint256","nodeType":"ElementaryTypeName","src":"2078:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2077:26:118"},"returnParameters":{"id":18966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18965,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":18972,"src":"2136:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18964,"name":"uint256","nodeType":"ElementaryTypeName","src":"2136:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2135:9:118"},"scope":19074,"src":"2060:136:118","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2197],"body":{"id":19007,"nodeType":"Block","src":"2317:190:118","statements":[{"expression":{"arguments":[{"expression":{"id":18985,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2361:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2361:10:118","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":18989,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2381:4:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxVault_$19074","typeString":"contract MockGearboxVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockGearboxVault_$19074","typeString":"contract MockGearboxVault"}],"id":18988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2373:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18987,"name":"address","nodeType":"ElementaryTypeName","src":"2373:7:118","typeDescriptions":{}}},"id":18990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2373:13:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18991,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18974,"src":"2388:6:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18982,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18901,"src":"2327:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":18984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"2327:33:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":18992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2327:68:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18993,"nodeType":"ExpressionStatement","src":"2327:68:118"},{"assignments":[18995],"declarations":[{"constant":false,"id":18995,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":19007,"src":"2405:21:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2405:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18999,"initialValue":{"arguments":[{"id":18997,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18974,"src":"2439:6:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18996,"name":"_toDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19073,"src":"2429:9:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":18998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:17:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2405:41:118"},{"expression":{"arguments":[{"id":19003,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18976,"src":"2474:10:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19004,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18995,"src":"2486:13:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19000,"name":"_dieselToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18899,"src":"2456:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"id":19002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":9274,"src":"2456:17:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:44:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19006,"nodeType":"ExpressionStatement","src":"2456:44:118"}]},"functionSelector":"9aa5d462","id":19008,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","overrides":{"id":18980,"nodeType":"OverrideSpecifier","overrides":[],"src":"2308:8:118"},"parameters":{"id":18979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18974,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19008,"src":"2233:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18973,"name":"uint256","nodeType":"ElementaryTypeName","src":"2233:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18976,"mutability":"mutable","name":"onBehalfOf","nodeType":"VariableDeclaration","scope":19008,"src":"2257:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18975,"name":"address","nodeType":"ElementaryTypeName","src":"2257:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19008,"src":"2285:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2285:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2223:75:118"},"returnParameters":{"id":18981,"nodeType":"ParameterList","parameters":[],"src":"2317:0:118"},"scope":19074,"src":"2202:305:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2205],"body":{"id":19037,"nodeType":"Block","src":"2591:189:118","statements":[{"expression":{"arguments":[{"expression":{"id":19019,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2635:3:118","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2635:10:118","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19021,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19010,"src":"2647:13:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19016,"name":"_dieselToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18899,"src":"2601:12:118","typeDescriptions":{"typeIdentifier":"t_contract$_MockGearboxDieselToken_$18879","typeString":"contract MockGearboxDieselToken"}},"id":19018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnWithoutAllowance","nodeType":"MemberAccess","referencedDeclaration":9287,"src":"2601:33:118","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2601:60:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19023,"nodeType":"ExpressionStatement","src":"2601:60:118"},{"assignments":[19025],"declarations":[{"constant":false,"id":19025,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":19037,"src":"2671:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19024,"name":"uint256","nodeType":"ElementaryTypeName","src":"2671:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19029,"initialValue":{"arguments":[{"id":19027,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19010,"src":"2704:13:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19026,"name":"_fromDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19055,"src":"2692:11:118","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":19028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2692:26:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2671:47:118"},{"expression":{"arguments":[{"id":19033,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19012,"src":"2758:2:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19034,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19025,"src":"2762:10:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19030,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18901,"src":"2728:16:118","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2728:29:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":19035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:45:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19036,"nodeType":"ExpressionStatement","src":"2728:45:118"}]},"functionSelector":"05fe138b","id":19038,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidity","nodeType":"FunctionDefinition","overrides":{"id":19014,"nodeType":"OverrideSpecifier","overrides":[],"src":"2582:8:118"},"parameters":{"id":19013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19010,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":19038,"src":"2538:21:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19009,"name":"uint256","nodeType":"ElementaryTypeName","src":"2538:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19012,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":19038,"src":"2561:10:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19011,"name":"address","nodeType":"ElementaryTypeName","src":"2561:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2537:35:118"},"returnParameters":{"id":19015,"nodeType":"ParameterList","parameters":[],"src":"2591:0:118"},"scope":19074,"src":"2513:267:118","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19054,"nodeType":"Block","src":"2860:59:118","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":19047,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18897,"src":"2898:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19045,"name":"amountDiesel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19040,"src":"2877:12:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"2877:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2877:27:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"id":19051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:2:118","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"39","id":19050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2911:1:118","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"2907:5:118","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"}},"src":"2877:35:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19044,"id":19053,"nodeType":"Return","src":"2870:42:118"}]},"id":19055,"implemented":true,"kind":"function","modifiers":[],"name":"_fromDiesel","nodeType":"FunctionDefinition","parameters":{"id":19041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19040,"mutability":"mutable","name":"amountDiesel","nodeType":"VariableDeclaration","scope":19055,"src":"2807:20:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19039,"name":"uint256","nodeType":"ElementaryTypeName","src":"2807:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2806:22:118"},"returnParameters":{"id":19044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19043,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19055,"src":"2851:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2851:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2850:9:118"},"scope":19074,"src":"2786:133:118","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":19072,"nodeType":"Block","src":"3001:65:118","statements":[{"expression":{"arguments":[{"id":19069,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18897,"src":"3053:5:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19062,"name":"amountUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19057,"src":"3019:16:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"},"id":19065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3038:2:118","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"39","id":19064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3042:1:118","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"3038:5:118","typeDescriptions":{"typeIdentifier":"t_rational_1000000000_by_1","typeString":"int_const 1000000000"}},"src":"3019:24:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3018:26:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"3018:34:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3018:41:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19061,"id":19071,"nodeType":"Return","src":"3011:48:118"}]},"id":19073,"implemented":true,"kind":"function","modifiers":[],"name":"_toDiesel","nodeType":"FunctionDefinition","parameters":{"id":19058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19057,"mutability":"mutable","name":"amountUnderlying","nodeType":"VariableDeclaration","scope":19073,"src":"2944:24:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19056,"name":"uint256","nodeType":"ElementaryTypeName","src":"2944:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2943:26:118"},"returnParameters":{"id":19061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19060,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19073,"src":"2992:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19059,"name":"uint256","nodeType":"ElementaryTypeName","src":"2992:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2991:9:118"},"scope":19074,"src":"2925:141:118","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":19075,"src":"1113:1955:118"}],"src":"731:2338:118"},"id":118},"contracts/test/MockReaperVault.sol":{"ast":{"absolutePath":"contracts/test/MockReaperVault.sol","exportedSymbols":{"MockReaperVault":[19199]},"id":19200,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19076,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:119"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":19077,"nodeType":"ImportDirective","scope":19200,"sourceUnit":9108,"src":"713:79:119","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":19078,"nodeType":"ImportDirective","scope":19200,"sourceUnit":9289,"src":"793:71:119","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19079,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1038:9:119","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":19080,"nodeType":"InheritanceSpecifier","src":"1038:9:119"}],"contractDependencies":[1520,1722,1758,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":19199,"linearizedBaseContracts":[19199,9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"MockReaperVault","nodeType":"ContractDefinition","nodes":[{"id":19083,"libraryName":{"id":19081,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1060:9:119","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1054:27:119","typeName":{"id":19082,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1074:6:119","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":false,"functionSelector":"fc0c546a","id":19085,"mutability":"immutable","name":"token","nodeType":"VariableDeclaration","scope":19199,"src":"1087:30:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19084,"name":"address","nodeType":"ElementaryTypeName","src":"1087:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":19087,"mutability":"mutable","name":"_pricePerFullShare","nodeType":"VariableDeclaration","scope":19199,"src":"1123:34:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19086,"name":"uint256","nodeType":"ElementaryTypeName","src":"1123:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":19113,"nodeType":"Block","src":"1363:85:119","statements":[{"expression":{"id":19107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19105,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19085,"src":"1373:5:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19106,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19095,"src":"1381:15:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1373:23:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19108,"nodeType":"ExpressionStatement","src":"1373:23:119"},{"expression":{"id":19111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19109,"name":"_pricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19087,"src":"1406:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19110,"name":"fullSharePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19097,"src":"1427:14:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1406:35:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19112,"nodeType":"ExpressionStatement","src":"1406:35:119"}]},"id":19114,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19100,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19089,"src":"1339:4:119","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19101,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19091,"src":"1345:6:119","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19102,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19093,"src":"1353:8:119","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":19103,"modifierName":{"id":19099,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1329:9:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1329:33:119"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19089,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19114,"src":"1185:18:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19088,"name":"string","nodeType":"ElementaryTypeName","src":"1185:6:119","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19091,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19114,"src":"1213:20:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19090,"name":"string","nodeType":"ElementaryTypeName","src":"1213:6:119","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19093,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":19114,"src":"1243:14:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19092,"name":"uint8","nodeType":"ElementaryTypeName","src":"1243:5:119","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19095,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":19114,"src":"1267:23:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19094,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19097,"mutability":"mutable","name":"fullSharePrice","nodeType":"VariableDeclaration","scope":19114,"src":"1300:22:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1300:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1175:153:119"},"returnParameters":{"id":19104,"nodeType":"ParameterList","parameters":[],"src":"1363:0:119"},"scope":19199,"src":"1164:284:119","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19121,"nodeType":"Block","src":"1518:42:119","statements":[{"expression":{"id":19119,"name":"_pricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19087,"src":"1535:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19118,"id":19120,"nodeType":"Return","src":"1528:25:119"}]},"functionSelector":"77c7b8fc","id":19122,"implemented":true,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":19115,"nodeType":"ParameterList","parameters":[],"src":"1483:2:119"},"returnParameters":{"id":19118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19117,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19122,"src":"1509:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1509:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:9:119"},"scope":19199,"src":"1454:106:119","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19131,"nodeType":"Block","src":"1634:59:119","statements":[{"expression":{"id":19129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19127,"name":"_pricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19087,"src":"1644:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19128,"name":"_newPricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19124,"src":"1665:21:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1644:42:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19130,"nodeType":"ExpressionStatement","src":"1644:42:119"}]},"functionSelector":"c3819fb6","id":19132,"implemented":true,"kind":"function","modifiers":[],"name":"setPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":19125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19124,"mutability":"mutable","name":"_newPricePerFullShare","nodeType":"VariableDeclaration","scope":19132,"src":"1596:29:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1596:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1595:31:119"},"returnParameters":{"id":19126,"nodeType":"ParameterList","parameters":[],"src":"1634:0:119"},"scope":19199,"src":"1566:127:119","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19166,"nodeType":"Block","src":"1740:196:119","statements":[{"expression":{"arguments":[{"expression":{"id":19141,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1781:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1781:10:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":19145,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1801:4:119","typeDescriptions":{"typeIdentifier":"t_contract$_MockReaperVault_$19199","typeString":"contract MockReaperVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReaperVault_$19199","typeString":"contract MockReaperVault"}],"id":19144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1793:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19143,"name":"address","nodeType":"ElementaryTypeName","src":"1793:7:119","typeDescriptions":{}}},"id":19146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1793:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19147,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19134,"src":"1808:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19138,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19085,"src":"1757:5:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19137,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1750:6:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":19139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"1750:30:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":19148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:66:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19149,"nodeType":"ExpressionStatement","src":"1750:66:119"},{"assignments":[19151],"declarations":[{"constant":false,"id":19151,"mutability":"mutable","name":"amountToMint","nodeType":"VariableDeclaration","scope":19166,"src":"1827:20:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19159,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19152,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19134,"src":"1850:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":19155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:2:119","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":19154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1864:2:119","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"1860:6:119","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"1850:16:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":19157,"name":"_pricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19087,"src":"1869:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1850:37:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1827:60:119"},{"expression":{"arguments":[{"expression":{"id":19161,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1904:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1904:10:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19163,"name":"amountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19151,"src":"1916:12:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19160,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1898:5:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":19164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1898:31:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19165,"nodeType":"ExpressionStatement","src":"1898:31:119"}]},"functionSelector":"b6b55f25","id":19167,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":19135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19134,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":19167,"src":"1716:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1715:17:119"},"returnParameters":{"id":19136,"nodeType":"ParameterList","parameters":[],"src":"1740:0:119"},"scope":19199,"src":"1699:237:119","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19197,"nodeType":"Block","src":"1984:181:119","statements":[{"expression":{"arguments":[{"expression":{"id":19173,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2000:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2000:10:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19175,"name":"_shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19169,"src":"2012:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19172,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"1994:5:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":19176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1994:26:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19177,"nodeType":"ExpressionStatement","src":"1994:26:119"},{"assignments":[19179],"declarations":[{"constant":false,"id":19179,"mutability":"mutable","name":"amountToReturn","nodeType":"VariableDeclaration","scope":19197,"src":"2031:22:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19178,"name":"uint256","nodeType":"ElementaryTypeName","src":"2031:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19187,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19180,"name":"_shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19169,"src":"2056:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":19181,"name":"_pricePerFullShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19087,"src":"2066:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2056:28:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":19185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":19183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2087:2:119","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":19184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2091:2:119","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2087:6:119","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"2056:37:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2031:62:119"},{"expression":{"arguments":[{"expression":{"id":19192,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2131:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2131:10:119","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19194,"name":"amountToReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19179,"src":"2143:14:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19189,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19085,"src":"2111:5:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19188,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2104:6:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":19190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:13:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2104:26:119","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":19195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2104:54:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19196,"nodeType":"ExpressionStatement","src":"2104:54:119"}]},"functionSelector":"2e1a7d4d","id":19198,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":19170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19169,"mutability":"mutable","name":"_shares","nodeType":"VariableDeclaration","scope":19198,"src":"1960:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19168,"name":"uint256","nodeType":"ElementaryTypeName","src":"1960:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1959:17:119"},"returnParameters":{"id":19171,"nodeType":"ParameterList","parameters":[],"src":"1984:0:119"},"scope":19199,"src":"1942:223:119","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":19200,"src":"1010:1157:119"}],"src":"688:1479:119"},"id":119},"contracts/test/MockRecoveryRateProviderPool.sol":{"ast":{"absolutePath":"contracts/test/MockRecoveryRateProviderPool.sol","exportedSymbols":{"MockRecoveryRateProviderPool":[19312]},"id":19313,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19201,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:120"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","id":19202,"nodeType":"ImportDirective","scope":19313,"sourceUnit":686,"src":"713:81:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":19203,"nodeType":"ImportDirective","scope":19313,"sourceUnit":3865,"src":"795:65:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","file":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","id":19204,"nodeType":"ImportDirective","scope":19313,"sourceUnit":3960,"src":"861:74:120","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","file":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","id":19205,"nodeType":"ImportDirective","scope":19313,"sourceUnit":4101,"src":"936:65:120","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19206,"name":"IRateProviderPool","nodeType":"UserDefinedTypeName","referencedDeclaration":685,"src":"1044:17:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProviderPool_$685","typeString":"contract IRateProviderPool"}},"id":19207,"nodeType":"InheritanceSpecifier","src":"1044:17:120"},{"baseName":{"id":19208,"name":"BasePoolAuthorization","nodeType":"UserDefinedTypeName","referencedDeclaration":3959,"src":"1063:21:120","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3959","typeString":"contract BasePoolAuthorization"}},"id":19209,"nodeType":"InheritanceSpecifier","src":"1063:21:120"},{"baseName":{"id":19210,"name":"RecoveryMode","nodeType":"UserDefinedTypeName","referencedDeclaration":4100,"src":"1086:12:120","typeDescriptions":{"typeIdentifier":"t_contract$_RecoveryMode_$4100","typeString":"contract RecoveryMode"}},"id":19211,"nodeType":"InheritanceSpecifier","src":"1086:12:120"}],"contractDependencies":[685,708,1502,3959,4100,4423],"contractKind":"contract","fullyImplemented":true,"id":19312,"linearizedBaseContracts":[19312,4100,3959,4423,1502,708,685],"name":"MockRecoveryRateProviderPool","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19213,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":19312,"src":"1105:31:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":19212,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1105:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":19215,"mutability":"mutable","name":"_recoveryMode","nodeType":"VariableDeclaration","scope":19312,"src":"1142:26:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19214,"name":"bool","nodeType":"ElementaryTypeName","src":"1142:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":19218,"mutability":"mutable","name":"_rateProviders","nodeType":"VariableDeclaration","scope":19312,"src":"1175:38:120","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":19216,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"1175:13:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":19217,"nodeType":"ArrayTypeName","src":"1175:15:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"private"},{"body":{"id":19252,"nodeType":"Block","src":"1419:71:120","statements":[{"expression":{"id":19246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19244,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19213,"src":"1429:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19245,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19220,"src":"1438:5:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"src":"1429:14:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":19247,"nodeType":"ExpressionStatement","src":"1429:14:120"},{"expression":{"id":19250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19248,"name":"_rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19218,"src":"1453:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19249,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19223,"src":"1470:13:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"src":"1453:30:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"id":19251,"nodeType":"ExpressionStatement","src":"1453:30:120"}]},"id":19253,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":19232,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1331:4:120","typeDescriptions":{"typeIdentifier":"t_contract$_MockRecoveryRateProviderPool_$19312","typeString":"contract MockRecoveryRateProviderPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockRecoveryRateProviderPool_$19312","typeString":"contract MockRecoveryRateProviderPool"}],"id":19231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1323:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19230,"name":"address","nodeType":"ElementaryTypeName","src":"1323:7:120","typeDescriptions":{}}},"id":19233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1323:13:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1315:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:120","typeDescriptions":{}}},"id":19234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1315:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:120","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":19226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1307:7:120","typeDescriptions":{}}},"id":19235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1307:31:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":19236,"modifierName":{"id":19225,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"1292:14:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$4423_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1292:47:120"},{"arguments":[{"id":19238,"name":"_DELEGATE_OWNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"1370:15:120","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19239,"modifierName":{"id":19237,"name":"BasePoolAuthorization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"1348:21:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolAuthorization_$3959_$","typeString":"type(contract BasePoolAuthorization)"}},"nodeType":"ModifierInvocation","src":"1348:38:120"},{"arguments":[{"id":19241,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19220,"src":"1408:5:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}}],"id":19242,"modifierName":{"id":19240,"name":"RecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4100,"src":"1395:12:120","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RecoveryMode_$4100_$","typeString":"type(contract RecoveryMode)"}},"nodeType":"ModifierInvocation","src":"1395:19:120"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19220,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":19253,"src":"1232:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":19219,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1232:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":19223,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":19253,"src":"1246:36:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":19221,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"1246:13:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":19222,"nodeType":"ArrayTypeName","src":"1246:15:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1231:52:120"},"returnParameters":{"id":19243,"nodeType":"ParameterList","parameters":[],"src":"1419:0:120"},"scope":19312,"src":"1220:270:120","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[684],"body":{"id":19262,"nodeType":"Block","src":"1606:38:120","statements":[{"expression":{"id":19260,"name":"_rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19218,"src":"1623:14:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"functionReturnParameters":19259,"id":19261,"nodeType":"Return","src":"1616:21:120"}]},"functionSelector":"238a2d59","id":19263,"implemented":true,"kind":"function","modifiers":[],"name":"getRateProviders","nodeType":"FunctionDefinition","overrides":{"id":19255,"nodeType":"OverrideSpecifier","overrides":[],"src":"1564:8:120"},"parameters":{"id":19254,"nodeType":"ParameterList","parameters":[],"src":"1547:2:120"},"returnParameters":{"id":19259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19258,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19263,"src":"1582:22:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":19256,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"1582:13:120","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":19257,"nodeType":"ArrayTypeName","src":"1582:15:120","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1581:24:120"},"scope":19312,"src":"1522:122:120","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3958],"body":{"id":19273,"nodeType":"Block","src":"1751:46:120","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19269,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19213,"src":"1768:6:120","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"id":19270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"1768:20:120","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$3166_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":19271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1768:22:120","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"functionReturnParameters":19268,"id":19272,"nodeType":"Return","src":"1761:29:120"}]},"id":19274,"implemented":true,"kind":"function","modifiers":[],"name":"_getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":19265,"nodeType":"OverrideSpecifier","overrides":[],"src":"1720:8:120"},"parameters":{"id":19264,"nodeType":"ParameterList","parameters":[],"src":"1703:2:120"},"returnParameters":{"id":19268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19267,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19274,"src":"1738:11:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"},"typeName":{"id":19266,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":3166,"src":"1738:11:120","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$3166","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1737:13:120"},"scope":19312,"src":"1680:117:120","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4043],"body":{"id":19282,"nodeType":"Block","src":"1887:37:120","statements":[{"expression":{"id":19280,"name":"_recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19215,"src":"1904:13:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":19279,"id":19281,"nodeType":"Return","src":"1897:20:120"}]},"functionSelector":"b35056b8","id":19283,"implemented":true,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":19276,"nodeType":"OverrideSpecifier","overrides":[],"src":"1863:8:120"},"parameters":{"id":19275,"nodeType":"ParameterList","parameters":[],"src":"1848:2:120"},"returnParameters":{"id":19279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19278,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19283,"src":"1881:4:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19277,"name":"bool","nodeType":"ElementaryTypeName","src":"1881:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1880:6:120"},"scope":19312,"src":"1825:99:120","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4049],"body":{"id":19293,"nodeType":"Block","src":"1988:40:120","statements":[{"expression":{"id":19291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19289,"name":"_recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19215,"src":"1998:13:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19290,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19285,"src":"2014:7:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1998:23:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19292,"nodeType":"ExpressionStatement","src":"1998:23:120"}]},"id":19294,"implemented":true,"kind":"function","modifiers":[],"name":"_setRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":19287,"nodeType":"OverrideSpecifier","overrides":[],"src":"1979:8:120"},"parameters":{"id":19286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19285,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":19294,"src":"1956:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19284,"name":"bool","nodeType":"ElementaryTypeName","src":"1956:4:120","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1955:14:120"},"returnParameters":{"id":19288,"nodeType":"ParameterList","parameters":[],"src":"1988:0:120"},"scope":19312,"src":"1930:98:120","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4090],"body":{"id":19310,"nodeType":"Block","src":"2188:2:120","statements":[]},"id":19311,"implemented":true,"kind":"function","modifiers":[],"name":"_doRecoveryModeExit","nodeType":"FunctionDefinition","overrides":{"id":19303,"nodeType":"OverrideSpecifier","overrides":[],"src":"2143:8:120"},"parameters":{"id":19302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19297,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2072:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19295,"name":"uint256","nodeType":"ElementaryTypeName","src":"2072:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19296,"nodeType":"ArrayTypeName","src":"2072:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":19299,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2098:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2098:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19301,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2115:12:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19300,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2062:71:120"},"returnParameters":{"id":19309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19305,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2161:7:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19304,"name":"uint256","nodeType":"ElementaryTypeName","src":"2161:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19308,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19311,"src":"2170:16:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19306,"name":"uint256","nodeType":"ElementaryTypeName","src":"2170:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19307,"nodeType":"ArrayTypeName","src":"2170:9:120","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2160:27:120"},"scope":19312,"src":"2034:156:120","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":19313,"src":"1003:1189:120"}],"src":"688:1505:120"},"id":120},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"ast":{"absolutePath":"contracts/test/MockRecoveryRateProviderPoolFactory.sol","exportedSymbols":{"MockRecoveryRateProviderPoolFactory":[19366]},"id":19367,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19314,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:121"},{"id":19315,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:121"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":19316,"nodeType":"ImportDirective","scope":19367,"sourceUnit":3865,"src":"747:65:121","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","file":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","id":19317,"nodeType":"ImportDirective","scope":19367,"sourceUnit":4255,"src":"813:78:121","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockRecoveryRateProviderPool.sol","file":"./MockRecoveryRateProviderPool.sol","id":19318,"nodeType":"ImportDirective","scope":19367,"sourceUnit":19313,"src":"892:44:121","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19319,"name":"BasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":4254,"src":"986:15:121","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolFactory_$4254","typeString":"contract BasePoolFactory"}},"id":19320,"nodeType":"InheritanceSpecifier","src":"986:15:121"}],"contractDependencies":[664,1502,4254,4346,4423,4647,5266,19312],"contractKind":"contract","fullyImplemented":true,"id":19366,"linearizedBaseContracts":[19366,4254,4346,5266,4423,4647,664,1502],"name":"MockRecoveryRateProviderPoolFactory","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":19323,"mutability":"constant","name":"_INITIAL_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":19366,"src":"1008:65:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1008:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3930","id":19322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1066:7:121","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_7776000_by_1","typeString":"int_const 7776000"},"value":"90"},"visibility":"private"},{"constant":true,"id":19326,"mutability":"constant","name":"_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":19366,"src":"1079:58:121","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19324,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3330","id":19325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:7:121","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"},"value":"30"},"visibility":"private"},{"body":{"id":19343,"nodeType":"Block","src":"1457:64:121","statements":[]},"id":19344,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19333,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19328,"src":"1261:6:121","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":19334,"name":"protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19330,"src":"1281:19:121","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},{"id":19335,"name":"_INITIAL_PAUSE_WINDOW_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19323,"src":"1314:30:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19336,"name":"_BUFFER_PERIOD_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19326,"src":"1358:23:121","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":19338,"name":"MockRecoveryRateProviderPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19312,"src":"1400:28:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockRecoveryRateProviderPool_$19312_$","typeString":"type(contract MockRecoveryRateProviderPool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_MockRecoveryRateProviderPool_$19312_$","typeString":"type(contract MockRecoveryRateProviderPool)"}],"id":19337,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1395:4:121","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1395:34:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_MockRecoveryRateProviderPool_$19312","typeString":"type(contract MockRecoveryRateProviderPool)"}},"id":19340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"creationCode","nodeType":"MemberAccess","src":"1395:47:121","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":19341,"modifierName":{"id":19332,"name":"BasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"1232:15:121","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolFactory_$4254_$","typeString":"type(contract BasePoolFactory)"}},"nodeType":"ModifierInvocation","src":"1232:220:121"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19328,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":19344,"src":"1156:13:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},"typeName":{"id":19327,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3864,"src":"1156:6:121","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":19330,"mutability":"mutable","name":"protocolFeeProvider","nodeType":"VariableDeclaration","scope":19344,"src":"1171:51:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":19329,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2287,"src":"1171:31:121","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2287","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"}],"src":"1155:68:121"},"returnParameters":{"id":19342,"nodeType":"ParameterList","parameters":[],"src":"1457:0:121"},"scope":19366,"src":"1144:377:121","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19364,"nodeType":"Block","src":"1622:76:121","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":19357,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"1658:8:121","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3864_$","typeString":"function () view returns (contract IVault)"}},"id":19358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1658:10:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"}},{"id":19359,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19347,"src":"1670:13:121","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3864","typeString":"contract IVault"},{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}],"expression":{"id":19355,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1647:3:121","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1647:10:121","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":19360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1647:37:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":19361,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19349,"src":"1686:4:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":19354,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[4253],"referencedDeclaration":4253,"src":"1639:7:121","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes memory,bytes32) returns (address)"}},"id":19362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1639:52:121","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19353,"id":19363,"nodeType":"Return","src":"1632:59:121"}]},"functionSelector":"4c848f73","id":19365,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":19350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19347,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":19365,"src":"1543:36:121","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":19345,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"1543:13:121","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":19346,"nodeType":"ArrayTypeName","src":"1543:15:121","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$673_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"},{"constant":false,"id":19349,"mutability":"mutable","name":"salt","nodeType":"VariableDeclaration","scope":19365,"src":"1581:12:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1581:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1542:52:121"},"returnParameters":{"id":19353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19352,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19365,"src":"1613:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19351,"name":"address","nodeType":"ElementaryTypeName","src":"1613:7:121","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1612:9:121"},"scope":19366,"src":"1527:171:121","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19367,"src":"938:762:121"}],"src":"688:1013:121"},"id":121},"contracts/test/MockRevertingRateProvider.sol":{"ast":{"absolutePath":"contracts/test/MockRevertingRateProvider.sol","exportedSymbols":{"MockRevertingRateProvider":[19416]},"id":19417,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19368,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:122"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","id":19369,"nodeType":"ImportDirective","scope":19417,"sourceUnit":674,"src":"713:77:122","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":19370,"nodeType":"ImportDirective","scope":19417,"sourceUnit":5906,"src":"791:72:122","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19371,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":673,"src":"903:13:122","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$673","typeString":"contract IRateProvider"}},"id":19372,"nodeType":"InheritanceSpecifier","src":"903:13:122"}],"contractDependencies":[673],"contractKind":"contract","fullyImplemented":true,"id":19416,"linearizedBaseContracts":[19416,673],"name":"MockRevertingRateProvider","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19374,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":19416,"src":"923:21:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19373,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":19376,"mutability":"mutable","name":"_revertOnGetRate","nodeType":"VariableDeclaration","scope":19416,"src":"951:29:122","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19375,"name":"bool","nodeType":"ElementaryTypeName","src":"951:4:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":19388,"nodeType":"Block","src":"1001:73:122","statements":[{"expression":{"id":19382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19379,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"1011:5:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":19380,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"1019:10:122","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$5905_$","typeString":"type(library FixedPoint)"}},"id":19381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"1019:14:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1011:22:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19383,"nodeType":"ExpressionStatement","src":"1011:22:122"},{"expression":{"id":19386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19384,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19376,"src":"1043:16:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":19385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1062:5:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1043:24:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19387,"nodeType":"ExpressionStatement","src":"1043:24:122"}]},"id":19389,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19377,"nodeType":"ParameterList","parameters":[],"src":"998:2:122"},"returnParameters":{"id":19378,"nodeType":"ParameterList","parameters":[],"src":"1001:0:122"},"scope":19416,"src":"987:87:122","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[672],"body":{"id":19404,"nodeType":"Block","src":"1140:110:122","statements":[{"condition":{"id":19395,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19376,"src":"1154:16:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19401,"nodeType":"IfStatement","src":"1150:71:122","trueBody":{"id":19400,"nodeType":"Block","src":"1172:49:122","statements":[{"expression":{"arguments":[{"hexValue":"6765745261746520726576657274","id":19397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1193:16:122","typeDescriptions":{"typeIdentifier":"t_stringliteral_0d239a9a30daef30be48bc0e769efc38ece123aa0c30f651096329746867f1e3","typeString":"literal_string \"getRate revert\""},"value":"getRate revert"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0d239a9a30daef30be48bc0e769efc38ece123aa0c30f651096329746867f1e3","typeString":"literal_string \"getRate revert\""}],"id":19396,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1186:6:122","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":19398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1186:24:122","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19399,"nodeType":"ExpressionStatement","src":"1186:24:122"}]}},{"expression":{"id":19402,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19374,"src":"1238:5:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19394,"id":19403,"nodeType":"Return","src":"1231:12:122"}]},"functionSelector":"679aefce","id":19405,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nodeType":"FunctionDefinition","overrides":{"id":19391,"nodeType":"OverrideSpecifier","overrides":[],"src":"1113:8:122"},"parameters":{"id":19390,"nodeType":"ParameterList","parameters":[],"src":"1096:2:122"},"returnParameters":{"id":19394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19393,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19405,"src":"1131:7:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1131:7:122","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1130:9:122"},"scope":19416,"src":"1080:170:122","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19414,"nodeType":"Block","src":"1315:51:122","statements":[{"expression":{"id":19412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19410,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19376,"src":"1325:16:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19411,"name":"revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19407,"src":"1344:15:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1325:34:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19413,"nodeType":"ExpressionStatement","src":"1325:34:122"}]},"functionSelector":"fa38825c","id":19415,"implemented":true,"kind":"function","modifiers":[],"name":"setRevertOnGetRate","nodeType":"FunctionDefinition","parameters":{"id":19408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19407,"mutability":"mutable","name":"revertOnGetRate","nodeType":"VariableDeclaration","scope":19415,"src":"1284:20:122","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19406,"name":"bool","nodeType":"ElementaryTypeName","src":"1284:4:122","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1283:22:122"},"returnParameters":{"id":19409,"nodeType":"ParameterList","parameters":[],"src":"1315:0:122"},"scope":19416,"src":"1256:110:122","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19417,"src":"865:503:122"}],"src":"688:681:122"},"id":122},"contracts/test/MockShareToken.sol":{"ast":{"absolutePath":"contracts/test/MockShareToken.sol","exportedSymbols":{"MockShareToken":[19478]},"id":19479,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19418,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:123"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","id":19419,"nodeType":"ImportDirective","scope":19479,"sourceUnit":2721,"src":"713:75:123","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol","id":19420,"nodeType":"ImportDirective","scope":19479,"sourceUnit":2662,"src":"789:81:123","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":19421,"nodeType":"ImportDirective","scope":19479,"sourceUnit":9289,"src":"872:71:123","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19422,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"972:9:123","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":19423,"nodeType":"InheritanceSpecifier","src":"972:9:123"},{"baseName":{"id":19424,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"983:11:123","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":19425,"nodeType":"InheritanceSpecifier","src":"983:11:123"}],"contractDependencies":[1520,1722,1758,2661,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":19478,"linearizedBaseContracts":[19478,2661,9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"MockShareToken","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19427,"mutability":"immutable","name":"_silo","nodeType":"VariableDeclaration","scope":19478,"src":"1001:29:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"},"typeName":{"id":19426,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"1001:5:123","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"visibility":"private"},{"constant":false,"id":19429,"mutability":"immutable","name":"_asset","nodeType":"VariableDeclaration","scope":19478,"src":"1036:32:123","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19428,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":19458,"nodeType":"Block","src":"1524:60:123","statements":[{"expression":{"id":19452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19448,"name":"_silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19427,"src":"1534:5:123","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19450,"name":"silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19438,"src":"1548:4:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19449,"name":"ISilo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"1542:5:123","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISilo_$2720_$","typeString":"type(contract ISilo)"}},"id":19451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1542:11:123","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"src":"1534:19:123","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"id":19453,"nodeType":"ExpressionStatement","src":"1534:19:123"},{"expression":{"id":19456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19454,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19429,"src":"1563:6:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19455,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19440,"src":"1572:5:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1563:14:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19457,"nodeType":"ExpressionStatement","src":"1563:14:123"}]},"documentation":{"id":19430,"nodeType":"StructuredDocumentation","src":"1075:265:123","text":" @dev Token is always deployed for specific Silo and asset\n @param name token name\n @param symbol token symbol\n @param silo Silo address at which tokens were deployed\n @param asset Asset for which these tokens were deployed"},"id":19459,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19443,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19432,"src":"1500:4:123","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19444,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19434,"src":"1506:6:123","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19445,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19436,"src":"1514:8:123","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":19446,"modifierName":{"id":19442,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1490:9:123","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1490:33:123"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19432,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19459,"src":"1366:18:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19431,"name":"string","nodeType":"ElementaryTypeName","src":"1366:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19434,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19459,"src":"1394:20:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19433,"name":"string","nodeType":"ElementaryTypeName","src":"1394:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19436,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":19459,"src":"1424:14:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19435,"name":"uint8","nodeType":"ElementaryTypeName","src":"1424:5:123","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19438,"mutability":"mutable","name":"silo","nodeType":"VariableDeclaration","scope":19459,"src":"1448:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19437,"name":"address","nodeType":"ElementaryTypeName","src":"1448:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19440,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":19459,"src":"1470:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19439,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1356:133:123"},"returnParameters":{"id":19447,"nodeType":"ParameterList","parameters":[],"src":"1524:0:123"},"scope":19478,"src":"1345:239:123","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2654],"body":{"id":19467,"nodeType":"Block","src":"1648:30:123","statements":[{"expression":{"id":19465,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19429,"src":"1665:6:123","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19464,"id":19466,"nodeType":"Return","src":"1658:13:123"}]},"functionSelector":"38d52e0f","id":19468,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nodeType":"FunctionDefinition","overrides":{"id":19461,"nodeType":"OverrideSpecifier","overrides":[],"src":"1621:8:123"},"parameters":{"id":19460,"nodeType":"ParameterList","parameters":[],"src":"1604:2:123"},"returnParameters":{"id":19464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19463,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19468,"src":"1639:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19462,"name":"address","nodeType":"ElementaryTypeName","src":"1639:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1638:9:123"},"scope":19478,"src":"1590:88:123","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2660],"body":{"id":19476,"nodeType":"Block","src":"1739:29:123","statements":[{"expression":{"id":19474,"name":"_silo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19427,"src":"1756:5:123","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"functionReturnParameters":19473,"id":19475,"nodeType":"Return","src":"1749:12:123"}]},"functionSelector":"eb3beb29","id":19477,"implemented":true,"kind":"function","modifiers":[],"name":"silo","nodeType":"FunctionDefinition","overrides":{"id":19470,"nodeType":"OverrideSpecifier","overrides":[],"src":"1714:8:123"},"parameters":{"id":19469,"nodeType":"ParameterList","parameters":[],"src":"1697:2:123"},"returnParameters":{"id":19473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19472,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19477,"src":"1732:5:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"},"typeName":{"id":19471,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"1732:5:123","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"visibility":"internal"}],"src":"1731:7:123"},"scope":19478,"src":"1684:84:123","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":19479,"src":"945:825:123"}],"src":"688:1083:123"},"id":123},"contracts/test/MockSilo.sol":{"ast":{"absolutePath":"contracts/test/MockSilo.sol","exportedSymbols":{"MockBaseSilo":[19552],"MockSilo":[19755]},"id":19756,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19480,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:124"},{"id":19481,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:124"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol","id":19482,"nodeType":"ImportDirective","scope":19756,"sourceUnit":2721,"src":"747:75:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":19483,"nodeType":"ImportDirective","scope":19756,"sourceUnit":5906,"src":"824:72:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":19484,"nodeType":"ImportDirective","scope":19756,"sourceUnit":9108,"src":"897:79:124","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockShareToken.sol","file":"./MockShareToken.sol","id":19485,"nodeType":"ImportDirective","scope":19756,"sourceUnit":19479,"src":"978:30:124","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19486,"name":"IBaseSilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2687,"src":"1035:9:124","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseSilo_$2687","typeString":"contract IBaseSilo"}},"id":19487,"nodeType":"InheritanceSpecifier","src":"1035:9:124"}],"contractDependencies":[2687],"contractKind":"contract","fullyImplemented":true,"id":19552,"linearizedBaseContracts":[19552,2687],"name":"MockBaseSilo","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":19489,"mutability":"immutable","name":"_siloAsset","nodeType":"VariableDeclaration","scope":19552,"src":"1051:36:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19488,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":19493,"mutability":"mutable","name":"_assetStorage","nodeType":"VariableDeclaration","scope":19552,"src":"1093:55:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage)"},"typeName":{"id":19492,"keyType":{"id":19490,"name":"address","nodeType":"ElementaryTypeName","src":"1101:7:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1093:32:124","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage)"},"valueType":{"id":19491,"name":"AssetStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":2678,"src":"1112:12:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage_ptr","typeString":"struct IBaseSilo.AssetStorage"}}},"visibility":"internal"},{"body":{"id":19502,"nodeType":"Block","src":"1186:39:124","statements":[{"expression":{"id":19500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19498,"name":"_siloAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19489,"src":"1196:10:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19499,"name":"siloAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19495,"src":"1209:9:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1196:22:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19501,"nodeType":"ExpressionStatement","src":"1196:22:124"}]},"id":19503,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19495,"mutability":"mutable","name":"siloAsset","nodeType":"VariableDeclaration","scope":19503,"src":"1167:17:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19494,"name":"address","nodeType":"ElementaryTypeName","src":"1167:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1166:19:124"},"returnParameters":{"id":19497,"nodeType":"ParameterList","parameters":[],"src":"1186:0:124"},"scope":19552,"src":"1155:70:124","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2686],"body":{"id":19515,"nodeType":"Block","src":"1322:45:124","statements":[{"expression":{"baseExpression":{"id":19511,"name":"_assetStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"1339:13:124","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage storage ref)"}},"id":19513,"indexExpression":{"id":19512,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19505,"src":"1353:6:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1339:21:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage","typeString":"struct IBaseSilo.AssetStorage storage ref"}},"functionReturnParameters":19510,"id":19514,"nodeType":"Return","src":"1332:28:124"}]},"functionSelector":"bf273041","id":19516,"implemented":true,"kind":"function","modifiers":[],"name":"assetStorage","nodeType":"FunctionDefinition","overrides":{"id":19507,"nodeType":"OverrideSpecifier","overrides":[],"src":"1283:8:124"},"parameters":{"id":19506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19505,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":19516,"src":"1253:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19504,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1252:16:124"},"returnParameters":{"id":19510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19509,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19516,"src":"1301:19:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_memory_ptr","typeString":"struct IBaseSilo.AssetStorage"},"typeName":{"id":19508,"name":"AssetStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":2678,"src":"1301:12:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage_ptr","typeString":"struct IBaseSilo.AssetStorage"}},"visibility":"internal"}],"src":"1300:21:124"},"scope":19552,"src":"1231:136:124","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":19550,"nodeType":"Block","src":"1666:314:124","statements":[{"assignments":[19534],"declarations":[{"constant":false,"id":19534,"mutability":"mutable","name":"storageValue","nodeType":"VariableDeclaration","scope":19550,"src":"1676:32:124","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_memory_ptr","typeString":"struct IBaseSilo.AssetStorage"},"typeName":{"id":19533,"name":"AssetStorage","nodeType":"UserDefinedTypeName","referencedDeclaration":2678,"src":"1676:12:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage_ptr","typeString":"struct IBaseSilo.AssetStorage"}},"visibility":"internal"}],"id":19543,"initialValue":{"arguments":[{"id":19536,"name":"collateralToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"1737:15:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},{"id":19537,"name":"collateralOnlyToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19522,"src":"1766:19:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},{"id":19538,"name":"debtToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"1799:9:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},{"id":19539,"name":"totalDeposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19526,"src":"1822:13:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19540,"name":"collateralOnlyDeposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19528,"src":"1849:22:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19541,"name":"totalBorrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19530,"src":"1885:17:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19535,"name":"AssetStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2678,"src":"1711:12:124","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AssetStorage_$2678_storage_ptr_$","typeString":"type(struct IBaseSilo.AssetStorage storage pointer)"}},"id":19542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1711:201:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_memory_ptr","typeString":"struct IBaseSilo.AssetStorage memory"}},"nodeType":"VariableDeclarationStatement","src":"1676:236:124"},{"expression":{"id":19548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19544,"name":"_assetStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"1923:13:124","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage storage ref)"}},"id":19546,"indexExpression":{"id":19545,"name":"interestBearingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19518,"src":"1937:20:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1923:35:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage","typeString":"struct IBaseSilo.AssetStorage storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19547,"name":"storageValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19534,"src":"1961:12:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_memory_ptr","typeString":"struct IBaseSilo.AssetStorage memory"}},"src":"1923:50:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage","typeString":"struct IBaseSilo.AssetStorage storage ref"}},"id":19549,"nodeType":"ExpressionStatement","src":"1923:50:124"}]},"functionSelector":"686196d0","id":19551,"implemented":true,"kind":"function","modifiers":[],"name":"setAssetStorage","nodeType":"FunctionDefinition","parameters":{"id":19531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19518,"mutability":"mutable","name":"interestBearingAsset","nodeType":"VariableDeclaration","scope":19551,"src":"1407:28:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19517,"name":"address","nodeType":"ElementaryTypeName","src":"1407:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19520,"mutability":"mutable","name":"collateralToken","nodeType":"VariableDeclaration","scope":19551,"src":"1445:27:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":19519,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1445:11:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":19522,"mutability":"mutable","name":"collateralOnlyToken","nodeType":"VariableDeclaration","scope":19551,"src":"1482:31:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":19521,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1482:11:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":19524,"mutability":"mutable","name":"debtToken","nodeType":"VariableDeclaration","scope":19551,"src":"1523:21:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"},"typeName":{"id":19523,"name":"IShareToken","nodeType":"UserDefinedTypeName","referencedDeclaration":2661,"src":"1523:11:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"visibility":"internal"},{"constant":false,"id":19526,"mutability":"mutable","name":"totalDeposits","nodeType":"VariableDeclaration","scope":19551,"src":"1554:21:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19528,"mutability":"mutable","name":"collateralOnlyDeposits","nodeType":"VariableDeclaration","scope":19551,"src":"1585:30:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19527,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19530,"mutability":"mutable","name":"totalBorrowAmount","nodeType":"VariableDeclaration","scope":19551,"src":"1625:25:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19529,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1397:259:124"},"returnParameters":{"id":19532,"nodeType":"ParameterList","parameters":[],"src":"1666:0:124"},"scope":19552,"src":"1373:607:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":19756,"src":"1010:972:124"},{"abstract":false,"baseContracts":[{"baseName":{"id":19553,"name":"ISilo","nodeType":"UserDefinedTypeName","referencedDeclaration":2720,"src":"2005:5:124","typeDescriptions":{"typeIdentifier":"t_contract$_ISilo_$2720","typeString":"contract ISilo"}},"id":19554,"nodeType":"InheritanceSpecifier","src":"2005:5:124"},{"baseName":{"id":19555,"name":"MockBaseSilo","nodeType":"UserDefinedTypeName","referencedDeclaration":19552,"src":"2012:12:124","typeDescriptions":{"typeIdentifier":"t_contract$_MockBaseSilo_$19552","typeString":"contract MockBaseSilo"}},"id":19556,"nodeType":"InheritanceSpecifier","src":"2012:12:124"}],"contractDependencies":[2687,2720,19552],"contractKind":"contract","fullyImplemented":true,"id":19755,"linearizedBaseContracts":[19755,19552,2720,2687],"name":"MockSilo","nodeType":"ContractDefinition","nodes":[{"id":19559,"libraryName":{"id":19557,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"2037:9:124","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"2031:27:124","typeName":{"id":19558,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"2051:6:124","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":19562,"libraryName":{"id":19560,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"2069:10:124","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2063:29:124","typeName":{"id":19561,"name":"uint256","nodeType":"ElementaryTypeName","src":"2084:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"2c4e722e","id":19564,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":19755,"src":"2098:19:124","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19563,"name":"uint256","nodeType":"ElementaryTypeName","src":"2098:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":19577,"nodeType":"Block","src":"2181:38:124","statements":[{"expression":{"id":19575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19572,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19564,"src":"2191:4:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":19573,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"2198:10:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$5905_$","typeString":"type(library FixedPoint)"}},"id":19574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TWO","nodeType":"MemberAccess","referencedDeclaration":5539,"src":"2198:14:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2191:21:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19576,"nodeType":"ExpressionStatement","src":"2191:21:124"}]},"id":19578,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19569,"name":"_siloAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19566,"src":"2169:10:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19570,"modifierName":{"id":19568,"name":"MockBaseSilo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19552,"src":"2156:12:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockBaseSilo_$19552_$","typeString":"type(contract MockBaseSilo)"}},"nodeType":"ModifierInvocation","src":"2156:24:124"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19566,"mutability":"mutable","name":"_siloAsset","nodeType":"VariableDeclaration","scope":19578,"src":"2136:18:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19565,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2135:20:124"},"returnParameters":{"id":19571,"nodeType":"ParameterList","parameters":[],"src":"2181:0:124"},"scope":19755,"src":"2124:95:124","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2705],"body":{"id":19635,"nodeType":"Block","src":"2440:324:124","statements":[{"expression":{"arguments":[{"expression":{"id":19598,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2482:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2482:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":19602,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2502:4:124","typeDescriptions":{"typeIdentifier":"t_contract$_MockSilo_$19755","typeString":"contract MockSilo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockSilo_$19755","typeString":"contract MockSilo"}],"id":19601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2494:7:124","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19600,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:124","typeDescriptions":{}}},"id":19603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:13:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19604,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19584,"src":"2509:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19595,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19580,"src":"2457:6:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19594,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2450:6:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":19596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2450:14:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"2450:31:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":19605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2450:67:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19606,"nodeType":"ExpressionStatement","src":"2450:67:124"},{"assignments":[19608],"declarations":[{"constant":false,"id":19608,"mutability":"mutable","name":"shareTokenAddress","nodeType":"VariableDeclaration","scope":19635,"src":"2527:25:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19607,"name":"address","nodeType":"ElementaryTypeName","src":"2527:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19616,"initialValue":{"arguments":[{"expression":{"baseExpression":{"id":19611,"name":"_assetStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"2563:13:124","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage storage ref)"}},"id":19613,"indexExpression":{"id":19612,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19580,"src":"2577:6:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2563:21:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage","typeString":"struct IBaseSilo.AssetStorage storage ref"}},"id":19614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralToken","nodeType":"MemberAccess","referencedDeclaration":2667,"src":"2563:37:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}],"id":19610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2555:7:124","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19609,"name":"address","nodeType":"ElementaryTypeName","src":"2555:7:124","typeDescriptions":{}}},"id":19615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2555:46:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2527:74:124"},{"assignments":[19618],"declarations":[{"constant":false,"id":19618,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":19635,"src":"2611:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19617,"name":"uint256","nodeType":"ElementaryTypeName","src":"2611:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19622,"initialValue":{"arguments":[{"id":19620,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19584,"src":"2647:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19619,"name":"underlyingToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"2628:18:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":19621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2628:27:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2611:44:124"},{"expression":{"arguments":[{"id":19627,"name":"_depositor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19582,"src":"2704:10:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19628,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19618,"src":"2716:6:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19624,"name":"shareTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19608,"src":"2680:17:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19623,"name":"MockShareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19478,"src":"2665:14:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockShareToken_$19478_$","typeString":"type(contract MockShareToken)"}},"id":19625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2665:33:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockShareToken_$19478","typeString":"contract MockShareToken"}},"id":19626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":9274,"src":"2665:38:124","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2665:58:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19630,"nodeType":"ExpressionStatement","src":"2665:58:124"},{"expression":{"components":[{"id":19631,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19584,"src":"2741:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19632,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19618,"src":"2750:6:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2740:17:124","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":19593,"id":19634,"nodeType":"Return","src":"2733:24:124"}]},"functionSelector":"fbf178db","id":19636,"implemented":true,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","overrides":{"id":19588,"nodeType":"OverrideSpecifier","overrides":[],"src":"2371:8:124"},"parameters":{"id":19587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19580,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":19636,"src":"2254:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19579,"name":"address","nodeType":"ElementaryTypeName","src":"2254:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19582,"mutability":"mutable","name":"_depositor","nodeType":"VariableDeclaration","scope":19636,"src":"2278:18:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19581,"name":"address","nodeType":"ElementaryTypeName","src":"2278:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19584,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":19636,"src":"2306:15:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19583,"name":"uint256","nodeType":"ElementaryTypeName","src":"2306:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19636,"src":"2331:4:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19585,"name":"bool","nodeType":"ElementaryTypeName","src":"2331:4:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2244:117:124"},"returnParameters":{"id":19593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19590,"mutability":"mutable","name":"collateralAmount","nodeType":"VariableDeclaration","scope":19636,"src":"2389:24:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2389:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19592,"mutability":"mutable","name":"collateralShare","nodeType":"VariableDeclaration","scope":19636,"src":"2415:23:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19591,"name":"uint256","nodeType":"ElementaryTypeName","src":"2415:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2388:51:124"},"scope":19755,"src":"2225:539:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2719],"body":{"id":19717,"nodeType":"Block","src":"2953:677:124","statements":[{"assignments":[19651],"declarations":[{"constant":false,"id":19651,"mutability":"mutable","name":"shareTokenAddress","nodeType":"VariableDeclaration","scope":19717,"src":"2963:25:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19650,"name":"address","nodeType":"ElementaryTypeName","src":"2963:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":19659,"initialValue":{"arguments":[{"expression":{"baseExpression":{"id":19654,"name":"_assetStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19493,"src":"2999:13:124","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetStorage_$2678_storage_$","typeString":"mapping(address => struct IBaseSilo.AssetStorage storage ref)"}},"id":19656,"indexExpression":{"id":19655,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19638,"src":"3013:6:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2999:21:124","typeDescriptions":{"typeIdentifier":"t_struct$_AssetStorage_$2678_storage","typeString":"struct IBaseSilo.AssetStorage storage ref"}},"id":19657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"collateralToken","nodeType":"MemberAccess","referencedDeclaration":2667,"src":"2999:37:124","typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}],"id":19653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2991:7:124","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19652,"name":"address","nodeType":"ElementaryTypeName","src":"2991:7:124","typeDescriptions":{}}},"id":19658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:46:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2963:74:124"},{"assignments":[19661],"declarations":[{"constant":false,"id":19661,"mutability":"mutable","name":"burnedShare","nodeType":"VariableDeclaration","scope":19717,"src":"3047:19:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19660,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19662,"nodeType":"VariableDeclarationStatement","src":"3047:19:124"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19663,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19640,"src":"3190:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":19666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3206:7:124","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19665,"name":"uint256","nodeType":"ElementaryTypeName","src":"3206:7:124","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":19664,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3201:4:124","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3201:13:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":19668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"3201:17:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3190:28:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19693,"nodeType":"Block","src":"3372:66:124","statements":[{"expression":{"id":19691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19687,"name":"burnedShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"3386:11:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19689,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19640,"src":"3419:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19688,"name":"underlyingToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19754,"src":"3400:18:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":19690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3400:27:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3386:41:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19692,"nodeType":"ExpressionStatement","src":"3386:41:124"}]},"id":19694,"nodeType":"IfStatement","src":"3186:252:124","trueBody":{"id":19686,"nodeType":"Block","src":"3220:146:124","statements":[{"expression":{"id":19678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19670,"name":"burnedShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"3234:11:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":19675,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3289:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3289:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":19672,"name":"shareTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19651,"src":"3260:17:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19671,"name":"IShareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"3248:11:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IShareToken_$2661_$","typeString":"type(contract IShareToken)"}},"id":19673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3248:30:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IShareToken_$2661","typeString":"contract IShareToken"}},"id":19674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"3248:40:124","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3248:52:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3234:66:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19679,"nodeType":"ExpressionStatement","src":"3234:66:124"},{"expression":{"id":19684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19680,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19640,"src":"3314:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19682,"name":"burnedShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"3343:11:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19681,"name":"sharesToUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19741,"src":"3324:18:124","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":19683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3324:31:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3314:41:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19685,"nodeType":"ExpressionStatement","src":"3314:41:124"}]}},{"expression":{"arguments":[{"expression":{"id":19699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3502:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3502:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19701,"name":"burnedShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"3514:11:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19696,"name":"shareTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19651,"src":"3462:17:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19695,"name":"MockShareToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19478,"src":"3447:14:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockShareToken_$19478_$","typeString":"type(contract MockShareToken)"}},"id":19697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3447:33:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_MockShareToken_$19478","typeString":"contract MockShareToken"}},"id":19698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnWithoutAllowance","nodeType":"MemberAccess","referencedDeclaration":9287,"src":"3447:54:124","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":19702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3447:79:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19703,"nodeType":"ExpressionStatement","src":"3447:79:124"},{"expression":{"arguments":[{"expression":{"id":19708,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3564:3:124","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3564:10:124","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19710,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19640,"src":"3576:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":19705,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19638,"src":"3543:6:124","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19704,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"3536:6:124","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":19706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3536:14:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"3536:27:124","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":19711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3536:48:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19712,"nodeType":"ExpressionStatement","src":"3536:48:124"},{"expression":{"components":[{"id":19713,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19640,"src":"3602:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19714,"name":"burnedShare","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19661,"src":"3611:11:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19715,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3601:22:124","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":19649,"id":19716,"nodeType":"Return","src":"3594:29:124"}]},"functionSelector":"ead5d359","id":19718,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":19644,"nodeType":"OverrideSpecifier","overrides":[],"src":"2886:8:124"},"parameters":{"id":19643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19638,"mutability":"mutable","name":"_asset","nodeType":"VariableDeclaration","scope":19718,"src":"2797:14:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19637,"name":"address","nodeType":"ElementaryTypeName","src":"2797:7:124","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19640,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":19718,"src":"2821:15:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19642,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19718,"src":"2846:4:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19641,"name":"bool","nodeType":"ElementaryTypeName","src":"2846:4:124","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2787:89:124"},"returnParameters":{"id":19649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19646,"mutability":"mutable","name":"withdrawnAmount","nodeType":"VariableDeclaration","scope":19718,"src":"2904:23:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2904:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19648,"mutability":"mutable","name":"withdrawnShare","nodeType":"VariableDeclaration","scope":19718,"src":"2929:22:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2929:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2903:49:124"},"scope":19755,"src":"2770:860:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19727,"nodeType":"Block","src":"3677:29:124","statements":[{"expression":{"id":19725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19723,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19564,"src":"3687:4:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19724,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19720,"src":"3694:5:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3687:12:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19726,"nodeType":"ExpressionStatement","src":"3687:12:124"}]},"functionSelector":"34fcf437","id":19728,"implemented":true,"kind":"function","modifiers":[],"name":"setRate","nodeType":"FunctionDefinition","parameters":{"id":19721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19720,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":19728,"src":"3653:13:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19719,"name":"uint256","nodeType":"ElementaryTypeName","src":"3653:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3652:15:124"},"returnParameters":{"id":19722,"nodeType":"ParameterList","parameters":[],"src":"3677:0:124"},"scope":19755,"src":"3636:70:124","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19740,"nodeType":"Block","src":"3787:45:124","statements":[{"expression":{"arguments":[{"id":19737,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19564,"src":"3820:4:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19735,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19730,"src":"3804:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"3804:15:124","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3804:21:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19734,"id":19739,"nodeType":"Return","src":"3797:28:124"}]},"functionSelector":"f3e73875","id":19741,"implemented":true,"kind":"function","modifiers":[],"name":"sharesToUnderlying","nodeType":"FunctionDefinition","parameters":{"id":19731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19730,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":19741,"src":"3740:15:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3740:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3739:17:124"},"returnParameters":{"id":19734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19733,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19741,"src":"3778:7:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19732,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3777:9:124"},"scope":19755,"src":"3712:120:124","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19753,"nodeType":"Block","src":"3913:45:124","statements":[{"expression":{"arguments":[{"id":19750,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19564,"src":"3946:4:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19748,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19743,"src":"3930:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"3930:15:124","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:21:124","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19747,"id":19752,"nodeType":"Return","src":"3923:28:124"}]},"functionSelector":"8c871019","id":19754,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingToShares","nodeType":"FunctionDefinition","parameters":{"id":19744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19743,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":19754,"src":"3866:15:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19742,"name":"uint256","nodeType":"ElementaryTypeName","src":"3866:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3865:17:124"},"returnParameters":{"id":19747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19746,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19754,"src":"3904:7:124","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3904:7:124","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3903:9:124"},"scope":19755,"src":"3838:120:124","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":19756,"src":"1984:1976:124"}],"src":"688:3273:124"},"id":124},"contracts/test/MockStETH.sol":{"ast":{"absolutePath":"contracts/test/MockStETH.sol","exportedSymbols":{"MockStETH":[19808]},"id":19809,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19757,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:125"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":19758,"nodeType":"ImportDirective","scope":19809,"sourceUnit":3091,"src":"756:76:125","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":19759,"nodeType":"ImportDirective","scope":19809,"sourceUnit":5906,"src":"834:72:125","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":19760,"nodeType":"ImportDirective","scope":19809,"sourceUnit":9289,"src":"907:71:125","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19761,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1002:9:125","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":19762,"nodeType":"InheritanceSpecifier","src":"1002:9:125"},{"baseName":{"id":19763,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"1013:6:125","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":19764,"nodeType":"InheritanceSpecifier","src":"1013:6:125"}],"contractDependencies":[1520,1722,1758,3090,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":19808,"linearizedBaseContracts":[19808,3090,9288,8389,4860,7732,1520,1758,8280,8223,1722],"name":"MockStETH","nodeType":"ContractDefinition","nodes":[{"body":{"id":19778,"nodeType":"Block","src":"1160:64:125","statements":[]},"id":19779,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19773,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19766,"src":"1136:4:125","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19774,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19768,"src":"1142:6:125","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19775,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19770,"src":"1150:8:125","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":19776,"modifierName":{"id":19772,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1126:9:125","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1126:33:125"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19766,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19779,"src":"1047:18:125","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19765,"name":"string","nodeType":"ElementaryTypeName","src":"1047:6:125","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19768,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19779,"src":"1075:20:125","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19767,"name":"string","nodeType":"ElementaryTypeName","src":"1075:6:125","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19770,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":19779,"src":"1105:14:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19769,"name":"uint8","nodeType":"ElementaryTypeName","src":"1105:5:125","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1037:88:125"},"returnParameters":{"id":19777,"nodeType":"ParameterList","parameters":[],"src":"1160:0:125"},"scope":19808,"src":"1026:198:125","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"anonymous":false,"id":19783,"name":"EthStaked","nodeType":"EventDefinition","parameters":{"id":19782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19781,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19783,"src":"1246:14:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1246:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1245:16:125"},"src":"1230:32:125"},{"baseFunctions":[3089],"body":{"id":19806,"nodeType":"Block","src":"1337:106:125","statements":[{"expression":{"arguments":[{"expression":{"id":19792,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1353:3:125","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1353:10:125","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":19794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:125","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19791,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1347:5:125","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":19796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:28:125","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19797,"nodeType":"ExpressionStatement","src":"1347:28:125"},{"eventCall":{"arguments":[{"expression":{"id":19799,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1400:3:125","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1400:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19798,"name":"EthStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19783,"src":"1390:9:125","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":19801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1390:20:125","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19802,"nodeType":"EmitStatement","src":"1385:25:125"},{"expression":{"expression":{"id":19803,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1427:3:125","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1427:9:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19790,"id":19805,"nodeType":"Return","src":"1420:16:125"}]},"functionSelector":"a1903eab","id":19807,"implemented":true,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","overrides":{"id":19787,"nodeType":"OverrideSpecifier","overrides":[],"src":"1310:8:125"},"parameters":{"id":19786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19785,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19807,"src":"1284:7:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19784,"name":"address","nodeType":"ElementaryTypeName","src":"1284:7:125","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:9:125"},"returnParameters":{"id":19790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19789,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19807,"src":"1328:7:125","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19788,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:125","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1327:9:125"},"scope":19808,"src":"1268:175:125","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":19809,"src":"980:465:125"}],"src":"731:715:125"},"id":125},"contracts/test/MockStaticATokenLM.sol":{"ast":{"absolutePath":"contracts/test/MockStaticATokenLM.sol","exportedSymbols":{"MockStaticATokenLM":[20278]},"id":20279,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":19810,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:126"},{"id":19811,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:126"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":19812,"nodeType":"ImportDirective","scope":20279,"sourceUnit":2968,"src":"747:85:126","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","id":19813,"nodeType":"ImportDirective","scope":20279,"sourceUnit":9230,"src":"834:71:126","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19814,"name":"ERC20Mock","nodeType":"UserDefinedTypeName","referencedDeclaration":9229,"src":"938:9:126","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Mock_$9229","typeString":"contract ERC20Mock"}},"id":19815,"nodeType":"InheritanceSpecifier","src":"938:9:126"},{"baseName":{"id":19816,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2967,"src":"949:15:126","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2967","typeString":"contract IStaticATokenLM"}},"id":19817,"nodeType":"InheritanceSpecifier","src":"949:15:126"}],"contractDependencies":[1722,2967,8223,9229],"contractKind":"contract","fullyImplemented":true,"id":20278,"linearizedBaseContracts":[20278,2967,9229,8223,1722],"name":"MockStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":19829,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":19828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19819,"indexed":false,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":19829,"src":"1168:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19818,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19821,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19829,"src":"1187:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19820,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19823,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19829,"src":"1206:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19822,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19825,"indexed":false,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":19829,"src":"1222:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19824,"name":"uint16","nodeType":"ElementaryTypeName","src":"1222:6:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19827,"indexed":false,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":19829,"src":"1243:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19826,"name":"bool","nodeType":"ElementaryTypeName","src":"1243:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1167:96:126"},"src":"1154:110:126"},{"anonymous":false,"id":19841,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":19840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19831,"indexed":false,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":19841,"src":"1285:13:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19830,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19833,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19841,"src":"1300:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19832,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19835,"indexed":false,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":19841,"src":"1319:20:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19834,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19837,"indexed":false,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":19841,"src":"1341:21:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19839,"indexed":false,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":19841,"src":"1364:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19838,"name":"bool","nodeType":"ElementaryTypeName","src":"1364:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1284:98:126"},"src":"1270:113:126"},{"constant":true,"id":19844,"mutability":"constant","name":"_rate","nodeType":"VariableDeclaration","scope":20278,"src":"1389:37:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1389:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653237","id":19843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1422:4:126","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"},"visibility":"private"},{"constant":false,"id":19846,"mutability":"immutable","name":"_ASSET","nodeType":"VariableDeclaration","scope":20278,"src":"1432:31:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19845,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1432:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":19848,"mutability":"immutable","name":"_ATOKEN","nodeType":"VariableDeclaration","scope":20278,"src":"1469:32:126","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19847,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1469:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"private"},{"body":{"id":19871,"nodeType":"Block","src":"1663:67:126","statements":[{"expression":{"id":19865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19863,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19846,"src":"1673:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19864,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19854,"src":"1682:15:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1673:24:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19866,"nodeType":"ExpressionStatement","src":"1673:24:126"},{"expression":{"id":19869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19867,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1707:7:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19868,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19856,"src":"1717:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1707:16:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":19870,"nodeType":"ExpressionStatement","src":"1707:16:126"}]},"id":19872,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":19859,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19850,"src":"1649:4:126","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":19860,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19852,"src":"1655:6:126","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":19861,"modifierName":{"id":19858,"name":"ERC20Mock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"1639:9:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Mock_$9229_$","typeString":"type(contract ERC20Mock)"}},"nodeType":"ModifierInvocation","src":"1639:23:126"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":19857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19850,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":19872,"src":"1529:18:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19849,"name":"string","nodeType":"ElementaryTypeName","src":"1529:6:126","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19852,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":19872,"src":"1557:20:126","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19851,"name":"string","nodeType":"ElementaryTypeName","src":"1557:6:126","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":19854,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":19872,"src":"1587:22:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19853,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1587:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19856,"mutability":"mutable","name":"aToken","nodeType":"VariableDeclaration","scope":19872,"src":"1619:13:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19855,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1619:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1519:119:126"},"returnParameters":{"id":19862,"nodeType":"ParameterList","parameters":[],"src":"1663:0:126"},"scope":20278,"src":"1508:222:126","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2961],"body":{"id":19880,"nodeType":"Block","src":"1846:30:126","statements":[{"expression":{"id":19878,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19846,"src":"1863:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"functionReturnParameters":19877,"id":19879,"nodeType":"Return","src":"1856:13:126"}]},"functionSelector":"4800d97f","id":19881,"implemented":true,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","overrides":{"id":19874,"nodeType":"OverrideSpecifier","overrides":[],"src":"1820:8:126"},"parameters":{"id":19873,"nodeType":"ParameterList","parameters":[],"src":"1803:2:126"},"returnParameters":{"id":19877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19876,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19881,"src":"1838:6:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19875,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1838:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1837:8:126"},"scope":20278,"src":"1789:87:126","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2956],"body":{"id":19889,"nodeType":"Block","src":"1940:31:126","statements":[{"expression":{"id":19887,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19848,"src":"1957:7:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"functionReturnParameters":19886,"id":19888,"nodeType":"Return","src":"1950:14:126"}]},"functionSelector":"51c0e061","id":19890,"implemented":true,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","overrides":{"id":19883,"nodeType":"OverrideSpecifier","overrides":[],"src":"1914:8:126"},"parameters":{"id":19882,"nodeType":"ParameterList","parameters":[],"src":"1897:2:126"},"returnParameters":{"id":19886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19885,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19890,"src":"1932:6:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":19884,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1932:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1931:8:126"},"scope":20278,"src":"1882:89:126","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2946],"body":{"id":19901,"nodeType":"Block","src":"2095:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":19897,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2113:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":19898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"2113:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19896,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"2105:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":19899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19900,"nodeType":"ExpressionStatement","src":"2105:29:126"}]},"functionSelector":"b4dcfc77","id":19902,"implemented":true,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","overrides":{"id":19892,"nodeType":"OverrideSpecifier","overrides":[],"src":"2068:8:126"},"parameters":{"id":19891,"nodeType":"ParameterList","parameters":[],"src":"2051:2:126"},"returnParameters":{"id":19895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19894,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19902,"src":"2086:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19893,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:126"},"scope":20278,"src":"2030:111:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2865],"body":{"id":19910,"nodeType":"Block","src":"2202:29:126","statements":[{"expression":{"id":19908,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19844,"src":"2219:5:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19907,"id":19909,"nodeType":"Return","src":"2212:12:126"}]},"functionSelector":"2c4e722e","id":19911,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","overrides":{"id":19904,"nodeType":"OverrideSpecifier","overrides":[],"src":"2175:8:126"},"parameters":{"id":19903,"nodeType":"ParameterList","parameters":[],"src":"2160:2:126"},"returnParameters":{"id":19907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19906,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19911,"src":"2193:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2192:9:126"},"scope":20278,"src":"2147:84:126","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2747],"body":{"id":19936,"nodeType":"Block","src":"2405:113:126","statements":[{"eventCall":{"arguments":[{"expression":{"id":19926,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2428:3:126","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2428:10:126","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19928,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19913,"src":"2440:9:126","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19929,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19915,"src":"2451:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19930,"name":"referralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19917,"src":"2459:12:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":19931,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19919,"src":"2473:14:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":19925,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19829,"src":"2420:7:126","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint16,bool)"}},"id":19932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:68:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19933,"nodeType":"EmitStatement","src":"2415:73:126"},{"expression":{"id":19934,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19915,"src":"2505:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19924,"id":19935,"nodeType":"Return","src":"2498:13:126"}]},"functionSelector":"2f2cab87","id":19937,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":19921,"nodeType":"OverrideSpecifier","overrides":[],"src":"2378:8:126"},"parameters":{"id":19920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19913,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19937,"src":"2263:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19912,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19915,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19937,"src":"2290:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19914,"name":"uint256","nodeType":"ElementaryTypeName","src":"2290:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19917,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":19937,"src":"2314:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19916,"name":"uint16","nodeType":"ElementaryTypeName","src":"2314:6:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19919,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":19937,"src":"2343:19:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19918,"name":"bool","nodeType":"ElementaryTypeName","src":"2343:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2253:115:126"},"returnParameters":{"id":19924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19923,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19937,"src":"2396:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19922,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2395:9:126"},"scope":20278,"src":"2237:281:126","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2761],"body":{"id":19966,"nodeType":"Block","src":"2671:139:126","statements":[{"eventCall":{"arguments":[{"expression":{"id":19952,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2695:3:126","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2695:10:126","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":19954,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19939,"src":"2707:9:126","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19955,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19941,"src":"2718:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":19957,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19941,"src":"2748:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19956,"name":"staticToDynamicAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19978,"src":"2726:21:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":19958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2726:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19959,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19943,"src":"2757:12:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":19951,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19841,"src":"2686:8:126","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint256,bool)"}},"id":19960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2686:84:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19961,"nodeType":"EmitStatement","src":"2681:89:126"},{"expression":{"components":[{"id":19962,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19941,"src":"2788:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19963,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19941,"src":"2796:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2787:16:126","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":19950,"id":19965,"nodeType":"Return","src":"2780:23:126"}]},"functionSelector":"ead5d359","id":19967,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":19945,"nodeType":"OverrideSpecifier","overrides":[],"src":"2635:8:126"},"parameters":{"id":19944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19939,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":19967,"src":"2551:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19938,"name":"address","nodeType":"ElementaryTypeName","src":"2551:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19941,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19967,"src":"2578:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19940,"name":"uint256","nodeType":"ElementaryTypeName","src":"2578:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19943,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":19967,"src":"2602:17:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19942,"name":"bool","nodeType":"ElementaryTypeName","src":"2602:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2541:84:126"},"returnParameters":{"id":19950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19947,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19967,"src":"2653:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19946,"name":"uint256","nodeType":"ElementaryTypeName","src":"2653:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19949,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19967,"src":"2662:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:18:126"},"scope":20278,"src":"2524:286:126","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2851],"body":{"id":19977,"nodeType":"Block","src":"2902:30:126","statements":[{"expression":{"id":19975,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19969,"src":"2919:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19974,"id":19976,"nodeType":"Return","src":"2912:13:126"}]},"functionSelector":"f57d0b40","id":19978,"implemented":true,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":19971,"nodeType":"OverrideSpecifier","overrides":[],"src":"2875:8:126"},"parameters":{"id":19970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19969,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19978,"src":"2847:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19968,"name":"uint256","nodeType":"ElementaryTypeName","src":"2847:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2846:16:126"},"returnParameters":{"id":19974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19973,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19978,"src":"2893:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19972,"name":"uint256","nodeType":"ElementaryTypeName","src":"2893:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2892:9:126"},"scope":20278,"src":"2816:116:126","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2859],"body":{"id":19988,"nodeType":"Block","src":"3026:30:126","statements":[{"expression":{"id":19986,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19980,"src":"3043:6:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19985,"id":19987,"nodeType":"Return","src":"3036:13:126"}]},"functionSelector":"36a5a6d6","id":19989,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","overrides":{"id":19982,"nodeType":"OverrideSpecifier","overrides":[],"src":"2999:8:126"},"parameters":{"id":19981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19980,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":19989,"src":"2969:14:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19979,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2968:16:126"},"returnParameters":{"id":19985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19984,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":19989,"src":"3017:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19983,"name":"uint256","nodeType":"ElementaryTypeName","src":"3017:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3016:9:126"},"scope":20278,"src":"2938:118:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2793],"body":{"id":20012,"nodeType":"Block","src":"3222:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20008,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3240:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"3240:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20007,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"3232:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3232:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20011,"nodeType":"ExpressionStatement","src":"3232:29:126"}]},"functionSelector":"d505accf","id":20013,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":20005,"nodeType":"OverrideSpecifier","overrides":[],"src":"3213:8:126"},"parameters":{"id":20004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19991,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3087:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19990,"name":"address","nodeType":"ElementaryTypeName","src":"3087:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19993,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3104:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19992,"name":"address","nodeType":"ElementaryTypeName","src":"3104:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19995,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3121:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19994,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3138:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19996,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3155:5:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19998,"name":"uint8","nodeType":"ElementaryTypeName","src":"3155:5:126","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20001,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3170:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3170:7:126","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20003,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20013,"src":"3187:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3187:7:126","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3077:123:126"},"returnParameters":{"id":20006,"nodeType":"ParameterList","parameters":[],"src":"3222:0:126"},"scope":20278,"src":"3062:206:126","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2871],"body":{"id":20024,"nodeType":"Block","src":"3343:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20020,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3361:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"3361:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20019,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"3353:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3353:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20023,"nodeType":"ExpressionStatement","src":"3353:29:126"}]},"functionSelector":"ed24911d","id":20025,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":20015,"nodeType":"OverrideSpecifier","overrides":[],"src":"3316:8:126"},"parameters":{"id":20014,"nodeType":"ParameterList","parameters":[],"src":"3301:2:126"},"returnParameters":{"id":20018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20017,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20025,"src":"3334:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3334:7:126","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3333:9:126"},"scope":20278,"src":"3274:115:126","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2775],"body":{"id":20044,"nodeType":"Block","src":"3530:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20040,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3548:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"3548:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20039,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"3540:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20043,"nodeType":"ExpressionStatement","src":"3540:29:126"}]},"functionSelector":"288587ce","id":20045,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":20033,"nodeType":"OverrideSpecifier","overrides":[],"src":"3494:8:126"},"parameters":{"id":20032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20045,"src":"3435:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20026,"name":"address","nodeType":"ElementaryTypeName","src":"3435:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20029,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20045,"src":"3452:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20028,"name":"uint256","nodeType":"ElementaryTypeName","src":"3452:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20031,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20045,"src":"3469:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20030,"name":"bool","nodeType":"ElementaryTypeName","src":"3469:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3425:54:126"},"returnParameters":{"id":20038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20035,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20045,"src":"3512:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20034,"name":"uint256","nodeType":"ElementaryTypeName","src":"3512:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20037,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20045,"src":"3521:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20036,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3511:18:126"},"scope":20278,"src":"3395:181:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2813],"body":{"id":20070,"nodeType":"Block","src":"3782:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20066,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"3800:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"3800:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20065,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"3792:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3792:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20069,"nodeType":"ExpressionStatement","src":"3792:29:126"}]},"functionSelector":"c485852b","id":20071,"implemented":true,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","overrides":{"id":20061,"nodeType":"OverrideSpecifier","overrides":[],"src":"3755:8:126"},"parameters":{"id":20060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3612:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20046,"name":"address","nodeType":"ElementaryTypeName","src":"3612:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20049,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3629:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20048,"name":"address","nodeType":"ElementaryTypeName","src":"3629:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20051,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3646:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20050,"name":"uint256","nodeType":"ElementaryTypeName","src":"3646:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3663:6:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20052,"name":"uint16","nodeType":"ElementaryTypeName","src":"3663:6:126","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":20055,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3679:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20054,"name":"bool","nodeType":"ElementaryTypeName","src":"3679:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3693:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20056,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20059,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3710:24:126","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":20058,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2733,"src":"3710:15:126","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3602:138:126"},"returnParameters":{"id":20064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20063,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20071,"src":"3773:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20062,"name":"uint256","nodeType":"ElementaryTypeName","src":"3773:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3772:9:126"},"scope":20278,"src":"3582:246:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2835],"body":{"id":20098,"nodeType":"Block","src":"4045:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20094,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4063:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4063:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20093,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4055:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20097,"nodeType":"ExpressionStatement","src":"4055:29:126"}]},"functionSelector":"60266557","id":20099,"implemented":true,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","overrides":{"id":20087,"nodeType":"OverrideSpecifier","overrides":[],"src":"4009:8:126"},"parameters":{"id":20086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20073,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3865:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20072,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20075,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3882:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20074,"name":"address","nodeType":"ElementaryTypeName","src":"3882:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20077,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3899:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20076,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20079,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3916:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20078,"name":"uint256","nodeType":"ElementaryTypeName","src":"3916:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20081,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3933:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20080,"name":"bool","nodeType":"ElementaryTypeName","src":"3933:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":20083,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3947:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20082,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20085,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"3964:24:126","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":20084,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2733,"src":"3964:15:126","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2733_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3855:139:126"},"returnParameters":{"id":20092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20089,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"4027:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20088,"name":"uint256","nodeType":"ElementaryTypeName","src":"4027:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20091,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20099,"src":"4036:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20090,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:18:126"},"scope":20278,"src":"3834:257:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2843],"body":{"id":20112,"nodeType":"Block","src":"4173:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20108,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4191:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4191:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20107,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4183:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4183:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20111,"nodeType":"ExpressionStatement","src":"4183:29:126"}]},"functionSelector":"44b68c3f","id":20113,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","overrides":{"id":20103,"nodeType":"OverrideSpecifier","overrides":[],"src":"4146:8:126"},"parameters":{"id":20102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20101,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20113,"src":"4123:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20100,"name":"address","nodeType":"ElementaryTypeName","src":"4123:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4122:9:126"},"returnParameters":{"id":20106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20113,"src":"4164:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20104,"name":"uint256","nodeType":"ElementaryTypeName","src":"4164:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4163:9:126"},"scope":20278,"src":"4097:122:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2875],"body":{"id":20122,"nodeType":"Block","src":"4283:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20118,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4301:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4301:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20117,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4293:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4293:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20121,"nodeType":"ExpressionStatement","src":"4293:29:126"}]},"functionSelector":"3eb2eba6","id":20123,"implemented":true,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","overrides":{"id":20115,"nodeType":"OverrideSpecifier","overrides":[],"src":"4274:8:126"},"parameters":{"id":20114,"nodeType":"ParameterList","parameters":[],"src":"4257:2:126"},"returnParameters":{"id":20116,"nodeType":"ParameterList","parameters":[],"src":"4283:0:126"},"scope":20278,"src":"4225:104:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2885],"body":{"id":20138,"nodeType":"Block","src":"4442:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20134,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4460:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4460:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20133,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4452:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4452:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20137,"nodeType":"ExpressionStatement","src":"4452:29:126"}]},"functionSelector":"dd05aa12","id":20139,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","overrides":{"id":20131,"nodeType":"OverrideSpecifier","overrides":[],"src":"4433:8:126"},"parameters":{"id":20130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20139,"src":"4374:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20124,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20127,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20139,"src":"4391:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20126,"name":"address","nodeType":"ElementaryTypeName","src":"4391:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20129,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20139,"src":"4408:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20128,"name":"bool","nodeType":"ElementaryTypeName","src":"4408:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4364:54:126"},"returnParameters":{"id":20132,"nodeType":"ParameterList","parameters":[],"src":"4442:0:126"},"scope":20278,"src":"4335:153:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2893],"body":{"id":20152,"nodeType":"Block","src":"4554:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20148,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4572:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4572:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20147,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4564:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4564:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20151,"nodeType":"ExpressionStatement","src":"4564:29:126"}]},"functionSelector":"491c011a","id":20153,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","overrides":{"id":20145,"nodeType":"OverrideSpecifier","overrides":[],"src":"4545:8:126"},"parameters":{"id":20144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20141,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20153,"src":"4516:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20140,"name":"address","nodeType":"ElementaryTypeName","src":"4516:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20143,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20153,"src":"4525:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20142,"name":"bool","nodeType":"ElementaryTypeName","src":"4525:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4515:15:126"},"returnParameters":{"id":20146,"nodeType":"ParameterList","parameters":[],"src":"4554:0:126"},"scope":20278,"src":"4494:106:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2899],"body":{"id":20164,"nodeType":"Block","src":"4663:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20160,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4681:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4681:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20159,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4673:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4673:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20163,"nodeType":"ExpressionStatement","src":"4673:29:126"}]},"functionSelector":"45c1ace7","id":20165,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","overrides":{"id":20157,"nodeType":"OverrideSpecifier","overrides":[],"src":"4654:8:126"},"parameters":{"id":20156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20155,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20165,"src":"4634:4:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20154,"name":"bool","nodeType":"ElementaryTypeName","src":"4634:4:126","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4633:6:126"},"returnParameters":{"id":20158,"nodeType":"ParameterList","parameters":[],"src":"4663:0:126"},"scope":20278,"src":"4606:103:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2905],"body":{"id":20176,"nodeType":"Block","src":"4792:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20172,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4810:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4810:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20171,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4802:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4802:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20175,"nodeType":"ExpressionStatement","src":"4802:29:126"}]},"functionSelector":"7f372cff","id":20177,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":20167,"nodeType":"OverrideSpecifier","overrides":[],"src":"4765:8:126"},"parameters":{"id":20166,"nodeType":"ParameterList","parameters":[],"src":"4748:2:126"},"returnParameters":{"id":20170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20169,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20177,"src":"4783:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20168,"name":"uint256","nodeType":"ElementaryTypeName","src":"4783:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4782:9:126"},"scope":20278,"src":"4715:123:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2913],"body":{"id":20190,"nodeType":"Block","src":"4923:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20186,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"4941:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"4941:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20185,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"4933:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4933:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20189,"nodeType":"ExpressionStatement","src":"4933:29:126"}]},"functionSelector":"308e401e","id":20191,"implemented":true,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":20181,"nodeType":"OverrideSpecifier","overrides":[],"src":"4896:8:126"},"parameters":{"id":20180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20179,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20191,"src":"4873:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20178,"name":"address","nodeType":"ElementaryTypeName","src":"4873:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4872:9:126"},"returnParameters":{"id":20184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20191,"src":"4914:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20182,"name":"uint256","nodeType":"ElementaryTypeName","src":"4914:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4913:9:126"},"scope":20278,"src":"4844:125:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2921],"body":{"id":20204,"nodeType":"Block","src":"5054:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20200,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5072:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5072:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20199,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5064:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20203,"nodeType":"ExpressionStatement","src":"5064:29:126"}]},"functionSelector":"69a69e29","id":20205,"implemented":true,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","overrides":{"id":20195,"nodeType":"OverrideSpecifier","overrides":[],"src":"5027:8:126"},"parameters":{"id":20194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20193,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20205,"src":"5004:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20192,"name":"address","nodeType":"ElementaryTypeName","src":"5004:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5003:9:126"},"returnParameters":{"id":20198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20197,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20205,"src":"5045:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20196,"name":"uint256","nodeType":"ElementaryTypeName","src":"5045:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5044:9:126"},"scope":20278,"src":"4975:125:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2926],"body":{"id":20216,"nodeType":"Block","src":"5180:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20212,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5198:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5198:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20211,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5190:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5190:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20215,"nodeType":"ExpressionStatement","src":"5190:29:126"}]},"functionSelector":"a135a55e","id":20217,"implemented":true,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","overrides":{"id":20207,"nodeType":"OverrideSpecifier","overrides":[],"src":"5153:8:126"},"parameters":{"id":20206,"nodeType":"ParameterList","parameters":[],"src":"5136:2:126"},"returnParameters":{"id":20210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20209,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20217,"src":"5171:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20208,"name":"uint256","nodeType":"ElementaryTypeName","src":"5171:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5170:9:126"},"scope":20278,"src":"5106:120:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2931],"body":{"id":20228,"nodeType":"Block","src":"5310:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20224,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5328:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5328:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20223,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5320:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5320:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20227,"nodeType":"ExpressionStatement","src":"5320:29:126"}]},"functionSelector":"31a5cfa4","id":20229,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","overrides":{"id":20219,"nodeType":"OverrideSpecifier","overrides":[],"src":"5283:8:126"},"parameters":{"id":20218,"nodeType":"ParameterList","parameters":[],"src":"5266:2:126"},"returnParameters":{"id":20222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20221,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20229,"src":"5301:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20220,"name":"uint256","nodeType":"ElementaryTypeName","src":"5301:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5300:9:126"},"scope":20278,"src":"5232:124:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2936],"body":{"id":20240,"nodeType":"Block","src":"5433:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20236,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5451:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5451:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20235,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5443:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20239,"nodeType":"ExpressionStatement","src":"5443:29:126"}]},"functionSelector":"b3a59022","id":20241,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","overrides":{"id":20231,"nodeType":"OverrideSpecifier","overrides":[],"src":"5406:8:126"},"parameters":{"id":20230,"nodeType":"ParameterList","parameters":[],"src":"5389:2:126"},"returnParameters":{"id":20234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20233,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20241,"src":"5424:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20232,"name":"uint256","nodeType":"ElementaryTypeName","src":"5424:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5423:9:126"},"scope":20278,"src":"5362:117:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2941],"body":{"id":20252,"nodeType":"Block","src":"5556:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20248,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5574:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5574:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20247,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5566:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5566:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20251,"nodeType":"ExpressionStatement","src":"5566:29:126"}]},"functionSelector":"bf62bee6","id":20253,"implemented":true,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","overrides":{"id":20243,"nodeType":"OverrideSpecifier","overrides":[],"src":"5529:8:126"},"parameters":{"id":20242,"nodeType":"ParameterList","parameters":[],"src":"5512:2:126"},"returnParameters":{"id":20246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20245,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20253,"src":"5547:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20244,"name":"uint256","nodeType":"ElementaryTypeName","src":"5547:7:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5546:9:126"},"scope":20278,"src":"5485:117:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2951],"body":{"id":20264,"nodeType":"Block","src":"5682:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20260,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5700:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5700:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20259,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5692:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5692:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20263,"nodeType":"ExpressionStatement","src":"5692:29:126"}]},"functionSelector":"10d0ab22","id":20265,"implemented":true,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","overrides":{"id":20255,"nodeType":"OverrideSpecifier","overrides":[],"src":"5655:8:126"},"parameters":{"id":20254,"nodeType":"ParameterList","parameters":[],"src":"5638:2:126"},"returnParameters":{"id":20258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20257,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20265,"src":"5673:7:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20256,"name":"address","nodeType":"ElementaryTypeName","src":"5673:7:126","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5672:9:126"},"scope":20278,"src":"5608:120:126","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2966],"body":{"id":20276,"nodeType":"Block","src":"5798:46:126","statements":[{"expression":{"arguments":[{"expression":{"id":20272,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"5816:6:126","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"5816:20:126","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20271,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"5808:7:126","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5808:29:126","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20275,"nodeType":"ExpressionStatement","src":"5808:29:126"}]},"functionSelector":"99248ea7","id":20277,"implemented":true,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","overrides":{"id":20267,"nodeType":"OverrideSpecifier","overrides":[],"src":"5772:8:126"},"parameters":{"id":20266,"nodeType":"ParameterList","parameters":[],"src":"5755:2:126"},"returnParameters":{"id":20270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20269,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20277,"src":"5790:6:126","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":20268,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"5790:6:126","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5789:8:126"},"scope":20278,"src":"5734:110:126","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":20279,"src":"907:4939:126"}],"src":"688:5159:126"},"id":126},"contracts/test/MockTetuShareValueHelper.sol":{"ast":{"absolutePath":"contracts/test/MockTetuShareValueHelper.sol","exportedSymbols":{"MockTetuShareValueHelper":[20445]},"id":20446,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20280,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:127"},{"id":20281,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:127"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":20282,"nodeType":"ImportDirective","scope":20446,"sourceUnit":9108,"src":"747:79:127","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":20283,"nodeType":"ImportDirective","scope":20446,"sourceUnit":5906,"src":"827:72:127","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","id":20284,"nodeType":"ImportDirective","scope":20446,"sourceUnit":3023,"src":"901:85:127","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol","id":20285,"nodeType":"ImportDirective","scope":20446,"sourceUnit":3031,"src":"987:83:127","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":20445,"linearizedBaseContracts":[20445],"name":"MockTetuShareValueHelper","nodeType":"ContractDefinition","nodes":[{"id":20288,"libraryName":{"id":20286,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1118:9:127","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1112:27:127","typeName":{"id":20287,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1132:6:127","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":20291,"libraryName":{"id":20289,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1150:10:127","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1144:29:127","typeName":{"id":20290,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":20295,"mutability":"immutable","name":"_defaultRate","nodeType":"VariableDeclaration","scope":20445,"src":"1293:55:127","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"id":20293,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"1334:10:127","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$5905_$","typeString":"type(library FixedPoint)"}},"id":20294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"1334:14:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":20309,"nodeType":"Block","src":"1611:68:127","statements":[{"expression":{"arguments":[{"id":20305,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20297,"src":"1644:13:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20306,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20299,"src":"1659:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":20304,"name":"_fromTetuAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20392,"src":"1628:15:127","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (uint256,contract ITetuSmartVault) view returns (uint256)"}},"id":20307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:44:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20303,"id":20308,"nodeType":"Return","src":"1621:51:127"}]},"functionSelector":"4d9ab5cb","id":20310,"implemented":true,"kind":"function","modifiers":[],"name":"fromTetuAmount","nodeType":"FunctionDefinition","parameters":{"id":20300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20297,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":20310,"src":"1526:21:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20296,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20299,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20310,"src":"1549:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20298,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"1549:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"1525:53:127"},"returnParameters":{"id":20303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20302,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20310,"src":"1602:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20301,"name":"uint256","nodeType":"ElementaryTypeName","src":"1602:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1601:9:127"},"scope":20445,"src":"1502:177:127","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20324,"nodeType":"Block","src":"1936:63:127","statements":[{"expression":{"arguments":[{"id":20320,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20312,"src":"1967:10:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20321,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20314,"src":"1979:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":20319,"name":"_toTetuAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20413,"src":"1953:13:127","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (uint256,contract ITetuSmartVault) view returns (uint256)"}},"id":20322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1953:39:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20318,"id":20323,"nodeType":"Return","src":"1946:46:127"}]},"functionSelector":"c8f93a9d","id":20325,"implemented":true,"kind":"function","modifiers":[],"name":"toTetuAmount","nodeType":"FunctionDefinition","parameters":{"id":20315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20312,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":20325,"src":"1854:18:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20311,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20314,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20325,"src":"1874:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20313,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"1874:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"1853:50:127"},"returnParameters":{"id":20318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20325,"src":"1927:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1927:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1926:9:127"},"scope":20445,"src":"1832:167:127","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":20370,"nodeType":"Block","src":"2090:725:127","statements":[{"assignments":[20333],"declarations":[{"constant":false,"id":20333,"mutability":"mutable","name":"wrappedTokenTotalSupply","nodeType":"VariableDeclaration","scope":20370,"src":"2100:31:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20332,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20337,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20334,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20327,"src":"2134:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":20335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1653,"src":"2134:24:127","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2134:26:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2100:60:127"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20338,"name":"wrappedTokenTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20333,"src":"2174:23:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2201:1:127","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2174:28:127","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20368,"nodeType":"Block","src":"2254:555:127","statements":[{"assignments":[20345],"declarations":[{"constant":false,"id":20345,"mutability":"mutable","name":"underlyingBalanceInVault","nodeType":"VariableDeclaration","scope":20368,"src":"2268:32:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2268:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20349,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20346,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20327,"src":"2303:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":20347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlyingBalanceInVault","nodeType":"MemberAccess","referencedDeclaration":2989,"src":"2303:37:127","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2303:39:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2268:74:127"},{"assignments":[20351],"declarations":[{"constant":false,"id":20351,"mutability":"mutable","name":"strategyInvestedUnderlyingBalance","nodeType":"VariableDeclaration","scope":20368,"src":"2356:41:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20355,"initialValue":{"arguments":[{"id":20353,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20327,"src":"2438:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":20352,"name":"_getStrategyInvestedUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20444,"src":"2400:37:127","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (contract ITetuSmartVault) view returns (uint256)"}},"id":20354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2400:51:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2356:95:127"},{"assignments":[20357],"declarations":[{"constant":false,"id":20357,"mutability":"mutable","name":"balance","nodeType":"VariableDeclaration","scope":20368,"src":"2465:15:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20356,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20362,"initialValue":{"arguments":[{"id":20360,"name":"strategyInvestedUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20351,"src":"2512:33:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20358,"name":"underlyingBalanceInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20345,"src":"2483:24:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":5576,"src":"2483:28:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:63:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2465:81:127"},{"expression":{"arguments":[{"id":20365,"name":"wrappedTokenTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20333,"src":"2774:23:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20363,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20357,"src":"2758:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"2758:15:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2758:40:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20331,"id":20367,"nodeType":"Return","src":"2751:47:127"}]},"id":20369,"nodeType":"IfStatement","src":"2170:639:127","trueBody":{"id":20343,"nodeType":"Block","src":"2204:44:127","statements":[{"expression":{"id":20341,"name":"_defaultRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20295,"src":"2225:12:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20331,"id":20342,"nodeType":"Return","src":"2218:19:127"}]}}]},"id":20371,"implemented":true,"kind":"function","modifiers":[],"name":"_getTokenRate","nodeType":"FunctionDefinition","parameters":{"id":20328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20327,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20371,"src":"2028:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20326,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"2028:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"2027:30:127"},"returnParameters":{"id":20331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20330,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20371,"src":"2081:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20329,"name":"uint256","nodeType":"ElementaryTypeName","src":"2081:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2080:9:127"},"scope":20445,"src":"2005:810:127","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20391,"nodeType":"Block","src":"2931:103:127","statements":[{"assignments":[20381],"declarations":[{"constant":false,"id":20381,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":20391,"src":"2941:12:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20380,"name":"uint256","nodeType":"ElementaryTypeName","src":"2941:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20385,"initialValue":{"arguments":[{"id":20383,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20375,"src":"2970:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":20382,"name":"_getTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20371,"src":"2956:13:127","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (contract ITetuSmartVault) view returns (uint256)"}},"id":20384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2956:27:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2941:42:127"},{"expression":{"arguments":[{"id":20388,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20381,"src":"3022:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20386,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20373,"src":"3000:13:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"3000:21:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3000:27:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20379,"id":20390,"nodeType":"Return","src":"2993:34:127"}]},"id":20392,"implemented":true,"kind":"function","modifiers":[],"name":"_fromTetuAmount","nodeType":"FunctionDefinition","parameters":{"id":20376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20373,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":20392,"src":"2846:21:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20372,"name":"uint256","nodeType":"ElementaryTypeName","src":"2846:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20375,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20392,"src":"2869:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20374,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"2869:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"2845:53:127"},"returnParameters":{"id":20379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20378,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20392,"src":"2922:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20377,"name":"uint256","nodeType":"ElementaryTypeName","src":"2922:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2921:9:127"},"scope":20445,"src":"2821:213:127","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20412,"nodeType":"Block","src":"3145:100:127","statements":[{"assignments":[20402],"declarations":[{"constant":false,"id":20402,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":20412,"src":"3155:12:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20401,"name":"uint256","nodeType":"ElementaryTypeName","src":"3155:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20406,"initialValue":{"arguments":[{"id":20404,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20396,"src":"3184:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}],"id":20403,"name":"_getTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20371,"src":"3170:13:127","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (contract ITetuSmartVault) view returns (uint256)"}},"id":20405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3170:27:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3155:42:127"},{"expression":{"arguments":[{"id":20409,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20402,"src":"3233:4:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20407,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20394,"src":"3214:10:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"3214:18:127","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3214:24:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20400,"id":20411,"nodeType":"Return","src":"3207:31:127"}]},"id":20413,"implemented":true,"kind":"function","modifiers":[],"name":"_toTetuAmount","nodeType":"FunctionDefinition","parameters":{"id":20397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20394,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":20413,"src":"3063:18:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20393,"name":"uint256","nodeType":"ElementaryTypeName","src":"3063:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20396,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20413,"src":"3083:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20395,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"3083:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"3062:50:127"},"returnParameters":{"id":20400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20399,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20413,"src":"3136:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20398,"name":"uint256","nodeType":"ElementaryTypeName","src":"3136:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3135:9:127"},"scope":20445,"src":"3040:205:127","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":20443,"nodeType":"Block","src":"3359:320:127","statements":[{"assignments":[20421],"declarations":[{"constant":false,"id":20421,"mutability":"mutable","name":"tetuStrategy","nodeType":"VariableDeclaration","scope":20443,"src":"3369:20:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20420,"name":"address","nodeType":"ElementaryTypeName","src":"3369:7:127","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":20425,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20422,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20415,"src":"3392:12:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":20423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"strategy","nodeType":"MemberAccess","referencedDeclaration":3021,"src":"3392:21:127","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":20424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3392:23:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3369:46:127"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":20431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20426,"name":"tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20421,"src":"3429:12:127","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":20429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:127","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":20428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3445:7:127","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20427,"name":"address","nodeType":"ElementaryTypeName","src":"3445:7:127","typeDescriptions":{}}},"id":20430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3445:10:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3429:26:127","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20441,"nodeType":"Block","src":"3586:87:127","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":20436,"name":"tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20421,"src":"3621:12:127","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20435,"name":"ITetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"3607:13:127","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITetuStrategy_$3030_$","typeString":"type(contract ITetuStrategy)"}},"id":20437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3607:27:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITetuStrategy_$3030","typeString":"contract ITetuStrategy"}},"id":20438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"investedUnderlyingBalance","nodeType":"MemberAccess","referencedDeclaration":3029,"src":"3607:53:127","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3607:55:127","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20419,"id":20440,"nodeType":"Return","src":"3600:62:127"}]},"id":20442,"nodeType":"IfStatement","src":"3425:248:127","trueBody":{"id":20434,"nodeType":"Block","src":"3457:123:127","statements":[{"expression":{"id":20432,"name":"_defaultRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20295,"src":"3557:12:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20419,"id":20433,"nodeType":"Return","src":"3550:19:127"}]}}]},"id":20444,"implemented":true,"kind":"function","modifiers":[],"name":"_getStrategyInvestedUnderlyingBalance","nodeType":"FunctionDefinition","parameters":{"id":20416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20415,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":20444,"src":"3298:28:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"},"typeName":{"id":20414,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"3298:15:127","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"visibility":"internal"}],"src":"3297:30:127"},"returnParameters":{"id":20419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20418,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20444,"src":"3350:7:127","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20417,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:127","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3349:9:127"},"scope":20445,"src":"3251:428:127","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":20446,"src":"1072:2609:127"}],"src":"688:2994:127"},"id":127},"contracts/test/MockTetuSmartVault.sol":{"ast":{"absolutePath":"contracts/test/MockTetuSmartVault.sol","exportedSymbols":{"MockTetuSmartVault":[20759]},"id":20760,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20447,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:128"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol","id":20448,"nodeType":"ImportDirective","scope":20760,"sourceUnit":3023,"src":"721:85:128","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":20449,"nodeType":"ImportDirective","scope":20760,"sourceUnit":9108,"src":"808:79:128","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":20450,"nodeType":"ImportDirective","scope":20760,"sourceUnit":9289,"src":"888:71:128","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":20451,"nodeType":"ImportDirective","scope":20760,"sourceUnit":5906,"src":"960:72:128","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockTetuStrategy.sol","file":"./MockTetuStrategy.sol","id":20452,"nodeType":"ImportDirective","scope":20760,"sourceUnit":20788,"src":"1034:32:128","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockTetuShareValueHelper.sol","file":"./MockTetuShareValueHelper.sol","id":20453,"nodeType":"ImportDirective","scope":20760,"sourceUnit":20446,"src":"1067:40:128","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20454,"name":"ITetuSmartVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3022,"src":"1140:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuSmartVault_$3022","typeString":"contract ITetuSmartVault"}},"id":20455,"nodeType":"InheritanceSpecifier","src":"1140:15:128"},{"baseName":{"id":20456,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1157:9:128","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":20457,"nodeType":"InheritanceSpecifier","src":"1157:9:128"},{"baseName":{"id":20458,"name":"MockTetuShareValueHelper","nodeType":"UserDefinedTypeName","referencedDeclaration":20445,"src":"1168:24:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuShareValueHelper_$20445","typeString":"contract MockTetuShareValueHelper"}},"id":20459,"nodeType":"InheritanceSpecifier","src":"1168:24:128"}],"contractDependencies":[1520,1722,1758,3022,4860,7732,8223,8280,8389,9288,20445],"contractKind":"contract","fullyImplemented":true,"id":20759,"linearizedBaseContracts":[20759,20445,9288,8389,4860,7732,1520,1758,8280,8223,3022,1722],"name":"MockTetuSmartVault","nodeType":"ContractDefinition","nodes":[{"id":20462,"libraryName":{"id":20460,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1205:9:128","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1199:27:128","typeName":{"id":20461,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1219:6:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":20465,"libraryName":{"id":20463,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1237:10:128","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1231:29:128","typeName":{"id":20464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"7158da7c","id":20467,"mutability":"immutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":20759,"src":"1266:39:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":20466,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1266:6:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"public"},{"constant":false,"id":20469,"mutability":"immutable","name":"_underlyingDecimals","nodeType":"VariableDeclaration","scope":20759,"src":"1311:45:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20468,"name":"uint256","nodeType":"ElementaryTypeName","src":"1311:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":20472,"mutability":"mutable","name":"_underlyingBalanceInVault","nodeType":"VariableDeclaration","scope":20759,"src":"1362:45:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20470,"name":"uint256","nodeType":"ElementaryTypeName","src":"1362:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":20471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1406:1:128","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":20474,"mutability":"immutable","name":"_tetuStrategy","nodeType":"VariableDeclaration","scope":20759,"src":"1413:48:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"},"typeName":{"id":20473,"name":"MockTetuStrategy","nodeType":"UserDefinedTypeName","referencedDeclaration":20787,"src":"1413:16:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"visibility":"private"},{"constant":false,"id":20476,"mutability":"mutable","name":"_desiredRate","nodeType":"VariableDeclaration","scope":20759,"src":"1467:28:128","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20475,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":20508,"nodeType":"Block","src":"1709:137:128","statements":[{"expression":{"id":20498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20494,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20467,"src":"1719:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20496,"name":"_underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20484,"src":"1744:16:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20495,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1737:6:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":20497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1737:24:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1719:42:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":20499,"nodeType":"ExpressionStatement","src":"1719:42:128"},{"expression":{"id":20502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20500,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20469,"src":"1771:19:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20501,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20482,"src":"1793:8:128","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1771:30:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20503,"nodeType":"ExpressionStatement","src":"1771:30:128"},{"expression":{"id":20506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20504,"name":"_tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20474,"src":"1811:13:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20505,"name":"tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"1827:12:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"src":"1811:28:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"id":20507,"nodeType":"ExpressionStatement","src":"1811:28:128"}]},"id":20509,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":20489,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20478,"src":"1685:4:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":20490,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20480,"src":"1691:6:128","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":20491,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20482,"src":"1699:8:128","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":20492,"modifierName":{"id":20488,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1675:9:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1675:33:128"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":20487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20478,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":20509,"src":"1523:18:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20477,"name":"string","nodeType":"ElementaryTypeName","src":"1523:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20480,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":20509,"src":"1551:20:128","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20479,"name":"string","nodeType":"ElementaryTypeName","src":"1551:6:128","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20482,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":20509,"src":"1581:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20481,"name":"uint8","nodeType":"ElementaryTypeName","src":"1581:5:128","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20484,"mutability":"mutable","name":"_underlyingAsset","nodeType":"VariableDeclaration","scope":20509,"src":"1605:24:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20483,"name":"address","nodeType":"ElementaryTypeName","src":"1605:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20486,"mutability":"mutable","name":"tetuStrategy","nodeType":"VariableDeclaration","scope":20509,"src":"1639:29:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"},"typeName":{"id":20485,"name":"MockTetuStrategy","nodeType":"UserDefinedTypeName","referencedDeclaration":20787,"src":"1639:16:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"visibility":"internal"}],"src":"1513:161:128"},"returnParameters":{"id":20493,"nodeType":"ParameterList","parameters":[],"src":"1709:0:128"},"scope":20759,"src":"1502:344:128","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3016],"body":{"id":20519,"nodeType":"Block","src":"1925:47:128","statements":[{"expression":{"arguments":[{"hexValue":"53686f756c64206e6f742063616c6c2074686973","id":20516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1942:22:128","typeDescriptions":{"typeIdentifier":"t_stringliteral_f900d04bc151fcecd6d5cbc9f43f39f71f84fbfc225e78f6715c9f7b7e521b53","typeString":"literal_string \"Should not call this\""},"value":"Should not call this"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f900d04bc151fcecd6d5cbc9f43f39f71f84fbfc225e78f6715c9f7b7e521b53","typeString":"literal_string \"Should not call this\""}],"id":20515,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1935:6:128","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":20517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1935:30:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20518,"nodeType":"ExpressionStatement","src":"1935:30:128"}]},"functionSelector":"77c7b8fc","id":20520,"implemented":true,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","overrides":{"id":20511,"nodeType":"OverrideSpecifier","overrides":[],"src":"1898:8:128"},"parameters":{"id":20510,"nodeType":"ParameterList","parameters":[],"src":"1881:2:128"},"returnParameters":{"id":20514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20513,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20520,"src":"1916:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20512,"name":"uint256","nodeType":"ElementaryTypeName","src":"1916:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:9:128"},"scope":20759,"src":"1852:120:128","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":20533,"nodeType":"Block","src":"2078:157:128","statements":[{"expression":{"id":20527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20525,"name":"_desiredRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20476,"src":"2179:12:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20526,"name":"newRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20522,"src":"2194:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2179:22:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20528,"nodeType":"ExpressionStatement","src":"2179:22:128"},{"expression":{"arguments":[{"id":20530,"name":"newRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20522,"src":"2220:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20529,"name":"_setRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20758,"src":"2211:8:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":20531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2211:17:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20532,"nodeType":"ExpressionStatement","src":"2211:17:128"}]},"functionSelector":"34fcf437","id":20534,"implemented":true,"kind":"function","modifiers":[],"name":"setRate","nodeType":"FunctionDefinition","parameters":{"id":20523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20522,"mutability":"mutable","name":"newRate","nodeType":"VariableDeclaration","scope":20534,"src":"2054:15:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20521,"name":"uint256","nodeType":"ElementaryTypeName","src":"2054:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2053:17:128"},"returnParameters":{"id":20524,"nodeType":"ParameterList","parameters":[],"src":"2078:0:128"},"scope":20759,"src":"2037:198:128","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2989],"body":{"id":20542,"nodeType":"Block","src":"2318:49:128","statements":[{"expression":{"id":20540,"name":"_underlyingBalanceInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20472,"src":"2335:25:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20539,"id":20541,"nodeType":"Return","src":"2328:32:128"}]},"functionSelector":"c2baf356","id":20543,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingBalanceInVault","nodeType":"FunctionDefinition","overrides":{"id":20536,"nodeType":"OverrideSpecifier","overrides":[],"src":"2291:8:128"},"parameters":{"id":20535,"nodeType":"ParameterList","parameters":[],"src":"2274:2:128"},"returnParameters":{"id":20539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20538,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20543,"src":"2309:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20537,"name":"uint256","nodeType":"ElementaryTypeName","src":"2309:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2308:9:128"},"scope":20759,"src":"2241:126:128","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3001],"body":{"id":20559,"nodeType":"Block","src":"2473:64:128","statements":[{"expression":{"arguments":[{"arguments":[{"id":20555,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2524:4:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}],"id":20554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2516:7:128","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20553,"name":"address","nodeType":"ElementaryTypeName","src":"2516:7:128","typeDescriptions":{}}},"id":20556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2516:13:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":20551,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20467,"src":"2490:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":20552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"2490:25:128","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":20557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2490:40:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20550,"id":20558,"nodeType":"Return","src":"2483:47:128"}]},"functionSelector":"8cb1d67f","id":20560,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingBalanceWithInvestmentForHolder","nodeType":"FunctionDefinition","overrides":{"id":20547,"nodeType":"OverrideSpecifier","overrides":[],"src":"2446:8:128"},"parameters":{"id":20546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20545,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20560,"src":"2423:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20544,"name":"address","nodeType":"ElementaryTypeName","src":"2423:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2422:9:128"},"returnParameters":{"id":20550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20549,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20560,"src":"2464:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20548,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2463:9:128"},"scope":20759,"src":"2373:164:128","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2977],"body":{"id":20591,"nodeType":"Block","src":"2594:187:128","statements":[{"expression":{"arguments":[{"expression":{"id":20569,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2637:3:128","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2637:10:128","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":20573,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2657:4:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}],"id":20572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2649:7:128","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20571,"name":"address","nodeType":"ElementaryTypeName","src":"2649:7:128","typeDescriptions":{}}},"id":20574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2649:13:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20575,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20562,"src":"2664:6:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20566,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20467,"src":"2604:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":20568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"2604:32:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":20576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2604:67:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20577,"nodeType":"ExpressionStatement","src":"2604:67:128"},{"assignments":[20579],"declarations":[{"constant":false,"id":20579,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":20591,"src":"2681:21:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20578,"name":"uint256","nodeType":"ElementaryTypeName","src":"2681:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20584,"initialValue":{"arguments":[{"id":20581,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20562,"src":"2719:6:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20582,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2727:4:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}],"id":20580,"name":"_toTetuAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20413,"src":"2705:13:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (uint256,contract ITetuSmartVault) view returns (uint256)"}},"id":20583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2705:27:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2681:51:128"},{"expression":{"arguments":[{"expression":{"id":20586,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2748:3:128","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2748:10:128","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20588,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20579,"src":"2760:13:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20585,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[20717],"referencedDeclaration":20717,"src":"2742:5:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:32:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20590,"nodeType":"ExpressionStatement","src":"2742:32:128"}]},"functionSelector":"b6b55f25","id":20592,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":20564,"nodeType":"OverrideSpecifier","overrides":[],"src":"2585:8:128"},"parameters":{"id":20563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20562,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20592,"src":"2560:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20561,"name":"uint256","nodeType":"ElementaryTypeName","src":"2560:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2559:16:128"},"returnParameters":{"id":20565,"nodeType":"ParameterList","parameters":[],"src":"2594:0:128"},"scope":20759,"src":"2543:238:128","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2984],"body":{"id":20605,"nodeType":"Block","src":"2849:50:128","statements":[{"expression":{"arguments":[{"expression":{"id":20601,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2867:6:128","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1491_$","typeString":"type(library Errors)"}},"id":20602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SHOULD_NOT_HAPPEN","nodeType":"MemberAccess","referencedDeclaration":1490,"src":"2867:24:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20600,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[966,986],"referencedDeclaration":966,"src":"2859:7:128","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":20603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:33:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20604,"nodeType":"ExpressionStatement","src":"2859:33:128"}]},"functionSelector":"36efd16f","id":20606,"implemented":true,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","overrides":{"id":20598,"nodeType":"OverrideSpecifier","overrides":[],"src":"2840:8:128"},"parameters":{"id":20597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20594,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20606,"src":"2807:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20593,"name":"uint256","nodeType":"ElementaryTypeName","src":"2807:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20596,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20606,"src":"2817:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20595,"name":"address","nodeType":"ElementaryTypeName","src":"2817:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2806:19:128"},"returnParameters":{"id":20599,"nodeType":"ParameterList","parameters":[],"src":"2849:0:128"},"scope":20759,"src":"2787:112:128","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2994],"body":{"id":20633,"nodeType":"Block","src":"2965:180:128","statements":[{"expression":{"arguments":[{"expression":{"id":20613,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2981:3:128","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2981:10:128","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20615,"name":"numberOfShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20608,"src":"2993:14:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20612,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[20697],"referencedDeclaration":20697,"src":"2975:5:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2975:33:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20617,"nodeType":"ExpressionStatement","src":"2975:33:128"},{"assignments":[20619],"declarations":[{"constant":false,"id":20619,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":20633,"src":"3018:18:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20618,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20624,"initialValue":{"arguments":[{"id":20621,"name":"numberOfShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20608,"src":"3055:14:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20622,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3071:4:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}],"id":20620,"name":"_fromTetuAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20392,"src":"3039:15:128","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_contract$_ITetuSmartVault_$3022_$returns$_t_uint256_$","typeString":"function (uint256,contract ITetuSmartVault) view returns (uint256)"}},"id":20623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3039:37:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3018:58:128"},{"expression":{"arguments":[{"expression":{"id":20628,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3115:3:128","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3115:10:128","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20630,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20619,"src":"3127:10:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20625,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20467,"src":"3086:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":20627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"3086:28:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":20631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3086:52:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20632,"nodeType":"ExpressionStatement","src":"3086:52:128"}]},"functionSelector":"2e1a7d4d","id":20634,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":20610,"nodeType":"OverrideSpecifier","overrides":[],"src":"2956:8:128"},"parameters":{"id":20609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20608,"mutability":"mutable","name":"numberOfShares","nodeType":"VariableDeclaration","scope":20634,"src":"2923:22:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20607,"name":"uint256","nodeType":"ElementaryTypeName","src":"2923:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2922:24:128"},"returnParameters":{"id":20611,"nodeType":"ParameterList","parameters":[],"src":"2965:0:128"},"scope":20759,"src":"2905:240:128","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":20641,"nodeType":"Block","src":"3214:2:128","statements":[]},"functionSelector":"8bbd3768","id":20642,"implemented":true,"kind":"function","modifiers":[],"name":"transferUnderlying","nodeType":"FunctionDefinition","parameters":{"id":20639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20636,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20642,"src":"3179:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3179:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20638,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20642,"src":"3195:10:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20637,"name":"address","nodeType":"ElementaryTypeName","src":"3195:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3178:28:128"},"returnParameters":{"id":20640,"nodeType":"ParameterList","parameters":[],"src":"3214:0:128"},"scope":20759,"src":"3151:65:128","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3006],"body":{"id":20653,"nodeType":"Block","src":"3285:48:128","statements":[{"expression":{"arguments":[{"id":20650,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20467,"src":"3310:15:128","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":20649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3302:7:128","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20648,"name":"address","nodeType":"ElementaryTypeName","src":"3302:7:128","typeDescriptions":{}}},"id":20651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:24:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":20647,"id":20652,"nodeType":"Return","src":"3295:31:128"}]},"functionSelector":"6f307dc3","id":20654,"implemented":true,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","overrides":{"id":20644,"nodeType":"OverrideSpecifier","overrides":[],"src":"3258:8:128"},"parameters":{"id":20643,"nodeType":"ParameterList","parameters":[],"src":"3241:2:128"},"returnParameters":{"id":20647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20654,"src":"3276:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20645,"name":"address","nodeType":"ElementaryTypeName","src":"3276:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3275:9:128"},"scope":20759,"src":"3222:111:128","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3011],"body":{"id":20664,"nodeType":"Block","src":"3406:47:128","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3423:2:128","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":20661,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20469,"src":"3427:19:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3423:23:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20659,"id":20663,"nodeType":"Return","src":"3416:30:128"}]},"functionSelector":"53ceb01c","id":20665,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingUnit","nodeType":"FunctionDefinition","overrides":{"id":20656,"nodeType":"OverrideSpecifier","overrides":[],"src":"3379:8:128"},"parameters":{"id":20655,"nodeType":"ParameterList","parameters":[],"src":"3362:2:128"},"returnParameters":{"id":20659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20658,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20665,"src":"3397:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20657,"name":"uint256","nodeType":"ElementaryTypeName","src":"3397:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3396:9:128"},"scope":20759,"src":"3339:114:128","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3021],"body":{"id":20676,"nodeType":"Block","src":"3520:46:128","statements":[{"expression":{"arguments":[{"id":20673,"name":"_tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20474,"src":"3545:13:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}],"id":20672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3537:7:128","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20671,"name":"address","nodeType":"ElementaryTypeName","src":"3537:7:128","typeDescriptions":{}}},"id":20674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3537:22:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":20670,"id":20675,"nodeType":"Return","src":"3530:29:128"}]},"functionSelector":"a8c62e76","id":20677,"implemented":true,"kind":"function","modifiers":[],"name":"strategy","nodeType":"FunctionDefinition","overrides":{"id":20667,"nodeType":"OverrideSpecifier","overrides":[],"src":"3493:8:128"},"parameters":{"id":20666,"nodeType":"ParameterList","parameters":[],"src":"3476:2:128"},"returnParameters":{"id":20670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20669,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20677,"src":"3511:7:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20668,"name":"address","nodeType":"ElementaryTypeName","src":"3511:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3510:9:128"},"scope":20759,"src":"3459:107:128","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8175],"body":{"id":20696,"nodeType":"Block","src":"3646:215:128","statements":[{"expression":{"arguments":[{"id":20688,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20679,"src":"3668:7:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20689,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20681,"src":"3677:6:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20685,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3656:5:128","typeDescriptions":{"typeIdentifier":"t_super$_MockTetuSmartVault_$20759","typeString":"contract super MockTetuSmartVault"}},"id":20687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_burn","nodeType":"MemberAccess","referencedDeclaration":8175,"src":"3656:11:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3656:28:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20691,"nodeType":"ExpressionStatement","src":"3656:28:128"},{"expression":{"arguments":[{"id":20693,"name":"_desiredRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20476,"src":"3841:12:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20692,"name":"_setRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20758,"src":"3832:8:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":20694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3832:22:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20695,"nodeType":"ExpressionStatement","src":"3832:22:128"}]},"id":20697,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","overrides":{"id":20683,"nodeType":"OverrideSpecifier","overrides":[],"src":"3637:8:128"},"parameters":{"id":20682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20679,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":20697,"src":"3587:15:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20678,"name":"address","nodeType":"ElementaryTypeName","src":"3587:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20681,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20697,"src":"3604:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20680,"name":"uint256","nodeType":"ElementaryTypeName","src":"3604:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3586:33:128"},"returnParameters":{"id":20684,"nodeType":"ParameterList","parameters":[],"src":"3646:0:128"},"scope":20759,"src":"3572:289:128","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[8116],"body":{"id":20716,"nodeType":"Block","src":"3941:215:128","statements":[{"expression":{"arguments":[{"id":20708,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20699,"src":"3963:7:128","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20709,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20701,"src":"3972:6:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20705,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3951:5:128","typeDescriptions":{"typeIdentifier":"t_super$_MockTetuSmartVault_$20759","typeString":"contract super MockTetuSmartVault"}},"id":20707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_mint","nodeType":"MemberAccess","referencedDeclaration":8116,"src":"3951:11:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3951:28:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20711,"nodeType":"ExpressionStatement","src":"3951:28:128"},{"expression":{"arguments":[{"id":20713,"name":"_desiredRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20476,"src":"4136:12:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20712,"name":"_setRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20758,"src":"4127:8:128","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":20714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4127:22:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20715,"nodeType":"ExpressionStatement","src":"4127:22:128"}]},"id":20717,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","overrides":{"id":20703,"nodeType":"OverrideSpecifier","overrides":[],"src":"3932:8:128"},"parameters":{"id":20702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20699,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":20717,"src":"3882:15:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20698,"name":"address","nodeType":"ElementaryTypeName","src":"3882:7:128","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20701,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20717,"src":"3899:14:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20700,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3881:33:128"},"returnParameters":{"id":20704,"nodeType":"ParameterList","parameters":[],"src":"3941:0:128"},"scope":20759,"src":"3867:289:128","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":20757,"nodeType":"Block","src":"4205:443:128","statements":[{"assignments":[20723],"declarations":[{"constant":false,"id":20723,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":20757,"src":"4215:19:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20722,"name":"uint256","nodeType":"ElementaryTypeName","src":"4215:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20727,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":20724,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4237:4:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuSmartVault_$20759","typeString":"contract MockTetuSmartVault"}},"id":20725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":7819,"src":"4237:16:128","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":20726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4237:18:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4215:40:128"},{"assignments":[20729],"declarations":[{"constant":false,"id":20729,"mutability":"mutable","name":"vaultInvestedRatio","nodeType":"VariableDeclaration","scope":20757,"src":"4366:24:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20728,"name":"uint8","nodeType":"ElementaryTypeName","src":"4366:5:128","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":20731,"initialValue":{"hexValue":"33","id":20730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4393:1:128","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"VariableDeclarationStatement","src":"4366:28:128"},{"assignments":[20733],"declarations":[{"constant":false,"id":20733,"mutability":"mutable","name":"totalBalance","nodeType":"VariableDeclaration","scope":20757,"src":"4404:20:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20732,"name":"uint256","nodeType":"ElementaryTypeName","src":"4404:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20742,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20734,"name":"newRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20719,"src":"4428:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20735,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20723,"src":"4438:11:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4428:21:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4427:23:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":20738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4453:2:128","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":20739,"name":"_underlyingDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20469,"src":"4457:19:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4453:23:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4427:49:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4404:72:128"},{"expression":{"id":20747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20743,"name":"_underlyingBalanceInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20472,"src":"4486:25:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20744,"name":"totalBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20733,"src":"4514:12:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":20745,"name":"vaultInvestedRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20729,"src":"4529:18:128","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4514:33:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4486:61:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20748,"nodeType":"ExpressionStatement","src":"4486:61:128"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20752,"name":"totalBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20733,"src":"4600:12:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":20753,"name":"_underlyingBalanceInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20472,"src":"4615:25:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4600:40:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20749,"name":"_tetuStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20474,"src":"4557:13:128","typeDescriptions":{"typeIdentifier":"t_contract$_MockTetuStrategy_$20787","typeString":"contract MockTetuStrategy"}},"id":20751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setInvestedUnderlyingBalance","nodeType":"MemberAccess","referencedDeclaration":20777,"src":"4557:42:128","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":20755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4557:84:128","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20756,"nodeType":"ExpressionStatement","src":"4557:84:128"}]},"id":20758,"implemented":true,"kind":"function","modifiers":[],"name":"_setRate","nodeType":"FunctionDefinition","parameters":{"id":20720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20719,"mutability":"mutable","name":"newRate","nodeType":"VariableDeclaration","scope":20758,"src":"4180:15:128","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20718,"name":"uint256","nodeType":"ElementaryTypeName","src":"4180:7:128","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4179:17:128"},"returnParameters":{"id":20721,"nodeType":"ParameterList","parameters":[],"src":"4205:0:128"},"scope":20759,"src":"4162:486:128","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":20760,"src":"1109:3541:128"}],"src":"688:3963:128"},"id":128},"contracts/test/MockTetuStrategy.sol":{"ast":{"absolutePath":"contracts/test/MockTetuStrategy.sol","exportedSymbols":{"MockTetuStrategy":[20787]},"id":20788,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20761,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:129"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol","id":20762,"nodeType":"ImportDirective","scope":20788,"sourceUnit":3031,"src":"721:83:129","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20763,"name":"ITetuStrategy","nodeType":"UserDefinedTypeName","referencedDeclaration":3030,"src":"835:13:129","typeDescriptions":{"typeIdentifier":"t_contract$_ITetuStrategy_$3030","typeString":"contract ITetuStrategy"}},"id":20764,"nodeType":"InheritanceSpecifier","src":"835:13:129"}],"contractDependencies":[3030],"contractKind":"contract","fullyImplemented":true,"id":20787,"linearizedBaseContracts":[20787,3030],"name":"MockTetuStrategy","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":20767,"mutability":"mutable","name":"_investedUnderlyingBalance","nodeType":"VariableDeclaration","scope":20787,"src":"855:46:129","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20765,"name":"uint256","nodeType":"ElementaryTypeName","src":"855:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":20766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"900:1:129","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"body":{"id":20776,"nodeType":"Block","src":"988:71:129","statements":[{"expression":{"id":20774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20772,"name":"_investedUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20767,"src":"998:26:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20773,"name":"investedUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20769,"src":"1027:25:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"998:54:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20775,"nodeType":"ExpressionStatement","src":"998:54:129"}]},"functionSelector":"c4ee6db9","id":20777,"implemented":true,"kind":"function","modifiers":[],"name":"setInvestedUnderlyingBalance","nodeType":"FunctionDefinition","parameters":{"id":20770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20769,"mutability":"mutable","name":"investedUnderlyingBalance","nodeType":"VariableDeclaration","scope":20777,"src":"946:33:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20768,"name":"uint256","nodeType":"ElementaryTypeName","src":"946:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"945:35:129"},"returnParameters":{"id":20771,"nodeType":"ParameterList","parameters":[],"src":"988:0:129"},"scope":20787,"src":"908:151:129","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3029],"body":{"id":20785,"nodeType":"Block","src":"1143:50:129","statements":[{"expression":{"id":20783,"name":"_investedUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20767,"src":"1160:26:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20782,"id":20784,"nodeType":"Return","src":"1153:33:129"}]},"functionSelector":"45d01e4a","id":20786,"implemented":true,"kind":"function","modifiers":[],"name":"investedUnderlyingBalance","nodeType":"FunctionDefinition","overrides":{"id":20779,"nodeType":"OverrideSpecifier","overrides":[],"src":"1111:8:129"},"parameters":{"id":20778,"nodeType":"ParameterList","parameters":[],"src":"1099:2:129"},"returnParameters":{"id":20782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20781,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20786,"src":"1134:7:129","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:129","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:9:129"},"scope":20787,"src":"1065:128:129","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":20788,"src":"806:389:129"}],"src":"688:507:129"},"id":129},"contracts/test/MockUnbuttonERC20.sol":{"ast":{"absolutePath":"contracts/test/MockUnbuttonERC20.sol","exportedSymbols":{"MockUnbuttonERC20":[21436]},"id":21437,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":20789,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"785:23:130"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol","id":20790,"nodeType":"ImportDirective","scope":21437,"sourceUnit":2076,"src":"810:84:130","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":20791,"nodeType":"ImportDirective","scope":21437,"sourceUnit":8224,"src":"896:75:130","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":20792,"nodeType":"ImportDirective","scope":21437,"sourceUnit":9108,"src":"972:79:130","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":20793,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"1083:5:130","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":20794,"nodeType":"InheritanceSpecifier","src":"1083:5:130"},{"baseName":{"id":20795,"name":"IButtonWrapper","nodeType":"UserDefinedTypeName","referencedDeclaration":2075,"src":"1090:14:130","typeDescriptions":{"typeIdentifier":"t_contract$_IButtonWrapper_$2075","typeString":"contract IButtonWrapper"}},"id":20796,"nodeType":"InheritanceSpecifier","src":"1090:14:130"}],"contractDependencies":[1722,2075,8223],"contractKind":"contract","fullyImplemented":true,"id":21436,"linearizedBaseContracts":[21436,2075,8223,1722],"name":"MockUnbuttonERC20","nodeType":"ContractDefinition","nodes":[{"id":20799,"libraryName":{"id":20797,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1117:9:130","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1111:27:130","typeName":{"id":20798,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1131:6:130","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"constant":true,"functionSelector":"8eb4f434","id":20802,"mutability":"constant","name":"INITIAL_DEPOSIT","nodeType":"VariableDeclaration","scope":21436,"src":"1143:47:130","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20800,"name":"uint256","nodeType":"ElementaryTypeName","src":"1143:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f303030","id":20801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1185:5:130","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1_000"},"visibility":"public"},{"constant":false,"id":20804,"mutability":"mutable","name":"_underlying","nodeType":"VariableDeclaration","scope":21436,"src":"1196:28:130","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20803,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":20821,"nodeType":"Block","src":"1360:42:130","statements":[{"expression":{"id":20819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20817,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"1370:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20818,"name":"underlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20806,"src":"1384:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1370:25:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20820,"nodeType":"ExpressionStatement","src":"1370:25:130"}]},"id":20822,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":20813,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20808,"src":"1344:5:130","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":20814,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20810,"src":"1351:7:130","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":20815,"modifierName":{"id":20812,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8223,"src":"1338:5:130","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8223_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1338:21:130"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":20811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20806,"mutability":"mutable","name":"underlying_","nodeType":"VariableDeclaration","scope":20822,"src":"1252:19:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20805,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20808,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":20822,"src":"1281:19:130","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20807,"name":"string","nodeType":"ElementaryTypeName","src":"1281:6:130","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20810,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":20822,"src":"1310:21:130","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20809,"name":"string","nodeType":"ElementaryTypeName","src":"1310:6:130","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1242:95:130"},"returnParameters":{"id":20816,"nodeType":"ParameterList","parameters":[],"src":"1360:0:130"},"scope":21436,"src":"1231:171:130","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":20854,"nodeType":"Block","src":"1456:245:130","statements":[{"assignments":[20828],"declarations":[{"constant":false,"id":20828,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":20854,"src":"1466:18:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20832,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20829,"name":"INITIAL_DEPOSIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20802,"src":"1487:15:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":20830,"name":"initialRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20824,"src":"1505:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1487:29:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1466:50:130"},{"expression":{"arguments":[{"expression":{"id":20837,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1576:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1576:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":20841,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1608:4:130","typeDescriptions":{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}],"id":20840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1600:7:130","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20839,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:130","typeDescriptions":{}}},"id":20842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1600:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20843,"name":"INITIAL_DEPOSIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20802,"src":"1627:15:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":20834,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"1533:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20833,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1526:6:130","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":20835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1526:19:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":20836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"1526:36:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":20844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1526:126:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20845,"nodeType":"ExpressionStatement","src":"1526:126:130"},{"expression":{"arguments":[{"arguments":[{"id":20849,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1676:4:130","typeDescriptions":{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}],"id":20848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1668:7:130","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20847,"name":"address","nodeType":"ElementaryTypeName","src":"1668:7:130","typeDescriptions":{}}},"id":20850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1668:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20851,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20828,"src":"1683:10:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20846,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1662:5:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":20852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:32:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20853,"nodeType":"ExpressionStatement","src":"1662:32:130"}]},"functionSelector":"fe4b84df","id":20855,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":20825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20824,"mutability":"mutable","name":"initialRate","nodeType":"VariableDeclaration","scope":20855,"src":"1428:19:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:21:130"},"returnParameters":{"id":20826,"nodeType":"ParameterList","parameters":[],"src":"1456:0:130"},"scope":21436,"src":"1408:293:130","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1946],"body":{"id":20884,"nodeType":"Block","src":"1773:187:130","statements":[{"assignments":[20864],"declarations":[{"constant":false,"id":20864,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":20884,"src":"1783:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20863,"name":"uint256","nodeType":"ElementaryTypeName","src":"1783:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20872,"initialValue":{"arguments":[{"id":20866,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20857,"src":"1821:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20867,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"1829:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1829:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20869,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"1856:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1856:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20865,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"1801:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1801:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1783:87:130"},{"expression":{"arguments":[{"expression":{"id":20874,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1889:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1889:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":20876,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1901:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1901:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20878,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20864,"src":"1913:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20879,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20857,"src":"1922:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20873,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21349,"src":"1880:8:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":20880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1880:49:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20881,"nodeType":"ExpressionStatement","src":"1880:49:130"},{"expression":{"id":20882,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20864,"src":"1946:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20862,"id":20883,"nodeType":"Return","src":"1939:14:130"}]},"functionSelector":"a0712d68","id":20885,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","overrides":{"id":20859,"nodeType":"OverrideSpecifier","overrides":[],"src":"1746:8:130"},"parameters":{"id":20858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20857,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20885,"src":"1721:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1720:16:130"},"returnParameters":{"id":20862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20885,"src":"1764:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20860,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1763:9:130"},"scope":21436,"src":"1707:253:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1956],"body":{"id":20915,"nodeType":"Block","src":"2047:179:130","statements":[{"assignments":[20896],"declarations":[{"constant":false,"id":20896,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":20915,"src":"2057:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20904,"initialValue":{"arguments":[{"id":20898,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20889,"src":"2095:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20899,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"2103:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2103:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20901,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"2130:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2130:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20897,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"2075:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2075:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2057:87:130"},{"expression":{"arguments":[{"expression":{"id":20906,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2163:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2163:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20908,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20887,"src":"2175:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20909,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20896,"src":"2179:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20910,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20889,"src":"2188:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20905,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21349,"src":"2154:8:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":20911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:41:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20912,"nodeType":"ExpressionStatement","src":"2154:41:130"},{"expression":{"id":20913,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20896,"src":"2212:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20894,"id":20914,"nodeType":"Return","src":"2205:14:130"}]},"functionSelector":"da1919b3","id":20916,"implemented":true,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","overrides":{"id":20891,"nodeType":"OverrideSpecifier","overrides":[],"src":"2020:8:130"},"parameters":{"id":20890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20887,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20916,"src":"1983:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20886,"name":"address","nodeType":"ElementaryTypeName","src":"1983:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20889,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20916,"src":"1995:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20888,"name":"uint256","nodeType":"ElementaryTypeName","src":"1995:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:28:130"},"returnParameters":{"id":20894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20893,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20916,"src":"2038:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20892,"name":"uint256","nodeType":"ElementaryTypeName","src":"2038:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2037:9:130"},"scope":21436,"src":"1966:260:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1964],"body":{"id":20945,"nodeType":"Block","src":"2298:188:130","statements":[{"assignments":[20925],"declarations":[{"constant":false,"id":20925,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":20945,"src":"2308:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20933,"initialValue":{"arguments":[{"id":20927,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2346:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20928,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"2354:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2354:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20930,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"2381:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2381:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20926,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"2326:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2326:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2308:87:130"},{"expression":{"arguments":[{"expression":{"id":20935,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2415:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2415:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":20937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2427:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2427:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20939,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20925,"src":"2439:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20940,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20918,"src":"2448:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20934,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"2405:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":20941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2405:50:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20942,"nodeType":"ExpressionStatement","src":"2405:50:130"},{"expression":{"id":20943,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20925,"src":"2472:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20923,"id":20944,"nodeType":"Return","src":"2465:14:130"}]},"functionSelector":"42966c68","id":20946,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","overrides":{"id":20920,"nodeType":"OverrideSpecifier","overrides":[],"src":"2271:8:130"},"parameters":{"id":20919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20918,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20946,"src":"2246:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20917,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:16:130"},"returnParameters":{"id":20923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20922,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20946,"src":"2289:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20921,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2288:9:130"},"scope":21436,"src":"2232:254:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1974],"body":{"id":20976,"nodeType":"Block","src":"2572:180:130","statements":[{"assignments":[20957],"declarations":[{"constant":false,"id":20957,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":20976,"src":"2582:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20965,"initialValue":{"arguments":[{"id":20959,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20950,"src":"2620:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20960,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"2628:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2628:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20962,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"2655:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2655:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20958,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"2600:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2600:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2582:87:130"},{"expression":{"arguments":[{"expression":{"id":20967,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2689:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2689:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":20969,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20948,"src":"2701:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20970,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20957,"src":"2705:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20971,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20950,"src":"2714:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20966,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"2679:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":20972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2679:42:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20973,"nodeType":"ExpressionStatement","src":"2679:42:130"},{"expression":{"id":20974,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20957,"src":"2738:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20955,"id":20975,"nodeType":"Return","src":"2731:14:130"}]},"functionSelector":"ea785a5e","id":20977,"implemented":true,"kind":"function","modifiers":[],"name":"burnTo","nodeType":"FunctionDefinition","overrides":{"id":20952,"nodeType":"OverrideSpecifier","overrides":[],"src":"2545:8:130"},"parameters":{"id":20951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20948,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":20977,"src":"2508:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20947,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20950,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":20977,"src":"2520:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20949,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2507:28:130"},"returnParameters":{"id":20955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":20977,"src":"2563:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20953,"name":"uint256","nodeType":"ElementaryTypeName","src":"2563:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2562:9:130"},"scope":21436,"src":"2492:260:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1980],"body":{"id":21011,"nodeType":"Block","src":"2813:236:130","statements":[{"assignments":[20984],"declarations":[{"constant":false,"id":20984,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21011,"src":"2823:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20983,"name":"uint256","nodeType":"ElementaryTypeName","src":"2823:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20989,"initialValue":{"arguments":[{"expression":{"id":20986,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2850:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2850:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":20985,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"2840:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2840:21:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2823:38:130"},{"assignments":[20991],"declarations":[{"constant":false,"id":20991,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21011,"src":"2871:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20990,"name":"uint256","nodeType":"ElementaryTypeName","src":"2871:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20999,"initialValue":{"arguments":[{"id":20993,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20984,"src":"2909:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20994,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"2917:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2917:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":20996,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"2944:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":20997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2944:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20992,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"2889:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2889:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2871:87:130"},{"expression":{"arguments":[{"expression":{"id":21001,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2978:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2978:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":21003,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2990:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2990:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21005,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20991,"src":"3002:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21006,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20984,"src":"3011:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21000,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"2968:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2968:50:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21008,"nodeType":"ExpressionStatement","src":"2968:50:130"},{"expression":{"id":21009,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20991,"src":"3035:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":20982,"id":21010,"nodeType":"Return","src":"3028:14:130"}]},"functionSelector":"9975038c","id":21012,"implemented":true,"kind":"function","modifiers":[],"name":"burnAll","nodeType":"FunctionDefinition","overrides":{"id":20979,"nodeType":"OverrideSpecifier","overrides":[],"src":"2786:8:130"},"parameters":{"id":20978,"nodeType":"ParameterList","parameters":[],"src":"2774:2:130"},"returnParameters":{"id":20982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21012,"src":"2804:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20980,"name":"uint256","nodeType":"ElementaryTypeName","src":"2804:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2803:9:130"},"scope":21436,"src":"2758:291:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1988],"body":{"id":21047,"nodeType":"Block","src":"3122:228:130","statements":[{"assignments":[21021],"declarations":[{"constant":false,"id":21021,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21047,"src":"3132:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21020,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21026,"initialValue":{"arguments":[{"expression":{"id":21023,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3159:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3159:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":21022,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"3149:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3149:21:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3132:38:130"},{"assignments":[21028],"declarations":[{"constant":false,"id":21028,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21047,"src":"3180:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21027,"name":"uint256","nodeType":"ElementaryTypeName","src":"3180:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21036,"initialValue":{"arguments":[{"id":21030,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21021,"src":"3218:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21031,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"3226:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3226:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21033,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"3253:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3253:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21029,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"3198:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3198:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3180:87:130"},{"expression":{"arguments":[{"expression":{"id":21038,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3287:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3287:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21040,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21014,"src":"3299:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21041,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21028,"src":"3303:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21042,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21021,"src":"3312:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21037,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"3277:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3277:42:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21044,"nodeType":"ExpressionStatement","src":"3277:42:130"},{"expression":{"id":21045,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21028,"src":"3336:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21019,"id":21046,"nodeType":"Return","src":"3329:14:130"}]},"functionSelector":"a4fa9568","id":21048,"implemented":true,"kind":"function","modifiers":[],"name":"burnAllTo","nodeType":"FunctionDefinition","overrides":{"id":21016,"nodeType":"OverrideSpecifier","overrides":[],"src":"3095:8:130"},"parameters":{"id":21015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21014,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21048,"src":"3074:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21013,"name":"address","nodeType":"ElementaryTypeName","src":"3074:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3073:12:130"},"returnParameters":{"id":21019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21018,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21048,"src":"3113:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3113:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3112:9:130"},"scope":21436,"src":"3055:295:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1996],"body":{"id":21077,"nodeType":"Block","src":"3426:188:130","statements":[{"assignments":[21057],"declarations":[{"constant":false,"id":21057,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21077,"src":"3436:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21056,"name":"uint256","nodeType":"ElementaryTypeName","src":"3436:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21065,"initialValue":{"arguments":[{"id":21059,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21050,"src":"3475:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21060,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"3484:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3484:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21062,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"3511:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3511:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21058,"name":"_fromUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21416,"src":"3453:21:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3453:72:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3436:89:130"},{"expression":{"arguments":[{"expression":{"id":21067,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3544:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3544:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":21069,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3556:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3556:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21071,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21050,"src":"3568:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21072,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"3577:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21066,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21349,"src":"3535:8:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3535:49:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21074,"nodeType":"ExpressionStatement","src":"3535:49:130"},{"expression":{"id":21075,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"3601:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21055,"id":21076,"nodeType":"Return","src":"3594:13:130"}]},"functionSelector":"b6b55f25","id":21078,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":21052,"nodeType":"OverrideSpecifier","overrides":[],"src":"3399:8:130"},"parameters":{"id":21051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21050,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21078,"src":"3373:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21049,"name":"uint256","nodeType":"ElementaryTypeName","src":"3373:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3372:17:130"},"returnParameters":{"id":21055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21054,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21078,"src":"3417:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21053,"name":"uint256","nodeType":"ElementaryTypeName","src":"3417:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3416:9:130"},"scope":21436,"src":"3356:258:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2006],"body":{"id":21108,"nodeType":"Block","src":"3705:180:130","statements":[{"assignments":[21089],"declarations":[{"constant":false,"id":21089,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21108,"src":"3715:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21088,"name":"uint256","nodeType":"ElementaryTypeName","src":"3715:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21097,"initialValue":{"arguments":[{"id":21091,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21082,"src":"3754:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21092,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"3763:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3763:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21094,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"3790:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3790:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21090,"name":"_fromUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21416,"src":"3732:21:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:72:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3715:89:130"},{"expression":{"arguments":[{"expression":{"id":21099,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3823:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3823:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21101,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21080,"src":"3835:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21102,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21082,"src":"3839:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21103,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21089,"src":"3848:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21098,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21349,"src":"3814:8:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3814:41:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21105,"nodeType":"ExpressionStatement","src":"3814:41:130"},{"expression":{"id":21106,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21089,"src":"3872:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21087,"id":21107,"nodeType":"Return","src":"3865:13:130"}]},"functionSelector":"2f4f21e2","id":21109,"implemented":true,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","overrides":{"id":21084,"nodeType":"OverrideSpecifier","overrides":[],"src":"3678:8:130"},"parameters":{"id":21083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21080,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21109,"src":"3640:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21079,"name":"address","nodeType":"ElementaryTypeName","src":"3640:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21082,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21109,"src":"3652:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21081,"name":"uint256","nodeType":"ElementaryTypeName","src":"3652:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3639:29:130"},"returnParameters":{"id":21087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21086,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21109,"src":"3696:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21085,"name":"uint256","nodeType":"ElementaryTypeName","src":"3696:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3695:9:130"},"scope":21436,"src":"3620:265:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2014],"body":{"id":21138,"nodeType":"Block","src":"3962:189:130","statements":[{"assignments":[21118],"declarations":[{"constant":false,"id":21118,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21138,"src":"3972:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21117,"name":"uint256","nodeType":"ElementaryTypeName","src":"3972:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21126,"initialValue":{"arguments":[{"id":21120,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21111,"src":"4011:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21121,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"4020:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4020:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21123,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"4047:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4047:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21119,"name":"_fromUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21416,"src":"3989:21:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3989:72:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3972:89:130"},{"expression":{"arguments":[{"expression":{"id":21128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4081:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4081:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":21130,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4093:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4093:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21132,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21111,"src":"4105:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21133,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21118,"src":"4114:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21127,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"4071:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4071:50:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21135,"nodeType":"ExpressionStatement","src":"4071:50:130"},{"expression":{"id":21136,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21118,"src":"4138:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21116,"id":21137,"nodeType":"Return","src":"4131:13:130"}]},"functionSelector":"2e1a7d4d","id":21139,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":21113,"nodeType":"OverrideSpecifier","overrides":[],"src":"3935:8:130"},"parameters":{"id":21112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21111,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21139,"src":"3909:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21110,"name":"uint256","nodeType":"ElementaryTypeName","src":"3909:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3908:17:130"},"returnParameters":{"id":21116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21115,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21139,"src":"3953:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3952:9:130"},"scope":21436,"src":"3891:260:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2024],"body":{"id":21169,"nodeType":"Block","src":"4242:181:130","statements":[{"assignments":[21150],"declarations":[{"constant":false,"id":21150,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21169,"src":"4252:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21149,"name":"uint256","nodeType":"ElementaryTypeName","src":"4252:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21158,"initialValue":{"arguments":[{"id":21152,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21143,"src":"4291:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21153,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"4300:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4300:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21155,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"4327:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4327:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21151,"name":"_fromUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21416,"src":"4269:21:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4269:72:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4252:89:130"},{"expression":{"arguments":[{"expression":{"id":21160,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4361:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4361:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21162,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21141,"src":"4373:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21163,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21143,"src":"4377:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21164,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21150,"src":"4386:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21159,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"4351:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4351:42:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21166,"nodeType":"ExpressionStatement","src":"4351:42:130"},{"expression":{"id":21167,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21150,"src":"4410:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21148,"id":21168,"nodeType":"Return","src":"4403:13:130"}]},"functionSelector":"205c2878","id":21170,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawTo","nodeType":"FunctionDefinition","overrides":{"id":21145,"nodeType":"OverrideSpecifier","overrides":[],"src":"4215:8:130"},"parameters":{"id":21144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21141,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21170,"src":"4177:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21140,"name":"address","nodeType":"ElementaryTypeName","src":"4177:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21143,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21170,"src":"4189:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21142,"name":"uint256","nodeType":"ElementaryTypeName","src":"4189:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4176:29:130"},"returnParameters":{"id":21148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21147,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21170,"src":"4233:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21146,"name":"uint256","nodeType":"ElementaryTypeName","src":"4233:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4232:9:130"},"scope":21436,"src":"4157:266:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2030],"body":{"id":21204,"nodeType":"Block","src":"4488:235:130","statements":[{"assignments":[21177],"declarations":[{"constant":false,"id":21177,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21204,"src":"4498:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21176,"name":"uint256","nodeType":"ElementaryTypeName","src":"4498:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21182,"initialValue":{"arguments":[{"expression":{"id":21179,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4525:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4525:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":21178,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"4515:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4515:21:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4498:38:130"},{"assignments":[21184],"declarations":[{"constant":false,"id":21184,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21204,"src":"4546:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21183,"name":"uint256","nodeType":"ElementaryTypeName","src":"4546:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21192,"initialValue":{"arguments":[{"id":21186,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21177,"src":"4584:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21187,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"4592:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4592:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21189,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"4619:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4619:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21185,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"4564:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4564:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4546:87:130"},{"expression":{"arguments":[{"expression":{"id":21194,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4653:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4653:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":21196,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4665:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4665:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21198,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21184,"src":"4677:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21199,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21177,"src":"4686:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21193,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"4643:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4643:50:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21201,"nodeType":"ExpressionStatement","src":"4643:50:130"},{"expression":{"id":21202,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21177,"src":"4710:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21175,"id":21203,"nodeType":"Return","src":"4703:13:130"}]},"functionSelector":"853828b6","id":21205,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawAll","nodeType":"FunctionDefinition","overrides":{"id":21172,"nodeType":"OverrideSpecifier","overrides":[],"src":"4461:8:130"},"parameters":{"id":21171,"nodeType":"ParameterList","parameters":[],"src":"4449:2:130"},"returnParameters":{"id":21175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21205,"src":"4479:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21173,"name":"uint256","nodeType":"ElementaryTypeName","src":"4479:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4478:9:130"},"scope":21436,"src":"4429:294:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2038],"body":{"id":21240,"nodeType":"Block","src":"4800:227:130","statements":[{"assignments":[21214],"declarations":[{"constant":false,"id":21214,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21240,"src":"4810:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21213,"name":"uint256","nodeType":"ElementaryTypeName","src":"4810:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21219,"initialValue":{"arguments":[{"expression":{"id":21216,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4837:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4837:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":21215,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"4827:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4827:21:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4810:38:130"},{"assignments":[21221],"declarations":[{"constant":false,"id":21221,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21240,"src":"4858:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21220,"name":"uint256","nodeType":"ElementaryTypeName","src":"4858:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21229,"initialValue":{"arguments":[{"id":21223,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21214,"src":"4896:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21224,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"4904:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4904:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21226,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"4931:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4931:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21222,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"4876:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4876:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4858:87:130"},{"expression":{"arguments":[{"expression":{"id":21231,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:130","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:130","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21233,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21207,"src":"4977:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21234,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21221,"src":"4981:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21235,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21214,"src":"4990:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21230,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21381,"src":"4955:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":21236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4955:42:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21237,"nodeType":"ExpressionStatement","src":"4955:42:130"},{"expression":{"id":21238,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21214,"src":"5014:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21212,"id":21239,"nodeType":"Return","src":"5007:13:130"}]},"functionSelector":"ca9add8f","id":21241,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawAllTo","nodeType":"FunctionDefinition","overrides":{"id":21209,"nodeType":"OverrideSpecifier","overrides":[],"src":"4773:8:130"},"parameters":{"id":21208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21207,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21241,"src":"4752:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21206,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4751:12:130"},"returnParameters":{"id":21212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21211,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21241,"src":"4791:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21210,"name":"uint256","nodeType":"ElementaryTypeName","src":"4791:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4790:9:130"},"scope":21436,"src":"4729:298:130","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2044],"body":{"id":21249,"nodeType":"Block","src":"5096:35:130","statements":[{"expression":{"id":21247,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"5113:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21246,"id":21248,"nodeType":"Return","src":"5106:18:130"}]},"functionSelector":"6f307dc3","id":21250,"implemented":true,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","overrides":{"id":21243,"nodeType":"OverrideSpecifier","overrides":[],"src":"5069:8:130"},"parameters":{"id":21242,"nodeType":"ParameterList","parameters":[],"src":"5052:2:130"},"returnParameters":{"id":21246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21245,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21250,"src":"5087:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21244,"name":"address","nodeType":"ElementaryTypeName","src":"5087:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5086:9:130"},"scope":21436,"src":"5033:98:130","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2050],"body":{"id":21259,"nodeType":"Block","src":"5205:49:130","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21256,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"5222:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5222:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21255,"id":21258,"nodeType":"Return","src":"5215:32:130"}]},"functionSelector":"c70920bc","id":21260,"implemented":true,"kind":"function","modifiers":[],"name":"totalUnderlying","nodeType":"FunctionDefinition","overrides":{"id":21252,"nodeType":"OverrideSpecifier","overrides":[],"src":"5178:8:130"},"parameters":{"id":21251,"nodeType":"ParameterList","parameters":[],"src":"5161:2:130"},"returnParameters":{"id":21255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21254,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21260,"src":"5196:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21253,"name":"uint256","nodeType":"ElementaryTypeName","src":"5196:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5195:9:130"},"scope":21436,"src":"5137:117:130","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2058],"body":{"id":21278,"nodeType":"Block","src":"5345:103:130","statements":[{"expression":{"arguments":[{"arguments":[{"id":21270,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21262,"src":"5392:5:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21269,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7844,"src":"5382:9:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5382:16:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21272,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"5400:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21274,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"5427:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5427:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21268,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"5362:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5362:79:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21267,"id":21277,"nodeType":"Return","src":"5355:86:130"}]},"functionSelector":"3af9e669","id":21279,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","overrides":{"id":21264,"nodeType":"OverrideSpecifier","overrides":[],"src":"5318:8:130"},"parameters":{"id":21263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21262,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":21279,"src":"5289:13:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21261,"name":"address","nodeType":"ElementaryTypeName","src":"5289:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5288:15:130"},"returnParameters":{"id":21267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21266,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21279,"src":"5336:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21265,"name":"uint256","nodeType":"ElementaryTypeName","src":"5336:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5335:9:130"},"scope":21436,"src":"5260:188:130","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2066],"body":{"id":21295,"nodeType":"Block","src":"5541:96:130","statements":[{"expression":{"arguments":[{"id":21288,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21281,"src":"5580:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21289,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"5589:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5589:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21291,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"5616:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5616:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21287,"name":"_fromUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21416,"src":"5558:21:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5558:72:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21286,"id":21294,"nodeType":"Return","src":"5551:79:130"}]},"functionSelector":"ed0287c0","id":21296,"implemented":true,"kind":"function","modifiers":[],"name":"underlyingToWrapper","nodeType":"FunctionDefinition","overrides":{"id":21283,"nodeType":"OverrideSpecifier","overrides":[],"src":"5514:8:130"},"parameters":{"id":21282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21281,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21296,"src":"5483:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21280,"name":"uint256","nodeType":"ElementaryTypeName","src":"5483:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5482:17:130"},"returnParameters":{"id":21286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21285,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21296,"src":"5532:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5532:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5531:9:130"},"scope":21436,"src":"5454:183:130","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2074],"body":{"id":21312,"nodeType":"Block","src":"5729:93:130","statements":[{"expression":{"arguments":[{"id":21305,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21298,"src":"5766:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21306,"name":"_queryUnderlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21397,"src":"5774:23:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5774:25:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":21308,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"5801:11:130","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":21309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5801:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21304,"name":"_toUnderlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21435,"src":"5746:19:130","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5746:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21303,"id":21311,"nodeType":"Return","src":"5739:76:130"}]},"functionSelector":"aab3b7db","id":21313,"implemented":true,"kind":"function","modifiers":[],"name":"wrapperToUnderlying","nodeType":"FunctionDefinition","overrides":{"id":21300,"nodeType":"OverrideSpecifier","overrides":[],"src":"5702:8:130"},"parameters":{"id":21299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21298,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21313,"src":"5672:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21297,"name":"uint256","nodeType":"ElementaryTypeName","src":"5672:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5671:16:130"},"returnParameters":{"id":21303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21302,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21313,"src":"5720:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21301,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:9:130"},"scope":21436,"src":"5643:179:130","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21348,"nodeType":"Block","src":"5951:191:130","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21325,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21321,"src":"5969:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5978:1:130","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5969:10:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206d696e74","id":21328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5981:48:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8efb70dd11f576ca162ede55e74d29e5b9015c1ecfe450bce4922109e536adb","typeString":"literal_string \"UnbuttonToken: too few unbutton tokens to mint\""},"value":"UnbuttonToken: too few unbutton tokens to mint"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c8efb70dd11f576ca162ede55e74d29e5b9015c1ecfe450bce4922109e536adb","typeString":"literal_string \"UnbuttonToken: too few unbutton tokens to mint\""}],"id":21324,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5961:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5961:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21330,"nodeType":"ExpressionStatement","src":"5961:69:130"},{"expression":{"arguments":[{"id":21335,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21315,"src":"6078:4:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":21338,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6092:4:130","typeDescriptions":{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}],"id":21337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6084:7:130","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21336,"name":"address","nodeType":"ElementaryTypeName","src":"6084:7:130","typeDescriptions":{}}},"id":21339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6084:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21340,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21319,"src":"6099:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21332,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"6048:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21331,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6041:6:130","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":21333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6041:19:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"6041:36:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":21341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6041:66:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21342,"nodeType":"ExpressionStatement","src":"6041:66:130"},{"expression":{"arguments":[{"id":21344,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21317,"src":"6124:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21345,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21321,"src":"6128:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21343,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"6118:5:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6118:17:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21347,"nodeType":"ExpressionStatement","src":"6118:17:130"}]},"id":21349,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nodeType":"FunctionDefinition","parameters":{"id":21322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21315,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":21349,"src":"5855:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21314,"name":"address","nodeType":"ElementaryTypeName","src":"5855:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21317,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21349,"src":"5877:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21316,"name":"address","nodeType":"ElementaryTypeName","src":"5877:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21319,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21349,"src":"5897:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21318,"name":"uint256","nodeType":"ElementaryTypeName","src":"5897:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21321,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21349,"src":"5922:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21320,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5845:97:130"},"returnParameters":{"id":21323,"nodeType":"ParameterList","parameters":[],"src":"5951:0:130"},"scope":21436,"src":"5828:314:130","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":21380,"nodeType":"Block","src":"6272:172:130","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21361,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21357,"src":"6290:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6299:1:130","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6290:10:130","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206275726e","id":21364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6302:48:130","typeDescriptions":{"typeIdentifier":"t_stringliteral_8227e3a15d003d3d6ff3d5588b2068ddcfcb0112209cec19094e0b9693ba4184","typeString":"literal_string \"UnbuttonToken: too few unbutton tokens to burn\""},"value":"UnbuttonToken: too few unbutton tokens to burn"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8227e3a15d003d3d6ff3d5588b2068ddcfcb0112209cec19094e0b9693ba4184","typeString":"literal_string \"UnbuttonToken: too few unbutton tokens to burn\""}],"id":21360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6282:7:130","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6282:69:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21366,"nodeType":"ExpressionStatement","src":"6282:69:130"},{"expression":{"arguments":[{"id":21368,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21351,"src":"6368:4:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21369,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21357,"src":"6374:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21367,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"6362:5:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6362:19:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21371,"nodeType":"ExpressionStatement","src":"6362:19:130"},{"expression":{"arguments":[{"id":21376,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21353,"src":"6425:2:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21377,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21355,"src":"6429:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21373,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"6399:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21372,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6392:6:130","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":21374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6392:19:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"6392:32:130","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6392:45:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21379,"nodeType":"ExpressionStatement","src":"6392:45:130"}]},"id":21381,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nodeType":"FunctionDefinition","parameters":{"id":21358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21351,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":21381,"src":"6176:12:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21350,"name":"address","nodeType":"ElementaryTypeName","src":"6176:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21353,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":21381,"src":"6198:10:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21352,"name":"address","nodeType":"ElementaryTypeName","src":"6198:7:130","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21355,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21381,"src":"6218:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21354,"name":"uint256","nodeType":"ElementaryTypeName","src":"6218:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21357,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21381,"src":"6243:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21356,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6166:97:130"},"returnParameters":{"id":21359,"nodeType":"ParameterList","parameters":[],"src":"6272:0:130"},"scope":21436,"src":"6148:296:130","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":21396,"nodeType":"Block","src":"6516:68:130","statements":[{"expression":{"arguments":[{"arguments":[{"id":21392,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6571:4:130","typeDescriptions":{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockUnbuttonERC20_$21436","typeString":"contract MockUnbuttonERC20"}],"id":21391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6563:7:130","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21390,"name":"address","nodeType":"ElementaryTypeName","src":"6563:7:130","typeDescriptions":{}}},"id":21393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6563:13:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":21387,"name":"_underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20804,"src":"6540:11:130","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21386,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"6533:6:130","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":21388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6533:19:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"6533:29:130","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":21394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6533:44:130","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21385,"id":21395,"nodeType":"Return","src":"6526:51:130"}]},"id":21397,"implemented":true,"kind":"function","modifiers":[],"name":"_queryUnderlyingBalance","nodeType":"FunctionDefinition","parameters":{"id":21382,"nodeType":"ParameterList","parameters":[],"src":"6482:2:130"},"returnParameters":{"id":21385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21384,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21397,"src":"6507:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21383,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6506:9:130"},"scope":21436,"src":"6450:134:130","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":21415,"nodeType":"Block","src":"6746:66:130","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21408,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21399,"src":"6764:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21409,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21403,"src":"6774:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6764:21:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6763:23:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":21412,"name":"totalUnderlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21401,"src":"6789:16:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6763:42:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21407,"id":21414,"nodeType":"Return","src":"6756:49:130"}]},"id":21416,"implemented":true,"kind":"function","modifiers":[],"name":"_fromUnderlyingAmount","nodeType":"FunctionDefinition","parameters":{"id":21404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21399,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":21416,"src":"6630:15:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21398,"name":"uint256","nodeType":"ElementaryTypeName","src":"6630:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21401,"mutability":"mutable","name":"totalUnderlying_","nodeType":"VariableDeclaration","scope":21416,"src":"6655:24:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6655:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21403,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":21416,"src":"6689:19:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6689:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6620:94:130"},"returnParameters":{"id":21407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21416,"src":"6737:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21405,"name":"uint256","nodeType":"ElementaryTypeName","src":"6737:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6736:9:130"},"scope":21436,"src":"6590:222:130","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":21434,"nodeType":"Block","src":"6971:65:130","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21427,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21418,"src":"6989:6:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":21428,"name":"totalUnderlying_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21420,"src":"6998:16:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6989:25:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6988:27:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":21431,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21422,"src":"7018:11:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6988:41:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21426,"id":21433,"nodeType":"Return","src":"6981:48:130"}]},"id":21435,"implemented":true,"kind":"function","modifiers":[],"name":"_toUnderlyingAmount","nodeType":"FunctionDefinition","parameters":{"id":21423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21418,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21435,"src":"6856:14:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21417,"name":"uint256","nodeType":"ElementaryTypeName","src":"6856:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21420,"mutability":"mutable","name":"totalUnderlying_","nodeType":"VariableDeclaration","scope":21435,"src":"6880:24:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21419,"name":"uint256","nodeType":"ElementaryTypeName","src":"6880:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21422,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":21435,"src":"6914:19:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21421,"name":"uint256","nodeType":"ElementaryTypeName","src":"6914:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6846:93:130"},"returnParameters":{"id":21426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21425,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21435,"src":"6962:7:130","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21424,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:130","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6961:9:130"},"scope":21436,"src":"6818:218:130","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":21437,"src":"1053:5985:130"}],"src":"785:6254:130"},"id":130},"contracts/test/MockWstETH.sol":{"ast":{"absolutePath":"contracts/test/MockWstETH.sol","exportedSymbols":{"MockWstETH":[21617]},"id":21618,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":21438,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:131"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":21439,"nodeType":"ImportDirective","scope":21618,"sourceUnit":3091,"src":"756:76:131","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":21440,"nodeType":"ImportDirective","scope":21618,"sourceUnit":3148,"src":"833:77:131","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":21441,"nodeType":"ImportDirective","scope":21618,"sourceUnit":5906,"src":"912:72:131","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":21442,"nodeType":"ImportDirective","scope":21618,"sourceUnit":8224,"src":"985:75:131","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":21443,"nodeType":"ImportDirective","scope":21618,"sourceUnit":9108,"src":"1061:79:131","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21444,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8223,"src":"1165:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$8223","typeString":"contract ERC20"}},"id":21445,"nodeType":"InheritanceSpecifier","src":"1165:5:131"},{"baseName":{"id":21446,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3147,"src":"1172:7:131","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$3147","typeString":"contract IwstETH"}},"id":21447,"nodeType":"InheritanceSpecifier","src":"1172:7:131"}],"contractDependencies":[1722,3147,8223],"contractKind":"contract","fullyImplemented":true,"id":21617,"linearizedBaseContracts":[21617,3147,8223,1722],"name":"MockWstETH","nodeType":"ContractDefinition","nodes":[{"id":21450,"libraryName":{"id":21448,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1192:10:131","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1186:29:131","typeName":{"id":21449,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":21453,"libraryName":{"id":21451,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1226:9:131","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1220:27:131","typeName":{"id":21452,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1240:6:131","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"baseFunctions":[3102],"constant":false,"functionSelector":"c1fe3e48","id":21456,"mutability":"mutable","name":"stETH","nodeType":"VariableDeclaration","overrides":{"id":21455,"nodeType":"OverrideSpecifier","overrides":[],"src":"1267:8:131"},"scope":21617,"src":"1253:28:131","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},"typeName":{"id":21454,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"1253:6:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"visibility":"public"},{"constant":false,"functionSelector":"2c4e722e","id":21459,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":21617,"src":"1287:28:131","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1287:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"312e35653138","id":21458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:6:131","typeDescriptions":{"typeIdentifier":"t_rational_1500000000000000000_by_1","typeString":"int_const 1500000000000000000"},"value":"1.5e18"},"visibility":"public"},{"body":{"id":21472,"nodeType":"Block","src":"1388:30:131","statements":[{"expression":{"id":21470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21468,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21456,"src":"1398:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21469,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21461,"src":"1406:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"src":"1398:13:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":21471,"nodeType":"ExpressionStatement","src":"1398:13:131"}]},"id":21473,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"57726170706564205374616b6564204574686572","id":21464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1354:22:131","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4aaeeeba3941f74fbcdbbdf601cdfb58af6ecb0e16fb03b053f640b73c8e1b0","typeString":"literal_string \"Wrapped Staked Ether\""},"value":"Wrapped Staked Ether"},{"hexValue":"777374455448","id":21465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1378:8:131","typeDescriptions":{"typeIdentifier":"t_stringliteral_707722560bdff9b9a74d8e6546a03701e75a3e3fd30c3f0f5184fecdbd366335","typeString":"literal_string \"wstETH\""},"value":"wstETH"}],"id":21466,"modifierName":{"id":21463,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8223,"src":"1348:5:131","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$8223_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1348:39:131"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21461,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":21473,"src":"1334:12:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"},"typeName":{"id":21460,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":3090,"src":"1334:6:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1333:14:131"},"returnParameters":{"id":21467,"nodeType":"ParameterList","parameters":[],"src":"1388:0:131"},"scope":21617,"src":"1322:96:131","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3110],"body":{"id":21508,"nodeType":"Block","src":"1496:221:131","statements":[{"expression":{"arguments":[{"expression":{"id":21485,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1537:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1537:10:131","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":21489,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1557:4:131","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$21617","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$21617","typeString":"contract MockWstETH"}],"id":21488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1549:7:131","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21487,"name":"address","nodeType":"ElementaryTypeName","src":"1549:7:131","typeDescriptions":{}}},"id":21490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:13:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21491,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21475,"src":"1564:12:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21482,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21456,"src":"1513:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}],"id":21481,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1506:6:131","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":21483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:13:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"1506:30:131","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":21492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:71:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21493,"nodeType":"ExpressionStatement","src":"1506:71:131"},{"assignments":[21495],"declarations":[{"constant":false,"id":21495,"mutability":"mutable","name":"wstETHAmount","nodeType":"VariableDeclaration","scope":21508,"src":"1587:20:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21499,"initialValue":{"arguments":[{"id":21497,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21475,"src":"1627:12:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21496,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21580,"src":"1610:16:131","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1610:30:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1587:53:131"},{"expression":{"arguments":[{"expression":{"id":21501,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1656:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1656:10:131","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21503,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21495,"src":"1668:12:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21500,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1650:5:131","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1650:31:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21505,"nodeType":"ExpressionStatement","src":"1650:31:131"},{"expression":{"id":21506,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21495,"src":"1698:12:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21480,"id":21507,"nodeType":"Return","src":"1691:19:131"}]},"functionSelector":"ea598cb0","id":21509,"implemented":true,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","overrides":{"id":21477,"nodeType":"OverrideSpecifier","overrides":[],"src":"1469:8:131"},"parameters":{"id":21476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21475,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":21509,"src":"1438:20:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21474,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1437:22:131"},"returnParameters":{"id":21480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21479,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21509,"src":"1487:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1487:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1486:9:131"},"scope":21617,"src":"1424:293:131","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3118],"body":{"id":21540,"nodeType":"Block","src":"1798:201:131","statements":[{"expression":{"arguments":[{"expression":{"id":21518,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1814:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1814:10:131","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21520,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21511,"src":"1826:13:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21517,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"1808:5:131","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1808:32:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21522,"nodeType":"ExpressionStatement","src":"1808:32:131"},{"assignments":[21524],"declarations":[{"constant":false,"id":21524,"mutability":"mutable","name":"stETHAmount","nodeType":"VariableDeclaration","scope":21540,"src":"1850:19:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21523,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21528,"initialValue":{"arguments":[{"id":21526,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21511,"src":"1889:13:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21525,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21594,"src":"1872:16:131","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:31:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1850:53:131"},{"expression":{"arguments":[{"expression":{"id":21533,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1940:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1940:10:131","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21535,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21524,"src":"1952:11:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":21530,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21456,"src":"1920:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}],"id":21529,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1913:6:131","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1722_$","typeString":"type(contract IERC20)"}},"id":21531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1913:13:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"1913:26:131","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1913:51:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21537,"nodeType":"ExpressionStatement","src":"1913:51:131"},{"expression":{"id":21538,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21524,"src":"1981:11:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21516,"id":21539,"nodeType":"Return","src":"1974:18:131"}]},"functionSelector":"de0e9a3e","id":21541,"implemented":true,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","overrides":{"id":21513,"nodeType":"OverrideSpecifier","overrides":[],"src":"1771:8:131"},"parameters":{"id":21512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21511,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":21541,"src":"1739:21:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1739:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1738:23:131"},"returnParameters":{"id":21516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21515,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21541,"src":"1789:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21514,"name":"uint256","nodeType":"ElementaryTypeName","src":"1789:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1788:9:131"},"scope":21617,"src":"1723:276:131","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21565,"nodeType":"Block","src":"2032:120:131","statements":[{"expression":{"arguments":[{"arguments":[{"id":21552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2083:4:131","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$21617","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$21617","typeString":"contract MockWstETH"}],"id":21551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2075:7:131","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21550,"name":"address","nodeType":"ElementaryTypeName","src":"2075:7:131","typeDescriptions":{}}},"id":21553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2075:13:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":21544,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21456,"src":"2042:5:131","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$3090","typeString":"contract IstETH"}},"id":21546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":3089,"src":"2042:12:131","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":21549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":21547,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2063:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2063:9:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2042:32:131","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":21554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2042:47:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21555,"nodeType":"ExpressionStatement","src":"2042:47:131"},{"expression":{"arguments":[{"expression":{"id":21557,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2105:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2105:10:131","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"expression":{"id":21560,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2134:3:131","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2134:9:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21559,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21580,"src":"2117:16:131","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2117:27:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21556,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"2099:5:131","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2099:46:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21564,"nodeType":"ExpressionStatement","src":"2099:46:131"}]},"id":21566,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21542,"nodeType":"ParameterList","parameters":[],"src":"2012:2:131"},"returnParameters":{"id":21543,"nodeType":"ParameterList","parameters":[],"src":"2032:0:131"},"scope":21617,"src":"2005:147:131","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[3126],"body":{"id":21579,"nodeType":"Block","src":"2245:50:131","statements":[{"expression":{"arguments":[{"id":21576,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21459,"src":"2283:4:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21574,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21568,"src":"2262:12:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"2262:20:131","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2262:26:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21573,"id":21578,"nodeType":"Return","src":"2255:33:131"}]},"functionSelector":"b0e38900","id":21580,"implemented":true,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","overrides":{"id":21570,"nodeType":"OverrideSpecifier","overrides":[],"src":"2218:8:131"},"parameters":{"id":21569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21568,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":21580,"src":"2184:20:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2184:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2183:22:131"},"returnParameters":{"id":21573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21572,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21580,"src":"2236:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21571,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2235:9:131"},"scope":21617,"src":"2158:137:131","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3134],"body":{"id":21593,"nodeType":"Block","src":"2389:51:131","statements":[{"expression":{"arguments":[{"id":21590,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21459,"src":"2428:4:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21588,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21582,"src":"2406:13:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"2406:21:131","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2406:27:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21587,"id":21592,"nodeType":"Return","src":"2399:34:131"}]},"functionSelector":"bb2952fc","id":21594,"implemented":true,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","overrides":{"id":21584,"nodeType":"OverrideSpecifier","overrides":[],"src":"2362:8:131"},"parameters":{"id":21583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21582,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":21594,"src":"2327:21:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21581,"name":"uint256","nodeType":"ElementaryTypeName","src":"2327:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:23:131"},"returnParameters":{"id":21587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21586,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21594,"src":"2380:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2379:9:131"},"scope":21617,"src":"2301:139:131","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3140],"body":{"id":21604,"nodeType":"Block","src":"2512:49:131","statements":[{"expression":{"arguments":[{"hexValue":"31","id":21601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:7:131","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":21600,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21594,"src":"2529:16:131","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2529:25:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21599,"id":21603,"nodeType":"Return","src":"2522:32:131"}]},"functionSelector":"035faf82","id":21605,"implemented":true,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","overrides":{"id":21596,"nodeType":"OverrideSpecifier","overrides":[],"src":"2485:8:131"},"parameters":{"id":21595,"nodeType":"ParameterList","parameters":[],"src":"2468:2:131"},"returnParameters":{"id":21599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21598,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21605,"src":"2503:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21597,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2502:9:131"},"scope":21617,"src":"2446:115:131","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3146],"body":{"id":21615,"nodeType":"Block","src":"2634:49:131","statements":[{"expression":{"arguments":[{"hexValue":"31","id":21612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2668:7:131","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":21611,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21580,"src":"2651:16:131","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2651:25:131","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21610,"id":21614,"nodeType":"Return","src":"2644:32:131"}]},"functionSelector":"9576a0c8","id":21616,"implemented":true,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","overrides":{"id":21607,"nodeType":"OverrideSpecifier","overrides":[],"src":"2607:8:131"},"parameters":{"id":21606,"nodeType":"ParameterList","parameters":[],"src":"2590:2:131"},"returnParameters":{"id":21610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21616,"src":"2625:7:131","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21608,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:131","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2624:9:131"},"scope":21617,"src":"2567:116:131","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":21618,"src":"1142:1543:131"}],"src":"731:1955:131"},"id":131},"contracts/test/MockYearnTokenVault.sol":{"ast":{"absolutePath":"contracts/test/MockYearnTokenVault.sol","exportedSymbols":{"MockYearnTokenVault":[21809]},"id":21810,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":21619,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:132"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol","id":21620,"nodeType":"ImportDirective","scope":21810,"sourceUnit":3078,"src":"756:86:132","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":21621,"nodeType":"ImportDirective","scope":21810,"sourceUnit":9108,"src":"844:79:132","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":21622,"nodeType":"ImportDirective","scope":21810,"sourceUnit":5906,"src":"924:72:132","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":21623,"nodeType":"ImportDirective","scope":21810,"sourceUnit":9289,"src":"997:71:132","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21624,"name":"IYearnTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3077,"src":"1102:16:132","typeDescriptions":{"typeIdentifier":"t_contract$_IYearnTokenVault_$3077","typeString":"contract IYearnTokenVault"}},"id":21625,"nodeType":"InheritanceSpecifier","src":"1102:16:132"},{"baseName":{"id":21626,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":9288,"src":"1120:9:132","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$9288","typeString":"contract TestToken"}},"id":21627,"nodeType":"InheritanceSpecifier","src":"1120:9:132"}],"contractDependencies":[1520,1722,1758,3077,4860,7732,8223,8280,8389,9288],"contractKind":"contract","fullyImplemented":true,"id":21809,"linearizedBaseContracts":[21809,9288,8389,4860,7732,1520,1758,8280,8223,3077,1722],"name":"MockYearnTokenVault","nodeType":"ContractDefinition","nodes":[{"id":21630,"libraryName":{"id":21628,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":9107,"src":"1142:9:132","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9107","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1136:27:132","typeName":{"id":21629,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1156:6:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}},{"id":21633,"libraryName":{"id":21631,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5905,"src":"1174:10:132","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5905","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1168:29:132","typeName":{"id":21632,"name":"uint256","nodeType":"ElementaryTypeName","src":"1189:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":21636,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":21809,"src":"1203:28:132","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":21635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:4:132","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":false,"id":21638,"mutability":"immutable","name":"_underlyingToken","nodeType":"VariableDeclaration","scope":21809,"src":"1237:41:132","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":21637,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1237:6:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"private"},{"body":{"id":21658,"nodeType":"Block","src":"1452:51:132","statements":[{"expression":{"id":21656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21654,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"1462:16:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21655,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21646,"src":"1481:15:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"src":"1462:34:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21657,"nodeType":"ExpressionStatement","src":"1462:34:132"}]},"id":21659,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":21649,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21640,"src":"1428:4:132","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21650,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21642,"src":"1434:6:132","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":21651,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21644,"src":"1442:8:132","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":21652,"modifierName":{"id":21648,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9288,"src":"1418:9:132","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$9288_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1418:33:132"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21640,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":21659,"src":"1307:18:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21639,"name":"string","nodeType":"ElementaryTypeName","src":"1307:6:132","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21642,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":21659,"src":"1335:20:132","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":21641,"name":"string","nodeType":"ElementaryTypeName","src":"1335:6:132","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":21644,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":21659,"src":"1365:14:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21643,"name":"uint8","nodeType":"ElementaryTypeName","src":"1365:5:132","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":21646,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":21659,"src":"1389:22:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"},"typeName":{"id":21645,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1722,"src":"1389:6:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1297:120:132"},"returnParameters":{"id":21653,"nodeType":"ParameterList","parameters":[],"src":"1452:0:132"},"scope":21809,"src":"1285:218:132","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3050],"body":{"id":21670,"nodeType":"Block","src":"1567:49:132","statements":[{"expression":{"arguments":[{"id":21667,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"1592:16:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}],"id":21666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1584:7:132","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21665,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:132","typeDescriptions":{}}},"id":21668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1584:25:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":21664,"id":21669,"nodeType":"Return","src":"1577:32:132"}]},"functionSelector":"fc0c546a","id":21671,"implemented":true,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","overrides":{"id":21661,"nodeType":"OverrideSpecifier","overrides":[],"src":"1540:8:132"},"parameters":{"id":21660,"nodeType":"ParameterList","parameters":[],"src":"1523:2:132"},"returnParameters":{"id":21664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21663,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21671,"src":"1558:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21662,"name":"address","nodeType":"ElementaryTypeName","src":"1558:7:132","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1557:9:132"},"scope":21809,"src":"1509:107:132","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3066],"body":{"id":21706,"nodeType":"Block","src":"1732:206:132","statements":[{"expression":{"arguments":[{"expression":{"id":21684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1776:3:132","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1776:10:132","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":21688,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1796:4:132","typeDescriptions":{"typeIdentifier":"t_contract$_MockYearnTokenVault_$21809","typeString":"contract MockYearnTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockYearnTokenVault_$21809","typeString":"contract MockYearnTokenVault"}],"id":21687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1788:7:132","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21686,"name":"address","nodeType":"ElementaryTypeName","src":"1788:7:132","typeDescriptions":{}}},"id":21689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1788:13:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21690,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21673,"src":"1803:6:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21681,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"1742:16:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":9070,"src":"1742:33:132","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":21691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1742:68:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21692,"nodeType":"ExpressionStatement","src":"1742:68:132"},{"assignments":[21694],"declarations":[{"constant":false,"id":21694,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":21706,"src":"1820:21:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21693,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21698,"initialValue":{"arguments":[{"id":21696,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21673,"src":"1853:6:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21695,"name":"_toYearn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21808,"src":"1844:8:132","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1844:16:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1820:40:132"},{"expression":{"arguments":[{"id":21700,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21675,"src":"1876:9:132","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21701,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21694,"src":"1887:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21699,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"1870:5:132","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1870:31:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21703,"nodeType":"ExpressionStatement","src":"1870:31:132"},{"expression":{"id":21704,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21694,"src":"1918:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21680,"id":21705,"nodeType":"Return","src":"1911:20:132"}]},"functionSelector":"6e553f65","id":21707,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":21677,"nodeType":"OverrideSpecifier","overrides":[],"src":"1705:8:132"},"parameters":{"id":21676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21673,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21707,"src":"1648:14:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21672,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21675,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":21707,"src":"1672:17:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21674,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:132","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1638:57:132"},"returnParameters":{"id":21680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21679,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21707,"src":"1723:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21678,"name":"uint256","nodeType":"ElementaryTypeName","src":"1723:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1722:9:132"},"scope":21809,"src":"1622:316:132","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3076],"body":{"id":21738,"nodeType":"Block","src":"2040:194:132","statements":[{"expression":{"arguments":[{"expression":{"id":21718,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2056:3:132","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2056:10:132","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21720,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21709,"src":"2068:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21717,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"2050:5:132","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2050:32:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21722,"nodeType":"ExpressionStatement","src":"2050:32:132"},{"assignments":[21724],"declarations":[{"constant":false,"id":21724,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":21738,"src":"2092:18:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21723,"name":"uint256","nodeType":"ElementaryTypeName","src":"2092:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21728,"initialValue":{"arguments":[{"id":21726,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21709,"src":"2124:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21725,"name":"_fromYearn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21795,"src":"2113:10:132","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2113:25:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2092:46:132"},{"expression":{"arguments":[{"id":21732,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21711,"src":"2178:9:132","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21733,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21724,"src":"2189:10:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21729,"name":"_underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21638,"src":"2148:16:132","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1722","typeString":"contract IERC20"}},"id":21731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":9042,"src":"2148:29:132","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1722_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1722_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2148:52:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21735,"nodeType":"ExpressionStatement","src":"2148:52:132"},{"expression":{"id":21736,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21724,"src":"2217:10:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21716,"id":21737,"nodeType":"Return","src":"2210:17:132"}]},"functionSelector":"00f714ce","id":21739,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":21713,"nodeType":"OverrideSpecifier","overrides":[],"src":"2013:8:132"},"parameters":{"id":21712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21709,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":21739,"src":"1962:21:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1962:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21711,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":21739,"src":"1985:17:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21710,"name":"address","nodeType":"ElementaryTypeName","src":"1985:7:132","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1961:42:132"},"returnParameters":{"id":21716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21715,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21739,"src":"2031:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21714,"name":"uint256","nodeType":"ElementaryTypeName","src":"2031:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2030:9:132"},"scope":21809,"src":"1944:290:132","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3056],"body":{"id":21747,"nodeType":"Block","src":"2306:29:132","statements":[{"expression":{"id":21745,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21636,"src":"2323:5:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21744,"id":21746,"nodeType":"Return","src":"2316:12:132"}]},"functionSelector":"99530b06","id":21748,"implemented":true,"kind":"function","modifiers":[],"name":"pricePerShare","nodeType":"FunctionDefinition","overrides":{"id":21741,"nodeType":"OverrideSpecifier","overrides":[],"src":"2279:8:132"},"parameters":{"id":21740,"nodeType":"ParameterList","parameters":[],"src":"2262:2:132"},"returnParameters":{"id":21744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21743,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21748,"src":"2297:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2297:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2296:9:132"},"scope":21809,"src":"2240:95:132","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21757,"nodeType":"Block","src":"2384:32:132","statements":[{"expression":{"id":21755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21753,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21636,"src":"2394:5:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21754,"name":"newRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21750,"src":"2402:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2394:15:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21756,"nodeType":"ExpressionStatement","src":"2394:15:132"}]},"functionSelector":"34fcf437","id":21758,"implemented":true,"kind":"function","modifiers":[],"name":"setRate","nodeType":"FunctionDefinition","parameters":{"id":21751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21750,"mutability":"mutable","name":"newRate","nodeType":"VariableDeclaration","scope":21758,"src":"2358:15:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21749,"name":"uint256","nodeType":"ElementaryTypeName","src":"2358:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2357:17:132"},"returnParameters":{"id":21752,"nodeType":"ParameterList","parameters":[],"src":"2384:0:132"},"scope":21809,"src":"2341:75:132","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21769,"nodeType":"Block","src":"2496:49:132","statements":[{"expression":{"arguments":[{"id":21766,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21760,"src":"2524:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21765,"name":"_fromYearn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21795,"src":"2513:10:132","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2513:25:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21764,"id":21768,"nodeType":"Return","src":"2506:32:132"}]},"functionSelector":"09c23bf3","id":21770,"implemented":true,"kind":"function","modifiers":[],"name":"fromYearn","nodeType":"FunctionDefinition","parameters":{"id":21761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21760,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":21770,"src":"2441:21:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2440:23:132"},"returnParameters":{"id":21764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21763,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21770,"src":"2487:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21762,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2486:9:132"},"scope":21809,"src":"2422:123:132","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21781,"nodeType":"Block","src":"2620:44:132","statements":[{"expression":{"arguments":[{"id":21778,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21772,"src":"2646:10:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21777,"name":"_toYearn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21808,"src":"2637:8:132","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":21779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2637:20:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21776,"id":21780,"nodeType":"Return","src":"2630:27:132"}]},"functionSelector":"8a3e645a","id":21782,"implemented":true,"kind":"function","modifiers":[],"name":"toYearn","nodeType":"FunctionDefinition","parameters":{"id":21773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21772,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":21782,"src":"2568:18:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21771,"name":"uint256","nodeType":"ElementaryTypeName","src":"2568:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2567:20:132"},"returnParameters":{"id":21776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21775,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21782,"src":"2611:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2611:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2610:9:132"},"scope":21809,"src":"2551:113:132","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":21794,"nodeType":"Block","src":"2744:52:132","statements":[{"expression":{"arguments":[{"id":21791,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21636,"src":"2783:5:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21789,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21784,"src":"2761:13:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5709,"src":"2761:21:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:28:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21788,"id":21793,"nodeType":"Return","src":"2754:35:132"}]},"id":21795,"implemented":true,"kind":"function","modifiers":[],"name":"_fromYearn","nodeType":"FunctionDefinition","parameters":{"id":21785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21784,"mutability":"mutable","name":"wrappedAmount","nodeType":"VariableDeclaration","scope":21795,"src":"2690:21:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21783,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2689:23:132"},"returnParameters":{"id":21788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21787,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21795,"src":"2735:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21786,"name":"uint256","nodeType":"ElementaryTypeName","src":"2735:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2734:9:132"},"scope":21809,"src":"2670:126:132","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":21807,"nodeType":"Block","src":"2871:49:132","statements":[{"expression":{"arguments":[{"id":21804,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21636,"src":"2907:5:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21802,"name":"mainAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21797,"src":"2888:10:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5636,"src":"2888:18:132","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2888:25:132","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21801,"id":21806,"nodeType":"Return","src":"2881:32:132"}]},"id":21808,"implemented":true,"kind":"function","modifiers":[],"name":"_toYearn","nodeType":"FunctionDefinition","parameters":{"id":21798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21797,"mutability":"mutable","name":"mainAmount","nodeType":"VariableDeclaration","scope":21808,"src":"2820:18:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21796,"name":"uint256","nodeType":"ElementaryTypeName","src":"2820:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2819:20:132"},"returnParameters":{"id":21801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21800,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21808,"src":"2862:7:132","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2862:7:132","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2861:9:132"},"scope":21809,"src":"2802:118:132","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":21810,"src":"1070:1852:132"}],"src":"731:2192:132"},"id":132},"contracts/test/TestWETH.sol":{"ast":{"absolutePath":"contracts/test/TestWETH.sol","exportedSymbols":{"TestWETH":[22074]},"id":22075,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":21811,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:133"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":21812,"nodeType":"ImportDirective","scope":22075,"sourceUnit":1645,"src":"756:78:133","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":21813,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1644,"src":"857:5:133","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1644","typeString":"contract IWETH"}},"id":21814,"nodeType":"InheritanceSpecifier","src":"857:5:133"}],"contractDependencies":[1644,1722],"contractKind":"contract","fullyImplemented":true,"id":22074,"linearizedBaseContracts":[22074,1644,1722],"name":"TestWETH","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":21817,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":22074,"src":"869:36:133","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":21815,"name":"string","nodeType":"ElementaryTypeName","src":"869:6:133","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57726170706564204574686572","id":21816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"890:15:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3","typeString":"literal_string \"Wrapped Ether\""},"value":"Wrapped Ether"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":21820,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":22074,"src":"911:29:133","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":21818,"name":"string","nodeType":"ElementaryTypeName","src":"911:6:133","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57455448","id":21819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"934:6:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8","typeString":"literal_string \"WETH\""},"value":"WETH"},"visibility":"public"},{"constant":false,"functionSelector":"313ce567","id":21823,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":22074,"src":"946:26:133","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":21821,"name":"uint8","nodeType":"ElementaryTypeName","src":"946:5:133","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":21822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"970:2:133","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"anonymous":false,"id":21829,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":21828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21825,"indexed":true,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":21829,"src":"993:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21824,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21827,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":21829,"src":"1014:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1014:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"992:34:133"},"src":"979:48:133"},{"anonymous":false,"id":21835,"name":"Withdrawal","nodeType":"EventDefinition","parameters":{"id":21834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21831,"indexed":true,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":21835,"src":"1049:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21830,"name":"address","nodeType":"ElementaryTypeName","src":"1049:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21833,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":21835,"src":"1070:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21832,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1048:34:133"},"src":"1032:51:133"},{"baseFunctions":[1661],"constant":false,"functionSelector":"70a08231","id":21840,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":{"id":21839,"nodeType":"OverrideSpecifier","overrides":[],"src":"1124:8:133"},"scope":22074,"src":"1089:53:133","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":21838,"keyType":{"id":21836,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1089:27:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1108:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[1681],"constant":false,"functionSelector":"dd62ed3e","id":21847,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":{"id":21846,"nodeType":"OverrideSpecifier","overrides":[],"src":"1203:8:133"},"scope":22074,"src":"1148:73:133","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":21845,"keyType":{"id":21841,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1148:47:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":21844,"keyType":{"id":21842,"name":"address","nodeType":"ElementaryTypeName","src":"1175:7:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1167:27:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":21843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":21853,"nodeType":"Block","src":"1255:26:133","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":21850,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21874,"src":"1265:7:133","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":21851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1265:9:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21852,"nodeType":"ExpressionStatement","src":"1265:9:133"}]},"id":21854,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":21848,"nodeType":"ParameterList","parameters":[],"src":"1235:2:133"},"returnParameters":{"id":21849,"nodeType":"ParameterList","parameters":[],"src":"1255:0:133"},"scope":22074,"src":"1228:53:133","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1638],"body":{"id":21873,"nodeType":"Block","src":"1330:96:133","statements":[{"expression":{"id":21864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21858,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"1340:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21861,"indexExpression":{"expression":{"id":21859,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1350:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1350:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1340:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":21862,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:34:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21865,"nodeType":"ExpressionStatement","src":"1340:34:133"},{"eventCall":{"arguments":[{"expression":{"id":21867,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1397:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1397:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":21869,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1409:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1409:9:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21866,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21829,"src":"1389:7:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1389:30:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21872,"nodeType":"EmitStatement","src":"1384:35:133"}]},"functionSelector":"d0e30db0","id":21874,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":21856,"nodeType":"OverrideSpecifier","overrides":[],"src":"1321:8:133"},"parameters":{"id":21855,"nodeType":"ParameterList","parameters":[],"src":"1303:2:133"},"returnParameters":{"id":21857,"nodeType":"ParameterList","parameters":[],"src":"1330:0:133"},"scope":22074,"src":"1287:139:133","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1643],"body":{"id":21911,"nodeType":"Block","src":"1479:192:133","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":21881,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"1497:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21884,"indexExpression":{"expression":{"id":21882,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1507:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1507:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1497:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":21885,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21876,"src":"1522:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1497:28:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":21887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1527:22:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":21880,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1489:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1489:61:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21889,"nodeType":"ExpressionStatement","src":"1489:61:133"},{"expression":{"id":21895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21890,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"1560:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21893,"indexExpression":{"expression":{"id":21891,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1570:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1570:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1560:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":21894,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21876,"src":"1585:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1560:28:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21896,"nodeType":"ExpressionStatement","src":"1560:28:133"},{"expression":{"arguments":[{"id":21902,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21876,"src":"1618:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":21897,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1598:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1598:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":21901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"1598:19:133","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":21903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:24:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21904,"nodeType":"ExpressionStatement","src":"1598:24:133"},{"eventCall":{"arguments":[{"expression":{"id":21906,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1648:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1648:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21908,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21876,"src":"1660:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21905,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"1637:10:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:27:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21910,"nodeType":"EmitStatement","src":"1632:32:133"}]},"functionSelector":"2e1a7d4d","id":21912,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":21878,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:133"},"parameters":{"id":21877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21876,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":21912,"src":"1450:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21875,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:13:133"},"returnParameters":{"id":21879,"nodeType":"ParameterList","parameters":[],"src":"1479:0:133"},"scope":22074,"src":"1432:239:133","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":21930,"nodeType":"Block","src":"1832:92:133","statements":[{"expression":{"id":21923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21919,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"1842:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21921,"indexExpression":{"id":21920,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21914,"src":"1852:11:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1842:22:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":21922,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21916,"src":"1868:6:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1842:32:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21924,"nodeType":"ExpressionStatement","src":"1842:32:133"},{"eventCall":{"arguments":[{"id":21926,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21914,"src":"1897:11:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21927,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21916,"src":"1910:6:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21925,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21829,"src":"1889:7:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":21928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1889:28:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21929,"nodeType":"EmitStatement","src":"1884:33:133"}]},"functionSelector":"40c10f19","id":21931,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":21917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21914,"mutability":"mutable","name":"destinatary","nodeType":"VariableDeclaration","scope":21931,"src":"1786:19:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21913,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21916,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":21931,"src":"1807:14:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21915,"name":"uint256","nodeType":"ElementaryTypeName","src":"1807:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1785:37:133"},"returnParameters":{"id":21918,"nodeType":"ParameterList","parameters":[],"src":"1832:0:133"},"scope":22074,"src":"1772:152:133","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1653],"body":{"id":21943,"nodeType":"Block","src":"1992:45:133","statements":[{"expression":{"expression":{"arguments":[{"id":21939,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2017:4:133","typeDescriptions":{"typeIdentifier":"t_contract$_TestWETH_$22074","typeString":"contract TestWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TestWETH_$22074","typeString":"contract TestWETH"}],"id":21938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2009:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21937,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:133","typeDescriptions":{}}},"id":21940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:13:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":21941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2009:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21936,"id":21942,"nodeType":"Return","src":"2002:28:133"}]},"functionSelector":"18160ddd","id":21944,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":21933,"nodeType":"OverrideSpecifier","overrides":[],"src":"1965:8:133"},"parameters":{"id":21932,"nodeType":"ParameterList","parameters":[],"src":"1950:2:133"},"returnParameters":{"id":21936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21935,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21944,"src":"1983:7:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:133"},"scope":22074,"src":"1930:107:133","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1691],"body":{"id":21972,"nodeType":"Block","src":"2117:115:133","statements":[{"expression":{"id":21961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":21954,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21847,"src":"2127:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":21958,"indexExpression":{"expression":{"id":21955,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2137:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2137:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2127:21:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":21959,"indexExpression":{"id":21957,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21946,"src":"2149:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2127:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21960,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21948,"src":"2156:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2127:32:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21962,"nodeType":"ExpressionStatement","src":"2127:32:133"},{"eventCall":{"arguments":[{"expression":{"id":21964,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2183:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2183:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21966,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21946,"src":"2195:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21967,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21948,"src":"2200:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21963,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"2174:8:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":21968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:30:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21969,"nodeType":"EmitStatement","src":"2169:35:133"},{"expression":{"hexValue":"74727565","id":21970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2221:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21953,"id":21971,"nodeType":"Return","src":"2214:11:133"}]},"functionSelector":"095ea7b3","id":21973,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":21950,"nodeType":"OverrideSpecifier","overrides":[],"src":"2093:8:133"},"parameters":{"id":21949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21946,"mutability":"mutable","name":"guy","nodeType":"VariableDeclaration","scope":21973,"src":"2060:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21945,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21948,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":21973,"src":"2073:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21947,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2059:26:133"},"returnParameters":{"id":21953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21952,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21973,"src":"2111:4:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21951,"name":"bool","nodeType":"ElementaryTypeName","src":"2111:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2110:6:133"},"scope":22074,"src":"2043:189:133","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1671],"body":{"id":21990,"nodeType":"Block","src":"2313:58:133","statements":[{"expression":{"arguments":[{"expression":{"id":21984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2343:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2343:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":21986,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21975,"src":"2355:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21987,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"2360:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21983,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22073,"src":"2330:12:133","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":21988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:34:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21982,"id":21989,"nodeType":"Return","src":"2323:41:133"}]},"functionSelector":"a9059cbb","id":21991,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":21979,"nodeType":"OverrideSpecifier","overrides":[],"src":"2289:8:133"},"parameters":{"id":21978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21975,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":21991,"src":"2256:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21974,"name":"address","nodeType":"ElementaryTypeName","src":"2256:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21977,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":21991,"src":"2269:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21976,"name":"uint256","nodeType":"ElementaryTypeName","src":"2269:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:26:133"},"returnParameters":{"id":21982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":21991,"src":"2307:4:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21980,"name":"bool","nodeType":"ElementaryTypeName","src":"2307:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2306:6:133"},"scope":22074,"src":"2238:133:133","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1703],"body":{"id":22072,"nodeType":"Block","src":"2499:413:133","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22004,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"2517:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22006,"indexExpression":{"id":22005,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2527:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2517:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":22007,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2535:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2517:21:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":22009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2540:22:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":22003,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2509:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:54:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22011,"nodeType":"ExpressionStatement","src":"2509:54:133"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22012,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2578:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":22013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2585:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2585:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2578:17:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":22016,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21847,"src":"2599:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":22018,"indexExpression":{"id":22017,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2609:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:14:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22021,"indexExpression":{"expression":{"id":22019,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2614:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2614:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":22025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2637:2:133","subExpression":{"hexValue":"31","id":22024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:1:133","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":22023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:133","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22022,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:133","typeDescriptions":{}}},"id":22026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:11:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2599:41:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2578:62:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22051,"nodeType":"IfStatement","src":"2574:208:133","trueBody":{"id":22050,"nodeType":"Block","src":"2642:140:133","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":22030,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21847,"src":"2664:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":22032,"indexExpression":{"id":22031,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2674:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:14:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22035,"indexExpression":{"expression":{"id":22033,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2679:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2679:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":22036,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2694:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2664:33:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f414c4c4f57414e4345","id":22038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2699:24:133","typeDescriptions":{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""},"value":"INSUFFICIENT_ALLOWANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""}],"id":22029,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2656:7:133","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":22039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2656:68:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22040,"nodeType":"ExpressionStatement","src":"2656:68:133"},{"expression":{"id":22048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":22041,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21847,"src":"2738:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":22045,"indexExpression":{"id":22042,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2748:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2738:14:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22046,"indexExpression":{"expression":{"id":22043,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2753:3:133","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2753:10:133","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2738:26:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":22047,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2768:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:33:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22049,"nodeType":"ExpressionStatement","src":"2738:33:133"}]}},{"expression":{"id":22056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22052,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"2792:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22054,"indexExpression":{"id":22053,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2802:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2792:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":22055,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2810:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2792:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22057,"nodeType":"ExpressionStatement","src":"2792:21:133"},{"expression":{"id":22062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22058,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21840,"src":"2823:9:133","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":22060,"indexExpression":{"id":22059,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21995,"src":"2833:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2823:14:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":22061,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2841:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2823:21:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22063,"nodeType":"ExpressionStatement","src":"2823:21:133"},{"eventCall":{"arguments":[{"id":22065,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"2869:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22066,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21995,"src":"2874:3:133","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22067,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21997,"src":"2879:3:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22064,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"2860:8:133","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":22068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2860:23:133","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22069,"nodeType":"EmitStatement","src":"2855:28:133"},{"expression":{"hexValue":"74727565","id":22070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2901:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":22002,"id":22071,"nodeType":"Return","src":"2894:11:133"}]},"functionSelector":"23b872dd","id":22073,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":21999,"nodeType":"OverrideSpecifier","overrides":[],"src":"2475:8:133"},"parameters":{"id":21998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21993,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":22073,"src":"2408:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21992,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21995,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":22073,"src":"2429:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21994,"name":"address","nodeType":"ElementaryTypeName","src":"2429:7:133","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21997,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":22073,"src":"2450:11:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21996,"name":"uint256","nodeType":"ElementaryTypeName","src":"2450:7:133","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:69:133"},"returnParameters":{"id":22002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22001,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":22073,"src":"2493:4:133","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22000,"name":"bool","nodeType":"ElementaryTypeName","src":"2493:4:133","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2492:6:133"},"scope":22074,"src":"2377:535:133","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":22075,"src":"836:2078:133"}],"src":"731:2184:133"},"id":133}},"contracts":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"IBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base minter interface, applicable to Mainnet minter or L2 pseudo minters.\",\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":\"IBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"IBalancerToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":\"IBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ILiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":\"ILiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"IRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":\"IRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"IStakingLiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit(uint256,address)":"6e553f65","deposit_reward_token(address,uint256)":"93f7aa67","getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","setRelativeWeightCap(uint256)":"10d3eb04","set_reward_distributor(address,address)":"058a3a24","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":\"IStakingLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"StablePoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042944287b4d15c6370bf750a06901cfb55a12e39f31d5b4392c7123f9996764764736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP SWAP5 TIMESTAMP DUP8 0xB4 0xD1 0x5C PUSH4 0x70BF750A MOD SWAP1 SHR 0xFB SSTORE LOG1 0x2E CODECOPY RETURN SAR JUMPDEST NUMBER SWAP3 0xC7 SLT EXTCODEHASH SWAP10 SWAP7 PUSH23 0x4764736F6C634300070100330000000000000000000000 ","sourceMap":"721:2017:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042944287b4d15c6370bf750a06901cfb55a12e39f31d5b4392c7123f9996764764736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP SWAP5 TIMESTAMP DUP8 0xB4 0xD1 0x5C PUSH4 0x70BF750A MOD SWAP1 SHR 0xFB SSTORE LOG1 0x2E CODECOPY RETURN SAR JUMPDEST NUMBER SWAP3 0xC7 SLT EXTCODEHASH SWAP10 SWAP7 PUSH23 0x4764736F6C634300070100330000000000000000000000 ","sourceMap":"721:2017:5:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":\"StablePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"BasePoolUserData":{"abi":[{"inputs":[],"name":"RECOVERY_MODE_EXIT_KIND","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608f610024600b82828239805160001a607314601757fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806309564cb1146038575b600080fd5b603e6054565b6040805160ff9092168252519081900360200190f35b60ff8156fea2646970667358221220378fd437b6a4bf4c57f3a732a65742cb1c7ed7247fc625b1d6cfd5911ee6c06064736f6c63430007010033","opcodes":"PUSH1 0x8F PUSH2 0x24 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x17 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9564CB1 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0xFF DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY DUP16 0xD4 CALLDATACOPY 0xB6 LOG4 0xBF 0x4C JUMPI RETURN 0xA7 ORIGIN 0xA6 JUMPI TIMESTAMP 0xCB SHR PUSH31 0xD7247FC625B1D6CFD5911EE6C06064736F6C63430007010033000000000000 ","sourceMap":"721:811:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806309564cb1146038575b600080fd5b603e6054565b6040805160ff9092168252519081900360200190f35b60ff8156fea2646970667358221220378fd437b6a4bf4c57f3a732a65742cb1c7ed7247fc625b1d6cfd5911ee6c06064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9564CB1 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0xFF DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY DUP16 0xD4 CALLDATACOPY 0xB6 LOG4 0xBF 0x4C JUMPI RETURN 0xA7 ORIGIN 0xA6 JUMPI TIMESTAMP 0xCB SHR PUSH31 0xD7247FC625B1D6CFD5911EE6C06064736F6C63430007010033000000000000 ","sourceMap":"721:811:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;963:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1011:3;963:51;:::o"},"methodIdentifiers":{"RECOVERY_MODE_EXIT_KIND()":"09564cb1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"RECOVERY_MODE_EXIT_KIND\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":\"BasePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"IBasePoolFactory":{"abi":[{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":\"IBasePoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"IRateProvider":{"abi":[{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRate()":"679aefce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":\"IRateProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"IRateProviderPool":{"abi":[{"inputs":[],"name":"getRateProviders","outputs":[{"internalType":"contract IRateProvider[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRateProviders()":"238a2d59"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRateProviders\",\"outputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for Pools that assign rate providers to their tokens.\",\"kind\":\"dev\",\"methods\":{\"getRateProviders()\":{\"details\":\"Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider for that token.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":\"IRateProviderPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"IRecoveryMode":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the RecoveryMode module.\",\"events\":{\"RecoveryModeStateChanged(bool)\":{\"details\":\"Emitted when the Recovery Mode status changes.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits.\"},\"enableRecoveryMode()\":{\"notice\":\"Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional exits with low computational complexity and no dependencies.\"},\"inRecoveryMode()\":{\"notice\":\"Returns true if the Pool is in Recovery Mode.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":\"IRecoveryMode\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"WeightedPoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205711e46b66ce55cce8a68f67875aaec13ddf7db99d3188204412dd401e441c8064736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI GT 0xE4 PUSH12 0x66CE55CCE8A68F67875AAEC1 RETURNDATASIZE 0xDF PUSH30 0xB99D3188204412DD401E441C8064736F6C63430007010033000000000000 ","sourceMap":"774:2136:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205711e46b66ce55cce8a68f67875aaec13ddf7db99d3188204412dd401e441c8064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI GT 0xE4 PUSH12 0x66CE55CCE8A68F67875AAEC1 RETURNDATASIZE 0xDF PUSH30 0xB99D3188204412DD401E441C8064736F6C63430007010033000000000000 ","sourceMap":"774:2136:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":\"WeightedPoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ad732bec7ee0141d291da266d1fa87f23aa8562af21d6abb73ad7a770e108cce64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH20 0x2BEC7EE0141D291DA266D1FA87F23AA8562AF21D PUSH11 0xBB73AD7A770E108CCE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"5072:10023:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":\"Errors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ISignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the SignatureValidator helper, used to support meta-transactions.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":\"ISignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ITemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the TemporarilyPausable helper.\",\"events\":{\"PausedStateChanged(bool)\":{\"details\":\"Emitted every time the pause state changes by `_setPaused`.\"}},\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current paused state.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":\"ITemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"IVersion":{"abi":[{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple interface to retrieve the version of a deployed contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":\"IVersion\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"IERC4626":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","deposit(uint256,address)":"6e553f65","redeem(uint256,address,address)":"ba087652","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\"},\"Withdraw(address,address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `shares`, owned by `owner`, for `assets`, and transferred those `assets` to `receiver`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"asset()\":{\"details\":\"The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"The amount of `assets` that the Vault would exchange for the amount of `shares` provided, in an ideal scenario where all the conditions are met.\"},\"convertToShares(uint256)\":{\"details\":\"The amount of `shares` that the Vault would exchange for the amount of `assets` provided, in an ideal scenario where all the conditions are met.\"},\"deposit(uint256,address)\":{\"details\":\"Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\"},\"totalAssets()\":{\"details\":\"Total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"IERC20PermitDAI":{"abi":[{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"params\":{\"allowed\":\"Whether the spender is allowed or disallowed from spending\",\"expiry\":\"The time at which this expires (unix time)\",\"holder\":\"Token owner's address (Authorizer)\",\"nonce\":\"The permit nonce\",\"r\":\"r of the signature\",\"s\":\"s of the signature\",\"spender\":\"Spender's address\",\"v\":\"v of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"update allowance with a signed permit\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":\"IERC20PermitDAI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol":{"IAToken":{"abi":[{"inputs":[],"name":"UNDERLYING_ASSET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"UNDERLYING_ASSET_ADDRESS()":"b16a19de"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"returns the address of the aToken's underlying asset\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol\":\"IAToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol\":{\"keccak256\":\"0x77558371331d0989253759c9cd8e9de2c893276e6cc3b04d9162d437f4538725\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf6a3a2920f9164db48114538eb68f8bc08ccb904ea1bb7802176e5ee1aefed7\",\"dweb:/ipfs/QmcQPmTLcGgBwsG5iByY1QBAyrovDvg7qpPGp2AEu2sF1k\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"IBALTokenHolder":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getName()":"17d7de7c","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":\"IBALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"IBALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":\"IBALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0x3ea8fab66b0ca4ee8aeb4c84bbca9d365f34ea929f249244d3f9080c8dc9dc1b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://659d93d04dc7b5ba34f7da7bed2da9644ae9e1c1d7aec740bbf097eceb741c23\",\"dweb:/ipfs/QmcHaoRzRZGJeT5UyxqpXNPFis23kMhS4Nj39RBuAveRG5\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"IBalancerQueries":{"abi":[{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact result they would have if called on the Vault given the current state. Note that the results will be affected by other transactions interacting with the Pools involved. All query functions can be called both on-chain and off-chain. If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However, calling them via STATICCALL will fail. If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for non-view functions. In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same structs for simplicity.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":\"IBalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x745fc8ab86d691812bf311fe0f94acf09d31b18d6b48784dcdfa96096100b1c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://870d659f080fe5c87d0f18df21cf4777ebf93de9214aeae5ec6034ea796bd3c5\",\"dweb:/ipfs/QmU3HeamVBq7WoQvyWDeWbQYjueBU96Qrn69LQmZyCRwLV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"IBalancerRelayer":{"abi":[{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBalancerRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":\"IBalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol":{"IButtonWrapper":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalUnderlying()":"c70920bc","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":\"IButtonWrapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol":{"ICToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","mint(uint256)":"a0712d68","redeem(uint256)":"db006a75","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"returns\":{\"_0\":\"uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\"}},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"returns\":{\"_0\":\"uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"underlying()\":{\"details\":\"Underlying asset for this CToken\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":\"ICToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":{\"keccak256\":\"0x0a32eeae183b04333cee772022b0c084e6a0f676842731055dd63daddf6aa387\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3786f317c3dcbff798b2b461be6743a7c209da4cd88a2bea737daceba6ad5f41\",\"dweb:/ipfs/QmcbHLg2PZWWyqtGzM6CQCvhEA7fQ1r3WNh3A3GDxqDii3\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol":{"IEulerToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"convertBalanceToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"underlyingAmount","type":"uint256"}],"name":"convertUnderlyingToBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"subAccountId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlyingAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"subAccountId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","convertBalanceToUnderlying(uint256)":"010ad6d1","convertUnderlyingToBalance(uint256)":"52eac8af","deposit(uint256,uint256)":"e2bbb158","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlyingAsset()":"7158da7c","withdraw(uint256,uint256)":"441a3e70"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"convertBalanceToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"}],\"name\":\"convertUnderlyingToBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subAccountId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subAccountId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"convertBalanceToUnderlying(uint256)\":{\"details\":\"Convert an eToken balance to an underlying amount, taking into account current exchange rate\",\"params\":{\"balance\":\"eToken balance, in internal book-keeping units (18 decimals)\"},\"returns\":{\"_0\":\"Amount in underlying units, (same decimals as underlying token)\"}},\"convertUnderlyingToBalance(uint256)\":{\"details\":\"Convert an underlying amount to an eToken balance, taking into account current exchange rate\",\"params\":{\"underlyingAmount\":\"Amount in underlying units (same decimals as underlying token)\"},\"returns\":{\"_0\":\"eToken balance, in internal book-keeping units (18 decimals)\"}},\"deposit(uint256,uint256)\":{\"details\":\"Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"underlyingAsset()\":{\"details\":\"Address of underlying asset\"},\"withdraw(uint256,uint256)\":{\"details\":\"Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":\"IEulerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":{\"keccak256\":\"0x1831b7e182413889843464b9a0f8840ac8037fa2d6dae5f2d662682d3c08b3c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3dbde681f0d84d00c22aced367701fe6568c143575ec20ac146948664008433d\",\"dweb:/ipfs/QmSzNhMp1umzDJ97xFZAcitXKFefHCJc4SKVKKczxTfqNg\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol":{"IGearboxDieselToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","owner()":"8da5cb5b","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"owner()\":{\"details\":\"returns the address of the vault\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":\"IGearboxDieselToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]}},\"version\":1}"},"IGearboxVault":{"abi":[{"inputs":[{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"referralCode","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fromDiesel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDieselRate_RAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dieselAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"toDiesel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidity(uint256,address,uint256)":"9aa5d462","fromDiesel(uint256)":"5427c938","getDieselRate_RAY()":"788c6bfe","removeLiquidity(uint256,address)":"05fe138b","toDiesel(uint256)":"4d778ad1","underlyingToken()":"2495a599"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"referralCode\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"fromDiesel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDieselRate_RAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dieselAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"toDiesel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidity(uint256,address,uint256)\":{\"details\":\"Adds liquidity to pool and sends diesel (LP) tokens back to the liquidity provider The Referral code can be 0\"},\"fromDiesel(uint256)\":{\"details\":\"converts diesel token amount to main token amount\"},\"getDieselRate_RAY()\":{\"details\":\"returns a 27 decimal fixed point 'ray' value so a rate of 1 is represented as 1e27\"},\"removeLiquidity(uint256,address)\":{\"details\":\"Removes liquidity from the pool and sends the underlying tokens to the `to` address\"},\"toDiesel(uint256)\":{\"details\":\"converts main token amount to diesel token amount\"},\"underlyingToken()\":{\"details\":\"returns the address of the underlying asset\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":\"IGearboxVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"IProtocolFeePercentagesProvider":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some of these values may also be retrievable from other places (such as the swap fee percentage), but this is the preferred source nonetheless.\",\"kind\":\"dev\",\"methods\":{\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"IProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]}},\"version\":1}"},"ProtocolFeeType":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b1cc25bfd33fa74aa318be43f97da833c803d033dcad7d1b89f5f194a92984264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SHR 0xC2 JUMPDEST REVERT CALLER STATICCALL PUSH21 0xAA318BE43F97DA833C803D033DCAD7D1B89F5F194A SWAP3 SWAP9 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"4000:551:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b1cc25bfd33fa74aa318be43f97da833c803d033dcad7d1b89f5f194a92984264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SHR 0xC2 JUMPDEST REVERT CALLER STATICCALL PUSH21 0xAA318BE43F97DA833C803D033DCAD7D1B89F5F194A SWAP3 SWAP9 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"4000:551:31:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"ProtocolFeeType\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"IProtocolFeeSplitter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newDaoFundsRecipient","type":"address"}],"name":"DAOFundsRecipientChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"DefaultRevenueSharePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolEarned","type":"uint256"},{"indexed":true,"internalType":"address","name":"daoFundsRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"daoEarned","type":"uint256"}],"name":"FeesCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"PoolBeneficiaryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"PoolRevenueShareChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"PoolRevenueShareCleared","type":"event"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"clearRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"collectFees","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"daoAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getAmounts","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"daoAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDaoFundsRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultRevenueSharePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesWithdrawer","outputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getRevenueShareSettings","outputs":[{"internalType":"uint256","name":"revenueSharePercentageOverride","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"bool","name":"overrideSet","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDaoFundsRecipient","type":"address"}],"name":"setDaoFundsRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"defaultRevenueSharePercentage","type":"uint256"}],"name":"setDefaultRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"setPoolBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"setRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"clearRevenueSharePercentage(bytes32)":"3b0cf663","collectFees(bytes32)":"817db73b","getAmounts(bytes32)":"9d8669d3","getDaoFundsRecipient()":"89ee2f26","getDefaultRevenueSharePercentage()":"644b3f1b","getProtocolFeesWithdrawer()":"4f4f4bc7","getRevenueShareSettings(bytes32)":"d6c9cd58","setDaoFundsRecipient(address)":"4ca760eb","setDefaultRevenueSharePercentage(uint256)":"92b2b1f6","setPoolBeneficiary(bytes32,address)":"7ab74be4","setRevenueSharePercentage(bytes32,uint256)":"1cb594fc"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDaoFundsRecipient\",\"type\":\"address\"}],\"name\":\"DAOFundsRecipientChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"DefaultRevenueSharePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolEarned\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"daoFundsRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoEarned\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"PoolBeneficiaryChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolRevenueShareChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"PoolRevenueShareCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"clearRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDaoFundsRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRevenueSharePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesWithdrawer\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getRevenueShareSettings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentageOverride\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overrideSet\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDaoFundsRecipient\",\"type\":\"address\"}],\"name\":\"setDaoFundsRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"defaultRevenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"setPoolBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"setRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Daoism Systems\",\"details\":\"By default, all funds go to the DAO. To claim a share of the protocol fees, pool owners may call `setPoolBeneficiary`.\",\"kind\":\"dev\",\"methods\":{\"clearRevenueSharePercentage(bytes32)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"poolId\":\"- the poolId of the pool where the revenue share will change.\"}},\"collectFees(bytes32)\":{\"details\":\"Permissionless function to collect and distribute any accrued protocol fees for the given pool.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiaryAmount\":\"- the BPT amount sent to the pool beneficiary.\",\"daoAmount\":\"- the BPT amount sent to the DAO funds recipient.\"}},\"getAmounts(bytes32)\":{\"details\":\"Returns the amount of fees that would be sent to each beneficiary in a call to `collectFees`.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiaryAmount\":\"- the BPT amount that would be sent to the pool beneficiary.\",\"daoAmount\":\"- the BPT amount that would be sent to the DAO funds recipient.\"}},\"getDefaultRevenueSharePercentage()\":{\"details\":\"Returns the default revenue share percentage a pool will receive, unless overridden by a call to `setRevenueSharePercentage`.\"},\"getRevenueShareSettings(bytes32)\":{\"details\":\"Returns the current protocol fee split configuration for a given pool.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiary\":\"- the address of the pool beneficiary.\",\"revenueSharePercentageOverride\":\"- the percentage of the split sent to the pool beneficiary.\"}},\"setDaoFundsRecipient(address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"newDaoFundsRecipient\":\"- address of the new DAO funds recipient.\"}},\"setDefaultRevenueSharePercentage(uint256)\":{\"details\":\"Set the default revenue share percentage, applied to pools where no override has been set through `setRevenueSharePercentage`. Must be below the maximum allowed split. This is a permissioned function.\",\"params\":{\"defaultRevenueSharePercentage\":\"- new default revenue share percentage\"}},\"setPoolBeneficiary(bytes32,address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"newBeneficiary\":\"- address of the new beneficiary.\",\"poolId\":\"- the poolId of the pool where the beneficiary will change.\"}},\"setRevenueSharePercentage(bytes32,uint256)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"poolId\":\"- the poolId of the pool where the revenue share will change.\",\"revenueSharePercentage\":\"- the new revenue share percentage.\"}}},\"title\":\"ProtocolFeeSplitter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRevenueSharePercentage(bytes32)\":{\"notice\":\"Allows an authorized user to change the revenueShare for a given pool.\"},\"getDaoFundsRecipient()\":{\"notice\":\"Returns the DAO funds recipient that will receive any balance not due to the pool beneficiary.\"},\"getProtocolFeesWithdrawer()\":{\"notice\":\"Returns the `ProtocolFeesWithdrawer`, used to withdraw funds from the `ProtocolFeesCollector`.\"},\"setDaoFundsRecipient(address)\":{\"notice\":\"Allows a authorized user to change the DAO funds recipient.\"},\"setDefaultRevenueSharePercentage(uint256)\":{\"notice\":\"Allows an authorized user to change the default revenue share percentage.\"},\"setPoolBeneficiary(bytes32,address)\":{\"notice\":\"Allows a pool owner to change the revenue share beneficiary for a given pool.\"},\"setRevenueSharePercentage(bytes32,uint256)\":{\"notice\":\"Allows an authorized user to change the revenueShare for a given pool.\"}},\"notice\":\"Distributes protocol fees collected from a particular pool between a DAO fund recipient (e.g., the Balancer DAO treasury), and a beneficiary designated by the pool owner.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":\"IProtocolFeeSplitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0x3709eb8e9b59571f6f9f73390fa8b152028e01ab5cc43867f5e075c0b825d57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cb4044b468363f2bc9eeb5a07f7690720f4608c32d12b34352ff3e3e5c9e8709\",\"dweb:/ipfs/QmQeZWec9sPYtnAKXhkYnpxrJSAT5vbk3Gp3ny4jnCSU8x\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"IProtocolFeesWithdrawer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":\"IProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol":{"IProtocolIdRegistry":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"protocolId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"ProtocolIdRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"protocolId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"ProtocolIdRenamed","type":"event"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"}],"name":"getProtocolName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"}],"name":"isValidProtocolId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"},{"internalType":"string","name":"name","type":"string"}],"name":"registerProtocolId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"},{"internalType":"string","name":"newName","type":"string"}],"name":"renameProtocolId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getProtocolName(uint256)":"a2de1041","isValidProtocolId(uint256)":"3cae580a","registerProtocolId(uint256,string)":"7f5d9817","renameProtocolId(uint256,string)":"3585c4da"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ProtocolIdRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ProtocolIdRenamed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"}],\"name\":\"getProtocolName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"}],\"name\":\"isValidProtocolId\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"registerProtocolId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"renameProtocolId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Registry of protocol IDs for external integrations with Balancer. The IDs chosen are arbitrary and do not affect behavior of any Balancer contracts. They are used only to tag specific contracts (usually pools) at the data layer.\",\"kind\":\"dev\",\"methods\":{\"getProtocolName(uint256)\":{\"details\":\"Returns the name associated with a given `protocolId`.\"},\"isValidProtocolId(uint256)\":{\"details\":\"Returns true if `protocolId` has been registered and can be queried.\"},\"registerProtocolId(uint256,string)\":{\"details\":\"Registers an ID (and name) to differentiate among protocols. Protocol IDs cannot be deregistered.\"},\"renameProtocolId(uint256,string)\":{\"details\":\"Changes the name of an existing protocol ID. Should only be used to update in the case of mistakes.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\":\"IProtocolIdRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\":{\"keccak256\":\"0xb04a381e1c964f3d892e0afccea034d99495062e933b6fd4e401b7f040125aeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9ce21bcee0600519580f2beeff712c07c204ca2f8eb992c209bd32130da4c741\",\"dweb:/ipfs/QmNb8ASLr65VqJUMXVHFraWNNJvV1Rf4tbpXVCeiouCGAE\"]}},\"version\":1}"},"ProtocolId":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122028f3be93ed171e69c10d496518223d40ca7d84e8e8fcb6b44e3f2699a62473de64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 RETURN 0xBE SWAP4 0xED OR 0x1E PUSH10 0xC10D496518223D40CA7D DUP5 0xE8 0xE8 0xFC 0xB6 0xB4 0x4E EXTCODEHASH 0x26 SWAP10 0xA6 0x24 PUSH20 0xDE64736F6C634300070100330000000000000000 ","sourceMap":"2023:1193:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122028f3be93ed171e69c10d496518223d40ca7d84e8e8fcb6b44e3f2699a62473de64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 RETURN 0xBE SWAP4 0xED OR 0x1E PUSH10 0xC10D496518223D40CA7D DUP5 0xE8 0xE8 0xFC 0xB6 0xB4 0x4E EXTCODEHASH 0x26 SWAP10 0xA6 0x24 PUSH20 0xDE64736F6C634300070100330000000000000000 ","sourceMap":"2023:1193:34:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\":\"ProtocolId\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\":{\"keccak256\":\"0xb04a381e1c964f3d892e0afccea034d99495062e933b6fd4e401b7f040125aeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9ce21bcee0600519580f2beeff712c07c204ca2f8eb992c209bd32130da4c741\",\"dweb:/ipfs/QmNb8ASLr65VqJUMXVHFraWNNJvV1Rf4tbpXVCeiouCGAE\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol":{"IReaperTokenVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit(uint256)":"b6b55f25","getPricePerFullShare()":"77c7b8fc","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"returns the number of decimals for this vault token. For reaper single-strat vaults, the decimals are fixed to 18.\"},\"deposit(uint256)\":{\"params\":{\"_amount\":\"The quantity of tokens to deposit.*\"}},\"getPricePerFullShare()\":{\"details\":\"returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\"},\"token()\":{\"details\":\"returns the address of the vault's underlying asset (mainToken)\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256)\":{\"notice\":\"Deposits `_amount` `token`, issuing shares to the caller. If Panic is activated, deposits will not be accepted and this call will fail.\"},\"withdraw(uint256)\":{\"notice\":\"Withdraws the calling account's tokens from this Vault, redeeming amount `_shares` for an appropriate amount of tokens.*\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\":\"IReaperTokenVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol":{"IShareToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"silo","outputs":[{"internalType":"contract ISilo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","silo()":"eb3beb29","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"silo\",\"outputs\":[{\"internalType\":\"contract ISilo\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"asset()\":{\"details\":\"returns the underlying asset\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"silo()\":{\"details\":\"returns the address of the silo\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":\"IShareToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol":{"IBaseSilo":{"abi":[{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"assetStorage","outputs":[{"components":[{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"internalType":"struct IBaseSilo.AssetStorage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"assetStorage(address)":"bf273041"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"assetStorage\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct IBaseSilo.AssetStorage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetStorage(address)\":{\"details\":\"returns the asset storage structAssetStorage struct contains necessary information for calculating shareToken exchange rates\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":\"IBaseSilo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]}},\"version\":1}"},"ISilo":{"abi":[{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"assetStorage","outputs":[{"components":[{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"internalType":"struct IBaseSilo.AssetStorage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_depositor","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_collateralOnly","type":"bool"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"collateralAmount","type":"uint256"},{"internalType":"uint256","name":"collateralShare","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_collateralOnly","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"withdrawnAmount","type":"uint256"},{"internalType":"uint256","name":"withdrawnShare","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"assetStorage(address)":"bf273041","depositFor(address,address,uint256,bool)":"fbf178db","withdraw(address,uint256,bool)":"ead5d359"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"assetStorage\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct IBaseSilo.AssetStorage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_depositor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_collateralOnly\",\"type\":\"bool\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralShare\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_collateralOnly\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnShare\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetStorage(address)\":{\"details\":\"returns the asset storage structAssetStorage struct contains necessary information for calculating shareToken exchange rates\"},\"depositFor(address,address,uint256,bool)\":{\"details\":\"Deposits funds into the Silo\",\"params\":{\"_amount\":\"The amount of the token to deposit\",\"_asset\":\"The address of the token to deposit\",\"_collateralOnly\":\": True means your shareToken is protected (cannot be swapped for interest)\",\"_depositor\":\"The address of the recipient of collateral tokens\"},\"returns\":{\"collateralAmount\":\"deposited amount\",\"collateralShare\":\"user collateral shares based on deposited amount\"}},\"withdraw(address,uint256,bool)\":{\"details\":\"Withdraw `_amount` of `_asset` tokens from the Silo to `msg.sender`\",\"params\":{\"_amount\":\"The amount of the token to withdraw\",\"_asset\":\"The address of the token to withdraw\",\"_collateralOnly\":\"True if withdrawing collateral only deposit\"},\"returns\":{\"withdrawnAmount\":\"withdrawn amount that was transferred to user\",\"withdrawnShare\":\"burned share based on `withdrawnAmount`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":\"ISilo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"IStaticATokenLM":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositor","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"staticAmount","type":"uint256"},{"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"claimRewards(address,bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsOnBehalf(address,address,bool)\":{\"details\":\"Only callable by if sender is onBehalfOf or sender is approved claimer\",\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"onBehalfOf\":\"The address to claim on behalf of\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsToSelf(bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\"}},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicBalanceOf(address)\":{\"params\":{\"account\":\"The address of the user\"},\"returns\":{\"_0\":\"uint256 The aToken balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getClaimableRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The claimable amount of rewards in WAD\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"getUnclaimedRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The unclaimed amount of rewards in WAD\"}},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"depositor\":\"Address from which the funds to deposit are going to be pulled\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"Address that will receive the staticATokens, in the average case, same as the `depositor`\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\",\"sigParams\":\"Signature params: v,r,s\",\"value\":\"The amount to deposit\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance\"}},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"dynamicAmount\":\"The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\",\"owner\":\"Address owning the staticATokens\",\"recipient\":\"Address that will receive the underlying withdrawn from Aave\",\"sigParams\":\"Signature params: v,r,s\",\"staticAmount\":\"The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"owner\":\"The owner of the funds\",\"r\":\"Signature param\",\"s\":\"Signature param\",\"spender\":\"The spender\",\"v\":\"Signature param\",\"value\":\"The amount\"}},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}},\"withdrawDynamicAmount(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in dynamic balance of aToken/underlying asset\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewards(address,bool)\":{\"notice\":\"Claim rewards and send them to a receiver\"},\"claimRewardsOnBehalf(address,address,bool)\":{\"notice\":\"Claim rewards on behalf of a user and send them to a receiver\"},\"claimRewardsToSelf(bool)\":{\"notice\":\"Claim rewards\"},\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicBalanceOf(address)\":{\"notice\":\"Utility method to get the current aToken balance of an user, from his staticAToken balance\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getClaimableRewards(address)\":{\"notice\":\"Get the total claimable rewards for a user in WAD\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"getUnclaimedRewards(address)\":{\"notice\":\"The unclaimed rewards for a user in WAD\"},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to deposit on Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to withdraw from Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"},\"withdrawDynamicAmount(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":\"IStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol":{"ITetuSmartVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"holder","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingBalanceInVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"underlyingBalanceWithInvestmentForHolder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfShares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit(uint256)":"b6b55f25","depositFor(uint256,address)":"36efd16f","getPricePerFullShare()":"77c7b8fc","strategy()":"a8c62e76","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingBalanceInVault()":"c2baf356","underlyingBalanceWithInvestmentForHolder(address)":"8cb1d67f","underlyingUnit()":"53ceb01c","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingBalanceInVault\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"underlyingBalanceWithInvestmentForHolder\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingUnit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":\"ITetuSmartVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol":{"ITetuStrategy":{"abi":[{"inputs":[],"name":"investedUnderlyingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"investedUnderlyingBalance()":"45d01e4a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"investedUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\":\"ITetuStrategy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\":{\"keccak256\":\"0x99484dcb080b9d5d57fe39c9e9d2d349a4975fe7ca53a4d66f9672a56c6434b1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://effa8083764cdb7850f6e2294ff9f3724d6567319746d20a2002cdb7c621b97e\",\"dweb:/ipfs/QmPzmEbCTZ1R8QpqE98aqmcjZtRCfY1qrRmzrfQ1KLTZ5R\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol":{"IUnbuttonToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalSupply()":"18160ddd","totalUnderlying()":"c70920bc","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\":\"IUnbuttonToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol":{"IYearnTokenVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pricePerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit(uint256,address)":"6e553f65","pricePerShare()":"99530b06","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address)":"00f714ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pricePerShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"deposit(uint256,address)\":{\"params\":{\"_amount\":\"The quantity of tokens to deposit, defaults to all.\",\"recipient\":\"The address to issue the shares in this Vault to. Defaults to the caller's address.\"},\"returns\":{\"_0\":\"The issued Vault shares.\"}},\"pricePerShare()\":{\"details\":\"returns the price for a single Vault share (ie yvDAI). The pricePerShare is represented in the same decimals as the underlying asset (ie: 6 decimals for USDC)\"},\"token()\":{\"details\":\"returns the address of the vault's underlying asset (mainToken)\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(uint256,address)\":{\"params\":{\"maxShares\":\"How many shares to try and redeem for tokens, defaults to all.\",\"recipient\":\"The address to issue the shares in this Vault to. Defaults to the caller's address.\"},\"returns\":{\"_0\":\"redeemed: The quantity of tokens redeemed for `_shares`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256,address)\":{\"notice\":\"Deposits `_amount` `token`, issuing shares to `recipient`. If the Vault is in Emergency Shutdown, deposits will not be accepted and this call will fail.\"},\"withdraw(uint256,address)\":{\"notice\":\"Withdraws the calling account's tokens from this Vault, redeeming amount `_shares` for an appropriate amount of tokens. See note on `setWithdrawalQueue` for further details of withdrawal ordering and behavior.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":\"IYearnTokenVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":{\"keccak256\":\"0x8a30751d1411b686dc598147ae15677c935e468b46c10998bc713ab26f4cf433\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49d59beba049d9ec36289d0ff86a1eae34bc11b13052c68bc1604b86ff91d6c3\",\"dweb:/ipfs/QmXjX1eJWQGtpqknMaqJxejy8v8HJv6NrCn7ZhoozvQroD\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"IstETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referral","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","submit(address)":"a1903eab","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":\"IstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"IwstETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"It's an ERC20 token that represents the account's share of the total supply of stETH tokens. WstETH token's balance only changes on transfers, unlike StETH that is also changed when oracles report staking rewards and penalties. It's a \\\"power user\\\" token for DeFi protocols which don't support rebasable tokens. The contract is also a trustless wrapper that accepts stETH tokens and mints wstETH in return. Then the user unwraps, the contract burns user's wstETH and sends user locked stETH in return. The contract provides the staking shortcut: user can send ETH with regular transfer and get wstETH in return. The contract will send ETH to Lido submit method, staking it and wrapping the received stETH.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"title\":\"StETH token wrapper with static balances.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":\"IwstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"IAsset":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like types. This concept is unrelated to a Pool's Asset Managers.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":\"IAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"details\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"IBasePool":{"abi":[{"inputs":[],"name":"getPoolId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getScalingFactors","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onExitPool","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onJoinPool","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPoolId()":"38fff2d0","getScalingFactors()":"1dd746ea","getSwapFeePercentage()":"55c67628","onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"74f3b009","onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"d5c096c4","queryExit(bytes32,address,address,uint256[],uint256,uint256,bytes)":"6028bfd4","queryJoin(bytes32,address,address,uint256[],uint256,uint256,bytes)":"87ec6817"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getPoolId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScalingFactors\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onExitPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onJoinPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from either IGeneralPool or IMinimalSwapInfoPool\",\"kind\":\"dev\",\"methods\":{\"getPoolId()\":{\"details\":\"Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\"},\"getScalingFactors()\":{\"details\":\"Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically not relevant for outside parties, but which might be useful for some types of Pools.\"},\"getSwapFeePercentage()\":{\"details\":\"Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a 10% swap fee.\"},\"onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`, as well as collect the reported amount in protocol fees, which the Pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share. `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account to which the Vault will send the proceeds. `balances` contains the total token balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as burning pool shares.\"},\"onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join. `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account designated to receive any benefits (typically pool shares). `balances` contains the total balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as minting pool shares.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":\"IBasePool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x4673e08f6b8e76ffa89155d704a0682a6a98e3c60ca5f28e0c4b964f26b65dbe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eef030243d480fb6e84943d88c19cfc2b7e17bee800ece7b7be840061f3cc4bb\",\"dweb:/ipfs/QmYCLn4pspMRBdKAhtjc7EjnHQURHrzp844M5722LEbL8D\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"IFlashLoanRecipient":{"abi":[{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the Vault, or else the entire flash loan will revert. `userData` is the same value passed in the `IVault.flashLoan` call.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":\"IFlashLoanRecipient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"IPoolSwapStructs":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":\"IPoolSwapStructs\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"IProtocolFeesCollector":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"FlashLoanFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getCollectedFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlashLoanFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"setFlashLoanFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAuthorizer()":"aaabadc5","getCollectedFeeAmounts(address[])":"e42abf35","getFlashLoanFeePercentage()":"d877845c","getSwapFeePercentage()":"55c67628","setFlashLoanFeePercentage(uint256)":"6b6b9f69","setSwapFeePercentage(uint256)":"38e9922e","vault()":"fbfa77cf","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getCollectedFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":\"IProtocolFeesCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExternalBalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"}],"name":"InternalBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"deltas","type":"int256[]"},{"indexed":false,"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]"}],"name":"PoolBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assetManager","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"cashDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"managedDelta","type":"int256"}],"name":"PoolBalanceManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"RelayerApprovalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"TokensDeregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"TokensRegistered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"deregisterTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"exitPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IVault.PoolSpecialization","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.PoolBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"managePoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"registerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full external interface for the Vault core contract - no external or public methods exist in the contract that don't override one of these declarations.\",\"events\":{\"AuthorizerChanged(address)\":{\"details\":\"Emitted when a new authorizer is set by `setAuthorizer`.\"},\"ExternalBalanceTransfer(address,address,address,uint256)\":{\"details\":\"Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\"},\"FlashLoan(address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual flash loan performed by `flashLoan`.\"},\"InternalBalanceChanged(address,address,int256)\":{\"details\":\"Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through interacting with Pools using Internal Balance. Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH address.\"},\"PoolBalanceChanged(bytes32,address,address[],int256[],uint256[])\":{\"details\":\"Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\"},\"PoolBalanceManaged(bytes32,address,address,int256,int256)\":{\"details\":\"Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\"},\"PoolRegistered(bytes32,address,uint8)\":{\"details\":\"Emitted when a Pool is registered by calling `registerPool`.\"},\"RelayerApprovalChanged(address,address,bool)\":{\"details\":\"Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\"},\"Swap(bytes32,address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual swap performed by `swap` or `batchSwap`.\"},\"TokensDeregistered(bytes32,address[])\":{\"details\":\"Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\"},\"TokensRegistered(bytes32,address[],address[])\":{\"details\":\"Emitted when a Pool registers tokens by calling `registerTokens`.\"}},\"kind\":\"dev\",\"methods\":{\"WETH()\":{\"details\":\"Returns the Vault's WETH instance.\"},\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"deregisterTokens(bytes32,address[])\":{\"details\":\"Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be deregistered in the same `deregisterTokens` call. A deregistered token can be re-registered later on, possibly with a different Asset Manager. Emits a `TokensDeregistered` event.\"},\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see `getPoolTokenInfo`). If the caller is not `sender`, it must be an authorized relayer for them. The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault: it just enforces these minimums. If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit. `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be exited. If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise, an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to do so will trigger a revert. `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the `tokens` array. This array must match the Pool's registered tokens. This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract. Emits a `PoolBalanceChanged` event.\"},\"flashLoan(address,address[],uint256[],bytes)\":{\"details\":\"Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, and then reverting unless the tokens plus a proportional protocol fee have been returned. The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount for each token contract. `tokens` must be sorted in ascending order. The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the `receiveFlashLoan` call. Emits `FlashLoan` events.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"details\":\"Returns the Vault's Authorizer.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getInternalBalance(address,address[])\":{\"details\":\"Returns `user`'s Internal Balance for a set of tokens.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"},\"getPausedState()\":{\"details\":\"Returns the current paused state.\"},\"getPool(bytes32)\":{\"details\":\"Returns a Pool's contract address and specialization setting.\"},\"getPoolTokenInfo(bytes32,address)\":{\"details\":\"Returns detailed information for a Pool's registered token. `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token` equals the sum of `cash` and `managed`. Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`, `managed` or `total` balance to be greater than 2^112 - 1. `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a change for this purpose, and will update `lastChangeBlock`. `assetManager` is the Pool's token Asset Manager.\"},\"getPoolTokens(bytes32)\":{\"details\":\"Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of the tokens' `balances` changed. The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same order as passed to `registerTokens`. Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` instead.\"},\"getProtocolFeesCollector()\":{\"details\":\"Returns the current protocol fee module.\"},\"hasApprovedRelayer(address,address)\":{\"details\":\"Returns true if `user` has approved `relayer` to act as a relayer for them.\"},\"joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized Pool shares. If the caller is not `sender`, it must be an authorized relayer for them. The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces these maximums. If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent back to the caller (not the sender, which is important for relayers). `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be joined. If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be withdrawn from Internal Balance: attempting to do so will trigger a revert. This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract, as is `recipient`. Emits a `PoolBalanceChanged` event.\"},\"managePoolBalance((uint8,bytes32,address,uint256)[])\":{\"details\":\"Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates. Pool Balance management features batching, which means a single contract call can be used to perform multiple operations of different kinds, with different Pools and tokens, at once. For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"registerPool(uint8)\":{\"details\":\"Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be changed. The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`, depending on the chosen specialization setting. This contract is known as the Pool's contract. Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words, multiple Pools may share the same contract. Emits a `PoolRegistered` event.\"},\"registerTokens(bytes32,address[],address[])\":{\"details\":\"Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens, exit by receiving registered tokens, and can only swap registered tokens. Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in ascending order. The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`, depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore expected to be highly secured smart contracts with sound design principles, and the decision to register an Asset Manager should not be made lightly. Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset Manager is set, it cannot be changed except by deregistering the associated token and registering again with a different Asset Manager. Emits a `TokensRegistered` event.\"},\"setAuthorizer(address)\":{\"details\":\"Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this. Emits an `AuthorizerChanged` event.\"},\"setPaused(bool)\":{\"details\":\"Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an error in some part of the system. The Vault can only be paused during an initial time period, after which pausing is forever disabled. While the contract is paused, the following features are disabled: - depositing and transferring internal balance - transferring external balance (using the Vault's allowance) - swaps - joining Pools - Asset Manager interactions Internal Balance can still be withdrawn, and Pools exited.\"},\"setRelayerApproval(address,address,bool)\":{\"details\":\"Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise. Emits a `RelayerApprovalChanged` event.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"BasePoolAuthorization":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base authorization layer implementation for Pools. The owner account can call some of the permissioned functions - access control of the rest is delegated to the Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership, granular roles, etc., could be built on top of this by making the owner a smart contract. Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":\"BasePoolAuthorization\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"RecoveryMode":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing them to revert). Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation, until they are voluntarily or involuntarily unpaused. By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather, a special \\\"clean\\\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally. In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation that can fail in extreme circumstances), and no protocol fees are collected. It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error.\",\"kind\":\"dev\",\"methods\":{\"disableRecoveryMode()\":{\"details\":\"Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly necessary.\"},\"enableRecoveryMode()\":{\"details\":\"Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may perform certain operations in a \\\"safer\\\" manner that is less likely to fail, in an attempt to keep the pool running, even in a pathological state. Unlike the Pause operation, which is only available during a short window after factory deployment, Recovery Mode can always be enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disable recovery mode, which disables the special safe exit path for LPs.\"},\"enableRecoveryMode()\":{\"notice\":\"Enable recovery mode, which enables a special safe exit path for LPs.\"},\"inRecoveryMode()\":{\"notice\":\"Override to check storage and return whether the pool is in Recovery Mode\"}},\"notice\":\"Handle storage and state changes for pools that support \\\"Recovery Mode\\\".\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":\"RecoveryMode\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0x614be1c287eeee041691cccf080f232469b74999d31b84e1d1b43dcf823c9c9d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://07dc2f5687c980c9b20da45e359a5b31be35a3dd6069c7bd94e524c5abdea0d5\",\"dweb:/ipfs/QmTMdUyYoHh6GRnUf8yuKoXMtBUhQsQzPoYdcjwVCK19Fb\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"BasePoolFactory":{"abi":[{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseConfiguration","outputs":[{"internalType":"uint256","name":"pauseWindowDuration","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodDuration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeePercentagesProvider","outputs":[{"internalType":"contract IProtocolFeePercentagesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa","getPauseConfiguration()":"2da47c40","getProtocolFeePercentagesProvider()":"739238d6","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseConfiguration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pauseWindowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeePercentagesProvider\",\"outputs\":[{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory contract would not be able to store it. Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently prevent the creation of any future pools from the factory.\",\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"},\"getPauseConfiguration()\":{\"details\":\"Returns the current `TemporarilyPausable` configuration that will be applied to Pools created by this factory. `pauseWindowDuration` will decrease over time until it reaches zero, at which point both it and `bufferPeriodDuration` will be zero forever, meaning deployed Pools will not be pausable.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"notice\":\"Base contract for Pool factories. Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by the factory) is very powerful.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":\"BasePoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":{\"keccak256\":\"0xd5f7ef8a35322c19a6644eca1b6210acd82fdb0e2ae2175fb5cc757fd89e6d01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3ba8405b70fb4d811b8408bf0071403f9a63d52b0bd824978b7edb9d515ddf74\",\"dweb:/ipfs/QmfSLZzShEurmazJsEKY8xhmZtRJCeomMcSaGdHUAN5Bmt\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9b1eb9d6fcdb6ff7170337e021b4cb76116ec8c4cb12d51bec2206fe8b546016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b26fa997ae9cc135d6236b1a41d164052bf44c2da6e432fb3653f8d485abd36\",\"dweb:/ipfs/QmcAWPdk4Bwq9PKjAvWdfuV8dRd2fS7EEHCxotDkh1Y522\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xd13a9c66440204fdd94c422e4759e323d396c1bd1ee8d3858f33917cc65e60d6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://052a2c0319dc342444101a99bd91527c1c33d38e5bf3037ede11299a6a2a6e41\",\"dweb:/ipfs/QmSYSGZ4UpSAvEJbd4zSjRAzfie1GkBgByvCei46JxY5Zh\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":{\"keccak256\":\"0x5931cd930a053c327257b9d246c583fe195b2ac5adffe3485e1be354b3ec298b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a0f50399308e97a4c560397bc0599ff77100ac472a6281d894d1ad536b61e1df\",\"dweb:/ipfs/QmeqJpptHFPnvtAHMJDfCYPB2PLnDrFUMLi2fNb3njmpt7\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol":{"FactoryWidePauseWindow":{"abi":[{"inputs":[{"internalType":"uint256","name":"initialPauseWindowDuration","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getPauseConfiguration","outputs":[{"internalType":"uint256","name":"pauseWindowDuration","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodDuration","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b5060405161024938038061024983398101604081905261002f916100ec565b610042630163f500831115610194610066565b6100546276a700821115610195610066565b608082905260a052420160c05261010f565b816100745761007481610078565b5050565b610088816210905360ea1b61008b565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600080604083850312156100fe578182fd5b505080516020909101519092909150565b60805160a05160c05161011161013860003980604e52806076525080609a5250506101116000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632da47c4014602d575b600080fd5b60336048565b604051603f92919060cd565b60405180910390f35b600080427f000000000000000000000000000000000000000000000000000000000000000081101560bf57807f00000000000000000000000000000000000000000000000000000000000000000392507f0000000000000000000000000000000000000000000000000000000000000000915060c8565b60009250600091505b509091565b91825260208201526040019056fea2646970667358221220636db791b6940b895ba8d3bf5ebd076599ee51081d6a7816d77effe29e518fb664736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x249 CODESIZE SUB DUP1 PUSH2 0x249 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xEC JUMP JUMPDEST PUSH2 0x42 PUSH4 0x163F500 DUP4 GT ISZERO PUSH2 0x194 PUSH2 0x66 JUMP JUMPDEST PUSH2 0x54 PUSH3 0x76A700 DUP3 GT ISZERO PUSH2 0x195 PUSH2 0x66 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 MSTORE PUSH1 0xA0 MSTORE TIMESTAMP ADD PUSH1 0xC0 MSTORE PUSH2 0x10F JUMP JUMPDEST DUP2 PUSH2 0x74 JUMPI PUSH2 0x74 DUP2 PUSH2 0x78 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x88 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH2 0x8B JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFE JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x111 PUSH2 0x138 PUSH1 0x0 CODECOPY DUP1 PUSH1 0x4E MSTORE DUP1 PUSH1 0x76 MSTORE POP DUP1 PUSH1 0x9A MSTORE POP POP PUSH2 0x111 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2DA47C40 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3F SWAP3 SWAP2 SWAP1 PUSH1 0xCD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 TIMESTAMP PUSH32 0x0 DUP2 LT ISZERO PUSH1 0xBF JUMPI DUP1 PUSH32 0x0 SUB SWAP3 POP PUSH32 0x0 SWAP2 POP PUSH1 0xC8 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP1 SWAP2 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x6DB791B6 SWAP5 SIGNEXTEND DUP10 JUMPDEST 0xA8 0xD3 0xBF 0x5E 0xBD SMOD PUSH6 0x99EE51081D6A PUSH25 0x16D77EFFE29E518FB664736F6C634300070100330000000000 ","sourceMap":"1263:2747:55:-:0;;;1756:1008;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2246:151;5493:8:63;2268:73:55;;;10435:3:12;2246:8:55;:151::i;:::-;2407:147;5560:7:63;2429:68:55;;;10499:3:12;2407:8:55;:147::i;:::-;2565:56;;;;2631:44;;2713:15;:44;2686:71;;1263:2747;;926:101:12;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:12;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;146:399:-1;;;278:2;266:9;257:7;253:23;249:32;246:2;;;-1:-1;;284:12;246:2;-1:-1;;83:13;;447:2;497:22;;;83:13;;;;;-1:-1;240:305::o;:::-;1263:2747:55;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4264":[{"length":32,"start":154}],"4266":[{"length":32,"start":78},{"length":32,"start":118}]},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80632da47c4014602d575b600080fd5b60336048565b604051603f92919060cd565b60405180910390f35b600080427f000000000000000000000000000000000000000000000000000000000000000081101560bf57807f00000000000000000000000000000000000000000000000000000000000000000392507f0000000000000000000000000000000000000000000000000000000000000000915060c8565b60009250600091505b509091565b91825260208201526040019056fea2646970667358221220636db791b6940b895ba8d3bf5ebd076599ee51081d6a7816d77effe29e518fb664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2DA47C40 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3F SWAP3 SWAP2 SWAP1 PUSH1 0xCD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 TIMESTAMP PUSH32 0x0 DUP2 LT ISZERO PUSH1 0xBF JUMPI DUP1 PUSH32 0x0 SUB SWAP3 POP PUSH32 0x0 SWAP2 POP PUSH1 0xC8 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP1 SWAP2 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x6DB791B6 SWAP5 SIGNEXTEND DUP10 JUMPDEST 0xA8 0xD3 0xBF 0x5E 0xBD SMOD PUSH6 0x99EE51081D6A PUSH25 0x16D77EFFE29E518FB664736F6C634300070100330000000000 ","sourceMap":"1263:2747:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3123:885;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;3177:27;;3268:15;3311:24;3297:38;;3293:709;;;3634:11;3607:24;:38;3585:60;;3717:21;3694:44;;3293:709;;;3952:1;3930:23;;3990:1;3967:24;;3293:709;3123:885;;;:::o;125:333:-1:-;76:37;;;444:2;429:18;;76:37;280:2;265:18;;251:207::o"},"methodIdentifiers":{"getPauseConfiguration()":"2da47c40"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialPauseWindowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getPauseConfiguration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pauseWindowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility to create Pool factories for Pools that use the `TemporarilyPausable` contract. By calling `TemporarilyPausable`'s constructor with the result of `getPauseConfiguration`, all Pools created by this factory will share the same Pause Window end time, after which both old and new Pools will not be pausable.\",\"kind\":\"dev\",\"methods\":{\"getPauseConfiguration()\":{\"details\":\"Returns the current `TemporarilyPausable` configuration that will be applied to Pools created by this factory. `pauseWindowDuration` will decrease over time until it reaches zero, at which point both it and `bufferPeriodDuration` will be zero forever, meaning deployed Pools will not be pausable.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol\":\"FactoryWidePauseWindow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9b1eb9d6fcdb6ff7170337e021b4cb76116ec8c4cb12d51bec2206fe8b546016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b26fa997ae9cc135d6236b1a41d164052bf44c2da6e432fb3653f8d485abd36\",\"dweb:/ipfs/QmcAWPdk4Bwq9PKjAvWdfuV8dRd2fS7EEHCxotDkh1Y522\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":{\"keccak256\":\"0x5931cd930a053c327257b9d246c583fe195b2ac5adffe3485e1be354b3ec298b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a0f50399308e97a4c560397bc0599ff77100ac472a6281d894d1ad536b61e1df\",\"dweb:/ipfs/QmeqJpptHFPnvtAHMJDfCYPB2PLnDrFUMLi2fNb3njmpt7\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Building block for performing access control on external functions. This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to only make them callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"BaseSplitCodeFactory":{"abi":[{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when the contract's creation code grows close to 24kB. Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":\"BaseSplitCodeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xd13a9c66440204fdd94c422e4759e323d396c1bd1ee8d3858f33917cc65e60d6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://052a2c0319dc342444101a99bd91527c1c33d38e5bf3037ede11299a6a2a6e41\",\"dweb:/ipfs/QmSYSGZ4UpSAvEJbd4zSjRAzfie1GkBgByvCei46JxY5Zh\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"CodeDeployer":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001ea3d8f25735967926161e58d7f14b64c55b96e947d0c950c92b286ba81128164736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xEA RETURNDATASIZE DUP16 0x25 PUSH20 0x5967926161E58D7F14B64C55B96E947D0C950C92 0xB2 DUP7 0xBA DUP2 SLT DUP2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1005:3100:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001ea3d8f25735967926161e58d7f14b64c55b96e947d0c950c92b286ba81128164736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xEA RETURNDATASIZE DUP16 0x25 PUSH20 0x5967926161E58D7F14B64C55B96E947D0C950C92 0xB2 DUP7 0xBA DUP2 SLT DUP2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1005:3100:58:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as contract code, which can be retrieved via the `extcodecopy` opcode.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":\"CodeDeployer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"EOASignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":\"EOASignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2e0ea22385e6a2569a34672c5f22125c8b47548296ecba0af88b51b352d0a9764736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE0 0xEA 0x22 CODESIZE 0x5E PUSH11 0x2569A34672C5F22125C8B4 PUSH22 0x48296ECBA0AF88B51B352D0A9764736F6C6343000701 STOP CALLER ","sourceMap":"893:1008:61:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol":{"PausableConstants":{"abi":[{"inputs":[],"name":"MAX_BUFFER_PERIOD_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PAUSE_WINDOW_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a5610024600b82828239805160001a607314601757fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638b19548d146042578063fc5e93fe14605a575b600080fd5b60486060565b60408051918252519081900360200190f35b60486067565b6276a70081565b630163f5008156fea2646970667358221220a23b14c9ef51c9f832bdc24c9b13ce2a61e454efb0e018025223828471649c2c64736f6c63430007010033","opcodes":"PUSH1 0xA5 PUSH2 0x24 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x17 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B19548D EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0xFC5E93FE EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x60 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x48 PUSH1 0x67 JUMP JUMPDEST PUSH3 0x76A700 DUP2 JUMP JUMPDEST PUSH4 0x163F500 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 EXTCODESIZE EQ 0xC9 0xEF MLOAD 0xC9 0xF8 ORIGIN 0xBD 0xC2 0x4C SWAP12 SGT 0xCE 0x2A PUSH2 0xE454 0xEF 0xB0 0xE0 XOR MUL MSTORE 0x23 DUP3 DUP5 PUSH18 0x649C2C64736F6C6343000701003300000000 ","sourceMap":"5409:161:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638b19548d146042578063fc5e93fe14605a575b600080fd5b60486060565b60408051918252519081900360200190f35b60486067565b6276a70081565b630163f5008156fea2646970667358221220a23b14c9ef51c9f832bdc24c9b13ce2a61e454efb0e018025223828471649c2c64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B19548D EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0xFC5E93FE EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x60 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x48 PUSH1 0x67 JUMP JUMPDEST PUSH3 0x76A700 DUP2 JUMP JUMPDEST PUSH4 0x163F500 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 EXTCODESIZE EQ 0xC9 0xEF MLOAD 0xC9 0xF8 ORIGIN 0xBD 0xC2 0x4C SWAP12 SGT 0xCE 0x2A PUSH2 0xE454 0xEF 0xB0 0xE0 XOR MUL MSTORE 0x23 DUP3 DUP5 PUSH18 0x649C2C64736F6C6343000701003300000000 ","sourceMap":"5409:161:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5507:60;;;:::i;:::-;;;;;;;;;;;;;;;;5441;;;:::i;5507:::-;5560:7;5507:60;:::o;5441:::-;5493:8;5441:60;:::o"},"methodIdentifiers":{"MAX_BUFFER_PERIOD_DURATION()":"8b19548d","MAX_PAUSE_WINDOW_DURATION()":"fc5e93fe"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_BUFFER_PERIOD_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAUSE_WINDOW_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Keep the maximum durations in a single place.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":\"PausableConstants\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":{\"keccak256\":\"0x5931cd930a053c327257b9d246c583fe195b2ac5adffe3485e1be354b3ec298b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a0f50399308e97a4c560397bc0599ff77100ac472a6281d894d1ad536b61e1df\",\"dweb:/ipfs/QmeqJpptHFPnvtAHMJDfCYPB2PLnDrFUMLi2fNb3njmpt7\"]}},\"version\":1}"},"TemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Allows for a contract to be paused during an initial period after deployment, disabling functionality. Can be used as an emergency switch in case a security vulnerability or threat is identified. The contract can only be paused during the Pause Window, a period that starts at deployment. It can also be unpaused and repaused any number of times during this period. This is intended to serve as a safety measure: it lets system managers react quickly to potentially dangerous situations, knowing that this action is reversible if careful analysis later determines there was a false alarm. If the contract is paused when the Pause Window finishes, it will remain in the paused state through an additional Buffer Period, after which it will be automatically unpaused forever. This is to ensure there is always enough time to react to an emergency, even if the threat is discovered shortly before the Pause Window expires. Note that since the contract can only be paused within the Pause Window, unpausing during the Buffer Period is irreversible.\",\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current contract pause status, as well as the end times of the Pause Window and Buffer Period.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":\"TemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":{\"keccak256\":\"0x5931cd930a053c327257b9d246c583fe195b2ac5adffe3485e1be354b3ec298b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a0f50399308e97a4c560397bc0599ff77100ac472a6281d894d1ad536b61e1df\",\"dweb:/ipfs/QmeqJpptHFPnvtAHMJDfCYPB2PLnDrFUMLi2fNb3njmpt7\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"VaultHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:64:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":\"VaultHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol":{"Version":{"abi":[{"inputs":[{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516103483803806103488339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b506040525050506100f2816100f860201b60201c565b506101a2565b805161010b90600090602084019061010f565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015057805160ff191683800117855561017d565b8280016001018555821561017d579182015b8281111561017d578251825591602001919060010190610162565b5061018992915061018d565b5090565b5b80821115610189576000815560010161018e565b610197806101b16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x348 CODESIZE SUB DUP1 PUSH2 0x348 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP PUSH2 0xF2 DUP2 PUSH2 0xF8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0x1A2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10B SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x10F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x150 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x17D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x17D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x17D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x162 JUMP JUMPDEST POP PUSH2 0x189 SWAP3 SWAP2 POP PUSH2 0x18D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x18E JUMP JUMPDEST PUSH2 0x197 DUP1 PUSH2 0x1B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:65:-:0;;;949:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;949:72:65;;;;;;;;;;-1:-1:-1;949:72:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;994:20;1006:7;994:11;;;:20;;:::i;:::-;949:72;884:436;;1224:94;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;884:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;884:436:65;;;-1:-1:-1;884:436:65;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101575780601f1061012c57610100808354040283529160200191610157565b820191906000526020600020905b81548152906001019060200180831161013a57829003601f168201915b505050505090509056fea2646970667358221220dff94d9847a91038ebfc464039b18ce76da3fb93a753f9b70a71167f0419acc164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38 PUSH2 0xAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x72 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x9F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x157 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x157 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x13A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF 0xF9 0x4D SWAP9 SELFBALANCE 0xA9 LT CODESIZE 0xEB 0xFC CHAINID BLOCKHASH CODECOPY 0xB1 DUP13 0xE7 PUSH14 0xA3FB93A753F9B70A71167F0419AC 0xC1 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"884:436:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o"},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Retrieves a contract's version set at creation time from storage.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":\"Version\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4640ea1d7c89bdb767eef0d980d2e9cf18ea1dcafd3d3c15b055496927fbf0b64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 PUSH5 0xEA1D7C89B 0xDB PUSH23 0x7EEF0D980D2E9CF18EA1DCAFD3D3C15B055496927FBF0B PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:66:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2f1f5a5744ba84ba902f5d8ce63788485b6aa0b1c41d070ae31d351d0d04aac64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE CALL CREATE2 0xA5 PUSH21 0x4BA84BA902F5D8CE63788485B6AA0B1C41D070AE31 0xD3 MLOAD 0xD0 0xD0 0x4A 0xAC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:67:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220846111d7cfb69da2fca580e8b2ab6b6addf04f185e6d02f1a1c3a10d7361155964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH2 0x11D7 0xCF 0xB6 SWAP14 LOG2 0xFC 0xA5 DUP1 0xE8 0xB2 0xAB PUSH12 0x6ADDF04F185E6D02F1A1C3A1 0xD PUSH20 0x61155964736F6C63430007010033000000000000 ","sourceMap":"290:2995:68:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Adapted from OpenZeppelin's SafeMath library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122014c317e5c7ffec06df50079a25a550396b9c6d54a220da98ca140dabbf742d7664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xC3 OR 0xE5 0xC7 SELFDESTRUCT 0xEC MOD 0xDF POP SMOD SWAP11 0x25 0xA5 POP CODECOPY PUSH12 0x9C6D54A220DA98CA140DABBF PUSH21 0x2D7664736F6C634300070100330000000000000000 ","sourceMap":"439:5334:69:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b0c380380610b0c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060039060208501906101cb565b5080516101b69060049060208401906101cb565b50506005805460ff191660121790555061025e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020c57805160ff1916838001178555610239565b82800160010185558215610239579182015b8281111561023957825182559160200191906001019061021e565b50610245929150610249565b5090565b5b80821115610245576000815560010161024a565b61089f8061026d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB0C CODESIZE SUB DUP1 PUSH2 0xB0C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x25E JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x239 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x239 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x239 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21E JUMP JUMPDEST POP PUSH2 0x245 SWAP3 SWAP2 POP PUSH2 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24A JUMP JUMPDEST PUSH2 0x89F DUP1 PUSH2 0x26D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:71:-:0;;;2052:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:71;;;;;;;;;;-1:-1:-1;2052:137:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:71;;;;;;;;;;-1:-1:-1;2052:137:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:71;;-1:-1:-1;;2118:13:71;;;;-1:-1:-1;2118:5:71;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;1427:10003:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10003:71;;;-1:-1:-1;1427:10003:71;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212202c86193fc6961e0e4117c460b7e51cd045ea11118a221b0580d8a077a6e6300a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C DUP7 NOT EXTCODEHASH 0xC6 SWAP7 0x1E 0xE COINBASE OR 0xC4 PUSH1 0xB7 0xE5 SHR 0xD0 GASLIMIT 0xEA GT GT DUP11 0x22 SHL SDIV DUP1 0xD8 LOG0 PUSH24 0xA6E6300A64736F6C63430007010033000000000000000000 ","sourceMap":"1427:10003:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;2448:85::-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;11245:183:71:-;;;;:::o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4f362195304bca0268523dcc31b851609b69f5144c5a8abcb6fa240af5462c264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 RETURN PUSH3 0x195304 0xBC LOG0 0x26 DUP6 0x23 0xDC 0xC3 SHL DUP6 AND MULMOD 0xB6 SWAP16 MLOAD DIFFICULTY 0xC5 0xA8 0xAB 0xCB PUSH16 0xA240AF5462C264736F6C634300070100 CALLER ","sourceMap":"1210:8346:74:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200c625deca127ed5cf84cb1c5066e33a711d906f88ec7a8c76f203d78c72206b464736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC PUSH3 0x5DECA1 0x27 0xED 0x5C 0xF8 0x4C 0xB1 0xC5 MOD PUSH15 0x33A711D906F88EC7A8C76F203D78C7 0x22 MOD 0xB4 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"860:738:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200c625deca127ed5cf84cb1c5066e33a711d906f88ec7a8c76f203d78c72206b464736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC PUSH3 0x5DECA1 0x27 0xED 0x5C 0xF8 0x4C 0xB1 0xC5 MOD PUSH15 0x33A711D906F88EC7A8C76F203D78C7 0x22 MOD 0xB4 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"860:738:76:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220101cb10a10a8826c3ccbc0d7a1e0802d146095a5c909637362c78e01ce5ff54c64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SHR 0xB1 EXP LT 0xA8 DUP3 PUSH13 0x3CCBC0D7A1E0802D146095A5C9 MULMOD PUSH4 0x7362C78E ADD 0xCE 0x5F CREATE2 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:2264:77:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204078142f28de1c3e58fcb44f4a2b4e02c951ae80e8d6c98d6075eb00a9c736b364736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH PUSH25 0x142F28DE1C3E58FCB44F4A2B4E02C951AE80E8D6C98D6075EB STOP 0xA9 0xC7 CALLDATASIZE 0xB3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:78:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000d8c38038062000d8c833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001b8906003906020850190620001e7565b508051620001ce906004906020840190620001e7565b50506005805460ff191660121790555062000283915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b610af980620002936000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f027a526a8d39bfb4eb2fc7e11f874a01dc0f0daa59af9dcc8f20c9ad6a4877c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xD8C CODESIZE SUB DUP1 PUSH3 0xD8C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD DUP4 SWAP2 POP DUP3 SWAP1 PUSH3 0x1B8 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1CE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x283 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x22A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x25A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x25A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x25A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x23D JUMP JUMPDEST POP PUSH3 0x268 SWAP3 SWAP2 POP PUSH3 0x26C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x268 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x26D JUMP JUMPDEST PUSH2 0xAF9 DUP1 PUSH3 0x293 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE 0x27 0xA5 0x26 0xA8 0xD3 SWAP12 0xFB 0x4E 0xB2 0xFC PUSH31 0x11F874A01DC0F0DAA59AF9DCC8F20C9AD6A4877C64736F6C63430007010033 ","sourceMap":"750:316:79:-:0;;;784:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:79;;;;;;;;;;-1:-1:-1;784:76:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:79;;;;;;;;;;-1:-1:-1;784:76:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:79;;-1:-1:-1;;2118:13:71;;844:4:79;;-1:-1:-1;850:6:79;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;750:316:79;;-1:-1:-1;;750:316:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:316:79;;;-1:-1:-1;750:316:79;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f027a526a8d39bfb4eb2fc7e11f874a01dc0f0daa59af9dcc8f20c9ad6a4877c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE 0x27 0xA5 0x26 0xA8 0xD3 SWAP12 0xFB 0x4E 0xB2 0xFC PUSH31 0x11F874A01DC0F0DAA59AF9DCC8F20C9AD6A4877C64736F6C63430007010033 ","sourceMap":"750:316:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;866:99:79:-;;;;;;;;;;;;;;;;-1:-1:-1;866:99:79;;;;;;;;;:::i;:::-;;4022:117:71;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;2448:85::-;;;:::i;971:93:79:-;;;;;;;;;;;;;;;;-1:-1:-1;971:93:79;;;;;;;;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;866:99:79:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:79;1036:21;1042:6;1050;1036:5;:21::i;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;11245:183:71:-;;;;:::o;3870:94::-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"TestToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200140e3803806200140e833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350839283918791620001d6916003918501906200025e565b508051620001ec9060049060208401906200025e565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200023f8162000248565b505050620002fa565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a157805160ff1916838001178555620002d1565b82800160010185558215620002d1579182015b82811115620002d1578251825591602001919060010190620002b4565b50620002df929150620002e3565b5090565b5b80821115620002df5760008155600101620002e4565b60805160a05160c0516110e76200032760003980610dbd525080610dff525080610dde52506110e76000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806379cc6790116100cd578063a457c2d711610081578063d505accf11610066578063d505accf146104d4578063dd62ed3e14610532578063ed24911d1461056d5761016c565b8063a457c2d714610462578063a9059cbb1461049b5761016c565b80637ecebe00116100b25780637ecebe00146103f457806390193b7c1461042757806395d89b411461045a5761016c565b806379cc6790146103825780637c602bc2146103bb5761016c565b80633644e5151161012457806340c10f191161010957806340c10f19146102f757806342966c681461033257806370a082311461034f5761016c565b80633644e515146102b657806339509351146102be5761016c565b806318160ddd1161015557806318160ddd1461023b57806323b872dd14610255578063313ce567146102985761016c565b806306fdde0314610171578063095ea7b3146101ee575b600080fd5b610179610575565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102276004803603604081101561020457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610629565b604080519115158252519081900360200190f35b61024361063f565b60408051918252519081900360200190f35b6102276004803603606081101561026b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610645565b6102a06106a6565b6040805160ff9092168252519081900360200190f35b6102436106af565b610227600480360360408110156102d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106be565b6103306004803603604081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610701565b005b6103306004803603602081101561034857600080fd5b503561070f565b6102436004803603602081101561036557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661071c565b6103306004803603604081101561039857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610744565b610330600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561077a565b6102436004803603602081101561040a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610784565b6102436004803603602081101561043d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610795565b6101796107bd565b6102276004803603604081101561047857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561083c565b610227600480360360408110156104b157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610882565b610330600480360360e08110156104ea57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561088f565b6102436004803603604081101561054857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610964565b61024361099c565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b60006106363384846109a6565b50600192915050565b60025490565b6000610652848484610a15565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461069c918691610697908661019e610b3e565b6109a6565b5060019392505050565b60055460ff1690565b60006106b961099c565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106369185906106979086610b54565b61070b8282610b6d565b5050565b6107193382610c26565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061075e826101a16107578633610964565b9190610b3e565b905061076b8333836109a6565b6107758383610c26565b505050565b61070b8282610c26565b600061078f82610795565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561061f5780601f106105f45761010080835404028352916020019161061f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610636918590610697908661019f610b3e565b6000610636338484610a15565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108be8c610795565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905061094f8882610946878787610d16565b886101f8610d55565b61095a8888886109a6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006106b9610db9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610a3973ffffffffffffffffffffffffffffffffffffffff84161515610198610e84565b610a5d73ffffffffffffffffffffffffffffffffffffffff83161515610199610e84565b610a68838383610775565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a9b90826101a0610b3e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ad79082610b54565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610b4d8484111583610e84565b5050900390565b6000828201610b668482101583610e84565b9392505050565b610b7960008383610775565b610b93610b8e82610b8861063f565b90610b54565b610e92565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bc39082610b54565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c4a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e84565b610c5682600083610775565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c8990826101b2610b3e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610cc4610b8e82610cbe61063f565b90610e97565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d6085610ea5565b9050610d76610d70878387610f0c565b83610e84565b610d85428410156101b8610e84565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e2661101e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161070b5761070b81611022565b600255565b6000610b6683836001610b3e565b6000610eaf610db9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610f1e82516041146101b9610e84565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f97573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061101257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610719917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212203069afff4ee45d3f7d3527fe303eb73de34b12c7570c8995d74e3f7b2e32eae564736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x140E CODESIZE SUB DUP1 PUSH3 0x140E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1D6 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1EC SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x23F DUP2 PUSH3 0x248 JUMP JUMPDEST POP POP POP PUSH3 0x2FA JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2A1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2D1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2D1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2D1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2B4 JUMP JUMPDEST POP PUSH3 0x2DF SWAP3 SWAP2 POP PUSH3 0x2E3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2DF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x10E7 PUSH3 0x327 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xDBD MSTORE POP DUP1 PUSH2 0xDFF MSTORE POP DUP1 PUSH2 0xDDE MSTORE POP PUSH2 0x10E7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x56D JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x49B JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x45A JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x3BB JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x34F JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2BE JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x155 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x298 JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179 PUSH2 0x575 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x629 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x63F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x645 JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x70F JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x77A JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x784 JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x795 JUMP JUMPDEST PUSH2 0x179 PUSH2 0x7BD JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83C JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x882 JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x88F JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x964 JUMP JUMPDEST PUSH2 0x243 PUSH2 0x99C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x61F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5F4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x61F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x602 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 CALLER DUP5 DUP5 PUSH2 0x9A6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x652 DUP5 DUP5 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x69C SWAP2 DUP7 SWAP2 PUSH2 0x697 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB3E JUMP JUMPDEST PUSH2 0x9A6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B9 PUSH2 0x99C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x636 SWAP2 DUP6 SWAP1 PUSH2 0x697 SWAP1 DUP7 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0x70B DUP3 DUP3 PUSH2 0xB6D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x719 CALLER DUP3 PUSH2 0xC26 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x75E DUP3 PUSH2 0x1A1 PUSH2 0x757 DUP7 CALLER PUSH2 0x964 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB3E JUMP JUMPDEST SWAP1 POP PUSH2 0x76B DUP4 CALLER DUP4 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x775 DUP4 DUP4 PUSH2 0xC26 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x70B DUP3 DUP3 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP3 PUSH2 0x795 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x61F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5F4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x61F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x636 SWAP2 DUP6 SWAP1 PUSH2 0x697 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 CALLER DUP5 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x8BE DUP13 PUSH2 0x795 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x94F DUP9 DUP3 PUSH2 0x946 DUP8 DUP8 DUP8 PUSH2 0xD16 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x95A DUP9 DUP9 DUP9 PUSH2 0x9A6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B9 PUSH2 0xDB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA39 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xA5D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xA68 DUP4 DUP4 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA9B SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB3E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE84 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB66 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE84 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB79 PUSH1 0x0 DUP4 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH2 0xB93 PUSH2 0xB8E DUP3 PUSH2 0xB88 PUSH2 0x63F JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xE92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBC3 SWAP1 DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC4A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xC56 DUP3 PUSH1 0x0 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC89 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB3E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCC4 PUSH2 0xB8E DUP3 PUSH2 0xCBE PUSH2 0x63F JUMP JUMPDEST SWAP1 PUSH2 0xE97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD60 DUP6 PUSH2 0xEA5 JUMP JUMPDEST SWAP1 POP PUSH2 0xD76 PUSH2 0xD70 DUP8 DUP4 DUP8 PUSH2 0xF0C JUMP JUMPDEST DUP4 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xD85 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE84 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE26 PUSH2 0x101E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x70B JUMPI PUSH2 0x70B DUP2 PUSH2 0x1022 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB66 DUP4 DUP4 PUSH1 0x1 PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAF PUSH2 0xDB9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1012 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x719 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS PUSH10 0xAFFF4EE45D3F7D3527FE ADDRESS RETURNDATACOPY 0xB7 RETURNDATASIZE 0xE3 0x4B SLT 0xC7 JUMPI 0xC DUP10 SWAP6 0xD7 0x4E EXTCODEHASH PUSH28 0x2E32EAE564736F6C6343000701003300000000000000000000000000 ","sourceMap":"836:772:80:-:0;;;898:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:80;;;;;;;;;;-1:-1:-1;898:179:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:80;;;;;;;;;;-1:-1:-1;898:179:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:80;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;898:179:80;;-1:-1:-1;1030:4:80;;-1:-1:-1;1030:4:80;;;;1010:6;;2118:13:71;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;836:772;;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;836:772:80:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:772:80;;;-1:-1:-1;836:772:80;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":3550}],"7648":[{"length":32,"start":3583}],"7650":[{"length":32,"start":3517}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061016c5760003560e01c806379cc6790116100cd578063a457c2d711610081578063d505accf11610066578063d505accf146104d4578063dd62ed3e14610532578063ed24911d1461056d5761016c565b8063a457c2d714610462578063a9059cbb1461049b5761016c565b80637ecebe00116100b25780637ecebe00146103f457806390193b7c1461042757806395d89b411461045a5761016c565b806379cc6790146103825780637c602bc2146103bb5761016c565b80633644e5151161012457806340c10f191161010957806340c10f19146102f757806342966c681461033257806370a082311461034f5761016c565b80633644e515146102b657806339509351146102be5761016c565b806318160ddd1161015557806318160ddd1461023b57806323b872dd14610255578063313ce567146102985761016c565b806306fdde0314610171578063095ea7b3146101ee575b600080fd5b610179610575565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102276004803603604081101561020457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610629565b604080519115158252519081900360200190f35b61024361063f565b60408051918252519081900360200190f35b6102276004803603606081101561026b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610645565b6102a06106a6565b6040805160ff9092168252519081900360200190f35b6102436106af565b610227600480360360408110156102d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106be565b6103306004803603604081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610701565b005b6103306004803603602081101561034857600080fd5b503561070f565b6102436004803603602081101561036557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661071c565b6103306004803603604081101561039857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610744565b610330600480360360408110156103d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561077a565b6102436004803603602081101561040a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610784565b6102436004803603602081101561043d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610795565b6101796107bd565b6102276004803603604081101561047857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561083c565b610227600480360360408110156104b157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610882565b610330600480360360e08110156104ea57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561088f565b6102436004803603604081101561054857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610964565b61024361099c565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561061f5780601f106105f45761010080835404028352916020019161061f565b820191906000526020600020905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b60006106363384846109a6565b50600192915050565b60025490565b6000610652848484610a15565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461069c918691610697908661019e610b3e565b6109a6565b5060019392505050565b60055460ff1690565b60006106b961099c565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106369185906106979086610b54565b61070b8282610b6d565b5050565b6107193382610c26565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061075e826101a16107578633610964565b9190610b3e565b905061076b8333836109a6565b6107758383610c26565b505050565b61070b8282610c26565b600061078f82610795565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561061f5780601f106105f45761010080835404028352916020019161061f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610636918590610697908661019f610b3e565b6000610636338484610a15565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108be8c610795565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905061094f8882610946878787610d16565b886101f8610d55565b61095a8888886109a6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006106b9610db9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610a3973ffffffffffffffffffffffffffffffffffffffff84161515610198610e84565b610a5d73ffffffffffffffffffffffffffffffffffffffff83161515610199610e84565b610a68838383610775565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a9b90826101a0610b3e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ad79082610b54565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610b4d8484111583610e84565b5050900390565b6000828201610b668482101583610e84565b9392505050565b610b7960008383610775565b610b93610b8e82610b8861063f565b90610b54565b610e92565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bc39082610b54565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c4a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e84565b610c5682600083610775565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c8990826101b2610b3e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610cc4610b8e82610cbe61063f565b90610e97565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d6085610ea5565b9050610d76610d70878387610f0c565b83610e84565b610d85428410156101b8610e84565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e2661101e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161070b5761070b81611022565b600255565b6000610b6683836001610b3e565b6000610eaf610db9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610f1e82516041146101b9610e84565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f97573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061101257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610719917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212203069afff4ee45d3f7d3527fe303eb73de34b12c7570c8995d74e3f7b2e32eae564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4D4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x56D JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x49B JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x45A JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x3BB JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x34F JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2BE JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x155 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x298 JUMPI PUSH2 0x16C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179 PUSH2 0x575 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x629 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x63F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x645 JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x70F JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x744 JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x77A JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x784 JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x795 JUMP JUMPDEST PUSH2 0x179 PUSH2 0x7BD JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83C JUMP JUMPDEST PUSH2 0x227 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x882 JUMP JUMPDEST PUSH2 0x330 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x88F JUMP JUMPDEST PUSH2 0x243 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x964 JUMP JUMPDEST PUSH2 0x243 PUSH2 0x99C JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x61F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5F4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x61F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x602 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 CALLER DUP5 DUP5 PUSH2 0x9A6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x652 DUP5 DUP5 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x69C SWAP2 DUP7 SWAP2 PUSH2 0x697 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB3E JUMP JUMPDEST PUSH2 0x9A6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B9 PUSH2 0x99C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x636 SWAP2 DUP6 SWAP1 PUSH2 0x697 SWAP1 DUP7 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0x70B DUP3 DUP3 PUSH2 0xB6D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x719 CALLER DUP3 PUSH2 0xC26 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x75E DUP3 PUSH2 0x1A1 PUSH2 0x757 DUP7 CALLER PUSH2 0x964 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB3E JUMP JUMPDEST SWAP1 POP PUSH2 0x76B DUP4 CALLER DUP4 PUSH2 0x9A6 JUMP JUMPDEST PUSH2 0x775 DUP4 DUP4 PUSH2 0xC26 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x70B DUP3 DUP3 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP3 PUSH2 0x795 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x61F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5F4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x61F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x636 SWAP2 DUP6 SWAP1 PUSH2 0x697 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 CALLER DUP5 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x8BE DUP13 PUSH2 0x795 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x94F DUP9 DUP3 PUSH2 0x946 DUP8 DUP8 DUP8 PUSH2 0xD16 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xD55 JUMP JUMPDEST PUSH2 0x95A DUP9 DUP9 DUP9 PUSH2 0x9A6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B9 PUSH2 0xDB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA39 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xA5D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xA68 DUP4 DUP4 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA9B SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB3E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE84 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB66 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE84 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB79 PUSH1 0x0 DUP4 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH2 0xB93 PUSH2 0xB8E DUP3 PUSH2 0xB88 PUSH2 0x63F JUMP JUMPDEST SWAP1 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xE92 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBC3 SWAP1 DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC4A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xC56 DUP3 PUSH1 0x0 DUP4 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC89 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB3E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCC4 PUSH2 0xB8E DUP3 PUSH2 0xCBE PUSH2 0x63F JUMP JUMPDEST SWAP1 PUSH2 0xE97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD60 DUP6 PUSH2 0xEA5 JUMP JUMPDEST SWAP1 POP PUSH2 0xD76 PUSH2 0xD70 DUP8 DUP4 DUP8 PUSH2 0xF0C JUMP JUMPDEST DUP4 PUSH2 0xE84 JUMP JUMPDEST PUSH2 0xD85 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE84 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE26 PUSH2 0x101E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x70B JUMPI PUSH2 0x70B DUP2 PUSH2 0x1022 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB66 DUP4 DUP4 PUSH1 0x1 PUSH2 0xB3E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEAF PUSH2 0xDB9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1012 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x719 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDRESS PUSH10 0xAFFF4EE45D3F7D3527FE ADDRESS RETURNDATACOPY 0xB7 RETURNDATASIZE 0xE3 0x4B SLT 0xC7 JUMPI 0xC DUP10 SWAP6 0xD7 0x4E EXTCODEHASH PUSH28 0x2E32EAE564736F6C6343000701003300000000000000000000000000 ","sourceMap":"836:772:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;:::-;;473:87:72;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":\"TestToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]}},\"version\":1}"}},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"AssetHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":\"AssetHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]}},\"version\":1}"}},"contracts/BALTokenHolder.sol":{"BALTokenHolder":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dc49c9d06b94988576b25d12b8d259b0afd50e8d9e366c73d15ee8ec02e95b3a64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x49 0xC9 0xD0 PUSH12 0x94988576B25D12B8D259B0AF 0xD5 0xE DUP14 SWAP15 CALLDATASIZE PUSH13 0x73D15EE8EC02E95B3A64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1563:1294:82:-:0;;;1751:465;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:82;;;;;;;;;;-1:-1:-1;1751:465:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:82;;-1:-1:-1;;1054:4:62;2049:46:56;;-1:-1:-1;;;1073:14:62;;;;;::::1;::::0;2157:30:82;;;;::::1;::::0;2197:12;;::::1;::::0;1030:31:62;;2197:12:82::1;::::0;::::1;::::0;::::1;:::i;:::-;;1751:465:::0;;;1563:1294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1563:1294:82;;;-1:-1:-1;1563:1294:82;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":713}],"5180":[{"length":32,"start":1055}],"9435":[{"length":32,"start":830},{"length":32,"start":1219},{"length":32,"start":1287}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dc49c9d06b94988576b25d12b8d259b0afd50e8d9e366c73d15ee8ec02e95b3a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x49 0xC9 0xD0 PUSH12 0x94988576B25D12B8D259B0AF 0xD5 0xE DUP14 SWAP15 CALLDATASIZE PUSH13 0x73D15EE8EC02E95B3A64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1563:1294:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:430:56;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:56;;;;:::i;:::-;;;;;;;;;;;;;;;;2600:255:82;;;;;;;;;;;;;;;;-1:-1:-1;2600:255:82;;;;;;;;;;;;;;;;;;:::i;:::-;;1158:79:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1297:109;;;:::i;2222:105:82:-;;;:::i;2434:160::-;;;;;;;;;;;;;;;;-1:-1:-1;2434:160:82;;;;;;;;;:::i;2333:95::-;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2384:13;;2409:12;;2416:5;;2409:12;;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;:::o;2607:430:56:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;2600:255:82:-;2276:21:56;:19;:21::i;:::-;2758:14:82::1;2749:23;;:5;:23;;;;2741:52;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2803:45;:26;::::0;::::1;2830:9:::0;2841:6;2803:26:::1;:45::i;:::-;2600:255:::0;;;:::o;1158:79:62:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:62;;-1:-1:-1;1297:109:62;:::o;2222:105:82:-;2306:14;2222:105;:::o;2434:160::-;2276:21:56;:19;:21::i;:::-;2533:54:82::1;:35;2540:14;2533:35;2569:9:::0;2580:6;2533:35:::1;:54::i;:::-;2434:160:::0;;:::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;:::-;2420:181;:::o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:62;;1412:178;-1:-1:-1;;;1412:178:62:o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;:::-;2324:914;;;;:::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getBalancerToken()":"c0039699","getName()":"17d7de7c","getVault()":"8d928af8","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the final recipient of the funds to be configurable without having to alter the gauges themselves. There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolder.sol\":\"BALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]}},\"version\":1}"}},"contracts/BALTokenHolderFactory.sol":{"BALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract BALTokenHolder","name":"balTokenHolder","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"BALTokenHolderCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610f3e380380610f3e8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c610ec061007e600039806101a45250806103a45250610ec06000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dc49c9d06b94988576b25d12b8d259b0afd50e8d9e366c73d15ee8ec02e95b3a64736f6c63430007010033a2646970667358221220bf49337edda226b217692c603a4d77adc1aa771976344fb06717836dd45ad7b664736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF3E CODESIZE SUB DUP1 PUSH2 0xF3E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xEC0 PUSH2 0x7E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1A4 MSTORE POP DUP1 PUSH2 0x3A4 MSTORE POP PUSH2 0xEC0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x49 0xC9 0xD0 PUSH12 0x94988576B25D12B8D259B0AF 0xD5 0xE DUP14 SWAP15 CALLDATASIZE PUSH13 0x73D15EE8EC02E95B3A64736F6C PUSH4 0x43000701 STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x49 CALLER PUSH31 0xDDA226B217692C603A4D77ADC1AA771976344FB06717836DD45AD7B664736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1071:1092:83:-:0;;;1365:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1365:127:83;;;;;;;-1:-1:-1;;;;;;1431:30:83;;;;;;;;1471:14;;;;;1071:1092;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9534":[{"length":32,"start":932}],"9536":[{"length":32,"start":420}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dc49c9d06b94988576b25d12b8d259b0afd50e8d9e366c73d15ee8ec02e95b3a64736f6c63430007010033a2646970667358221220bf49337edda226b217692c603a4d77adc1aa771976344fb06717836dd45ad7b664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x49 0xC9 0xD0 PUSH12 0x94988576B25D12B8D259B0AF 0xD5 0xE DUP14 SWAP15 CALLDATASIZE PUSH13 0x73D15EE8EC02E95B3A64736F6C PUSH4 0x43000701 STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0x49 CALLER PUSH31 0xDDA226B217692C603A4D77ADC1AA771976344FB06717836DD45AD7B664736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1071:1092:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:137;;;;;;;;;;;;;;;;-1:-1:-1;1710:137:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1616:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1853:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1853:308:83;;-1:-1:-1;1853:308:83;;-1:-1:-1;;;;;1853:308:83:i;1498:112::-;;;:::i;1710:137::-;1810:30;;1787:4;1810:30;;;;;;;;;;;;;;1710:137::o;1616:88::-;1691:6;1616:88;:::o;1853:308::-;1916:15;1943:21;1986:18;:16;:18::i;:::-;2006:10;:8;:10::i;:::-;2018:4;1967:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2034:39:83;;;:22;:39;;;;;;;;;;;:46;;;;2076:4;2034:46;;;2095:35;;;;;;;;;;;;;;;;;;;;;;1943:80;;-1:-1:-1;2095:35:83;;1943:80;;2125:4;;2095:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:6;1853:308;-1:-1:-1;;1853:308:83:o;1498:112::-;1589:14;1498:112;:::o;-1:-1:-1:-;;;;;;;;:::o"},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract BALTokenHolder\",\"name\":\"balTokenHolder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"BALTokenHolderCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolderFactory.sol\":\"BALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0x3ea8fab66b0ca4ee8aeb4c84bbca9d365f34ea929f249244d3f9080c8dc9dc1b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://659d93d04dc7b5ba34f7da7bed2da9644ae9e1c1d7aec740bbf097eceb741c23\",\"dweb:/ipfs/QmcHaoRzRZGJeT5UyxqpXNPFis23kMhS4Nj39RBuAveRG5\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]},\"contracts/BALTokenHolderFactory.sol\":{\"keccak256\":\"0x6a39b4ba36883fccffb7aba968f47506f9da34fbba13083359b24ff6d87ee987\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a3e7b85da409b6f08ecdd33e6c0bf5e16e8f7c5646a0432e038a0d5181581a0\",\"dweb:/ipfs/QmYiGqYU4Gf8UgtinQa6VGjzQ6FEQ8XtouVXAxTaCAYiqh\"]}},\"version\":1}"}},"contracts/BalancerPoolDataQueries.sol":{"BalancerPoolDataQueries":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getAmpForPools","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getInRecoveryModeForPools","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getIsPausedForPools","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getLinearTargetsForPools","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getNormalizedWeightsForPools","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"},{"components":[{"internalType":"bool","name":"loadTokenBalanceUpdatesAfterBlock","type":"bool"},{"internalType":"bool","name":"loadTotalSupply","type":"bool"},{"internalType":"bool","name":"loadSwapFees","type":"bool"},{"internalType":"bool","name":"loadLinearWrappedTokenRates","type":"bool"},{"internalType":"bool","name":"loadLinearTargets","type":"bool"},{"internalType":"bool","name":"loadNormalizedWeights","type":"bool"},{"internalType":"bool","name":"loadScalingFactors","type":"bool"},{"internalType":"bool","name":"loadAmps","type":"bool"},{"internalType":"bool","name":"loadRates","type":"bool"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"enum TotalSupplyType[]","name":"totalSupplyTypes","type":"uint8[]"},{"internalType":"enum SwapFeeType[]","name":"swapFeeTypes","type":"uint8[]"},{"internalType":"uint256[]","name":"linearPoolIdxs","type":"uint256[]"},{"internalType":"uint256[]","name":"weightedPoolIdxs","type":"uint256[]"},{"internalType":"uint256[]","name":"scalingFactorPoolIdxs","type":"uint256[]"},{"internalType":"uint256[]","name":"ampPoolIdxs","type":"uint256[]"},{"internalType":"uint256[]","name":"ratePoolIdxs","type":"uint256[]"}],"internalType":"struct PoolDataQueryConfig","name":"config","type":"tuple"}],"name":"getPoolData","outputs":[{"internalType":"uint256[][]","name":"balances","type":"uint256[][]"},{"internalType":"uint256[]","name":"totalSupplies","type":"uint256[]"},{"internalType":"uint256[]","name":"swapFees","type":"uint256[]"},{"internalType":"uint256[]","name":"linearWrappedTokenRates","type":"uint256[]"},{"internalType":"uint256[][]","name":"linearTargets","type":"uint256[][]"},{"internalType":"uint256[][]","name":"weights","type":"uint256[][]"},{"internalType":"uint256[][]","name":"scalingFactors","type":"uint256[][]"},{"internalType":"uint256[]","name":"amps","type":"uint256[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"},{"internalType":"uint256[]","name":"ignoreIdxs","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"},{"components":[{"internalType":"bool","name":"loadInRecoveryMode","type":"bool"},{"internalType":"bool","name":"loadIsPaused","type":"bool"}],"internalType":"struct PoolStatusQueryConfig","name":"config","type":"tuple"}],"name":"getPoolStatus","outputs":[{"internalType":"bool[]","name":"isPaused","type":"bool[]"},{"internalType":"bool[]","name":"inRecoveryMode","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"poolIds","type":"bytes32[]"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPoolTokenBalancesWithUpdatesAfterBlock","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getRateForPools","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getScalingFactorsForPools","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"},{"internalType":"enum SwapFeeType[]","name":"swapFeeTypes","type":"uint8[]"}],"name":"getSwapFeePercentageForPools","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"},{"internalType":"enum TotalSupplyType[]","name":"totalSupplyTypes","type":"uint8[]"}],"name":"getTotalSupplyForPools","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"poolAddresses","type":"address[]"}],"name":"getWrappedTokenRateForLinearPools","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a06040523480156200001157600080fd5b50604051620028ef380380620028ef83398101604081905262000034916200004a565b60601b6001600160601b0319166080526200007a565b6000602082840312156200005c578081fd5b81516001600160a01b038116811462000073578182fd5b9392505050565b60805160601c612848620000a76000398061056352806107045280610d1452806113cb52506128486000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b3a460011161008c578063ecfb5a7c11610066578063ecfb5a7c146101eb578063ed5017f6146101fe578063fbfa77cf14610227578063fd4363781461023c576100ea565b8063b3a46001146101b2578063b4a9f0c8146101c5578063c4fb0f82146101d8576100ea565b8063716bb27a116100c8578063716bb27a1461014c5780637b2de5331461016c578063828f7c7d1461017f57806396ebd93414610192576100ea565b806304013a7d146100ef57806317615f32146101185780634b3dcc1e1461012b575b600080fd5b6101026100fd366004611ff9565b61024f565b60405161010f919061274e565b60405180910390f35b610102610126366004611fbe565b61046f565b61013e6101393660046122d4565b610507565b60405161010f929190612720565b61015f61015a366004612356565b6106a0565b60405161010f919061261f565b61010261017a366004611fbe565b6107fb565b61015f61018d366004611fbe565b61088a565b6101a56101a0366004611fbe565b610923565b60405161010f919061270d565b61015f6101c0366004611fbe565b6109b7565b6101026101d336600461205a565b610a50565b6101026101e6366004611fbe565b610b84565b61015f6101f9366004611fbe565b610c13565b61021161020c3660046120b1565b610cac565b60405161010f9a99989796959493929190612632565b61022f6113c9565b60405161010f919061276a565b6101a561024a366004611fbe565b6113ed565b606080835167ffffffffffffffff8111801561026a57600080fd5b50604051908082528060200260200182016040528015610294578160200160208202803683370190505b50905060005b84518110156104655760018482815181106102b157fe5b602002602001015160018111156102c457fe5b1415610396578481815181106102d657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634c1a41156040518163ffffffff1660e01b815260040160206040518083038186803b15801561032357600080fd5b505afa925050508015610353575060408051601f3d908101601f19168201909252610350918101906124f1565b60015b61037657600082828151811061036557fe5b602002602001018181525050610391565b8083838151811061038357fe5b602002602001018181525050505b61045d565b8481815181106103a257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ef57600080fd5b505afa92505050801561041f575060408051601f3d908101601f1916820190925261041c918101906124f1565b60015b61044257600082828151811061043157fe5b60200260200101818152505061045d565b8083838151811061044f57fe5b602002602001018181525050505b60010161029a565b5090505b92915050565b606080825167ffffffffffffffff8111801561048a57600080fd5b506040519080825280602002602001820160405280156104b4578160200160208202803683370190505b50905060005b83518110156104fe576104df8482815181106104d257fe5b6020026020010151611481565b8282815181106104eb57fe5b60209081029190910101526001016104ba565b5090505b919050565b60608060006060855167ffffffffffffffff8111801561052657600080fd5b50604051908082528060200260200182016040528015610550578160200160208202803683370190505b509050600091505b855182101561066e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c009278784815181106105a957fe5b60200260200101516040518263ffffffff1660e01b81526004016105cd9190612761565b604080518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611f85565b5081838151811061062957fe5b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050610558565b84602001511561068457610681816113ed565b93505b8451156106975761069481610923565b92505b50509250929050565b60608060006060855167ffffffffffffffff811180156106bf57600080fd5b506040519080825280602002602001820160405280156106f357816020015b60608152602001906001900390816106de5790505b50905060005b86518110156107f1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f94d466888838151811061074a57fe5b60200260200101516040518263ffffffff1660e01b815260040161076e9190612761565b60006040518083038186803b15801561078657600080fd5b505afa15801561079a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c29190810190612399565b909550935050858311156107e957838282815181106107dd57fe5b60200260200101819052505b6001016106f9565b5095945050505050565b606080825167ffffffffffffffff8111801561081657600080fd5b50604051908082528060200260200182016040528015610840578160200160208202803683370190505b50905060005b83518110156104fe5761086b84828151811061085e57fe5b602002602001015161150c565b82828151811061087757fe5b6020908102919091010152600101610846565b606080825167ffffffffffffffff811180156108a557600080fd5b506040519080825280602002602001820160405280156108d957816020015b60608152602001906001900390816108c45790505b50905060005b83518110156104fe576109048482815181106108f757fe5b602002602001015161159b565b82828151811061091057fe5b60209081029190910101526001016108df565b606080825167ffffffffffffffff8111801561093e57600080fd5b50604051908082528060200260200182016040528015610968578160200160208202803683370190505b50905060005b83518110156104fe5761099384828151811061098657fe5b6020026020010151611631565b82828151811061099f57fe5b9115156020928302919091019091015260010161096e565b606080825167ffffffffffffffff811180156109d257600080fd5b50604051908082528060200260200182016040528015610a0657816020015b60608152602001906001900390816109f15790505b50905060005b83518110156104fe57610a31848281518110610a2457fe5b60200260200101516116a6565b828281518110610a3d57fe5b6020908102919091010152600101610a0c565b606080835167ffffffffffffffff81118015610a6b57600080fd5b50604051908082528060200260200182016040528015610a95578160200160208202803683370190505b50905060005b8451811015610465576001848281518110610ab257fe5b60200260200101516002811115610ac557fe5b1415610b0457610ae7858281518110610ada57fe5b60200260200101516116ee565b828281518110610af357fe5b602002602001018181525050610b7c565b6002848281518110610b1257fe5b60200260200101516002811115610b2557fe5b1415610b4757610ae7858281518110610b3a57fe5b6020026020010151611736565b610b63858281518110610b5657fe5b602002602001015161177e565b828281518110610b6f57fe5b6020026020010181815250505b600101610a9b565b606080825167ffffffffffffffff81118015610b9f57600080fd5b50604051908082528060200260200182016040528015610bc9578160200160208202803683370190505b50905060005b83518110156104fe57610bf4848281518110610be757fe5b60200260200101516117c6565b828281518110610c0057fe5b6020908102919091010152600101610bcf565b606080825167ffffffffffffffff81118015610c2e57600080fd5b50604051908082528060200260200182016040528015610c6257816020015b6060815260200190600190039081610c4d5790505b50905060005b83518110156104fe57610c8d848281518110610c8057fe5b602002602001015161180e565b828281518110610c9957fe5b6020908102919091010152600101610c68565b606080606080606080606080606080600060608d5167ffffffffffffffff81118015610cd757600080fd5b50604051908082528060200260200182016040528015610d01578160200160208202803683370190505b509050600091505b8d51821015610e1f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c009278f8481518110610d5a57fe5b60200260200101516040518263ffffffff1660e01b8152600401610d7e9190612761565b604080518083038186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611f85565b50818381518110610dda57fe5b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050610d09565b8c5115610e3857610e358e8e61012001516106a0565b9b505b8c6020015115610e5457610e51818e6101400151610a50565b9a505b8c6040015115610e7057610e6d818e610160015161024f565b99505b8c6060015115610f4e5760608d61018001515167ffffffffffffffff81118015610e9957600080fd5b50604051908082528060200260200182016040528015610ec3578160200160208202803683370190505b509050600092505b8d610180015151831015610f4157818e61018001518481518110610eeb57fe5b602002602001015181518110610efd57fe5b6020026020010151818481518110610f1157fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191610ecb565b610f4a8161046f565b9950505b8c60a001511561102c5760608d6101a001515167ffffffffffffffff81118015610f7757600080fd5b50604051908082528060200260200182016040528015610fa1578160200160208202803683370190505b509050600092505b8d6101a001515183101561101f57818e6101a001518481518110610fc957fe5b602002602001015181518110610fdb57fe5b6020026020010151818481518110610fef57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191610fa9565b611028816109b7565b9750505b8c60c001511561110a5760608d6101c001515167ffffffffffffffff8111801561105557600080fd5b5060405190808252806020026020018201604052801561107f578160200160208202803683370190505b509050600092505b8d6101c00151518310156110fd57818e6101c0015184815181106110a757fe5b6020026020010151815181106110b957fe5b60200260200101518184815181106110cd57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611087565b6111068161088a565b9650505b8c60e00151156111e85760608d6101e001515167ffffffffffffffff8111801561113357600080fd5b5060405190808252806020026020018201604052801561115d578160200160208202803683370190505b509050600092505b8d6101e00151518310156111db57818e6101e00151848151811061118557fe5b60200260200101518151811061119757fe5b60200260200101518184815181106111ab57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611165565b6111e4816107fb565b9550505b8c6101000151156112c75760608d61020001515167ffffffffffffffff8111801561121257600080fd5b5060405190808252806020026020018201604052801561123c578160200160208202803683370190505b509050600092505b8d6102000151518310156112ba57818e6102000151848151811061126457fe5b60200260200101518151811061127657fe5b602002602001015181848151811061128a57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611244565b6112c381610b84565b9450505b8c60800151156113a55760608d61018001515167ffffffffffffffff811180156112f057600080fd5b5060405190808252806020026020018201604052801561131a578160200160208202803683370190505b509050600092505b8d61018001515183101561139857818e6101800151848151811061134257fe5b60200260200101518151811061135457fe5b602002602001015181848151811061136857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611322565b6113a181610c13565b9850505b6113b68e8e8d8d8d8a8a8d8f6118e5565b925050509295989b9194979a5092959850565b7f000000000000000000000000000000000000000000000000000000000000000081565b606080825167ffffffffffffffff8111801561140857600080fd5b50604051908082528060200260200182016040528015611432578160200160208202803683370190505b50905060005b83518110156104fe5761145d84828151811061145057fe5b6020026020010151611cf4565b82828151811061146957fe5b91151560209283029190910190910152600101611438565b60008173ffffffffffffffffffffffffffffffffffffffff1663f5431aa86040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b505afa9250505080156114f9575060408051601f3d908101601f191682019092526114f6918101906124f1565b60015b61150557506000610502565b9050610502565b60008173ffffffffffffffffffffffffffffffffffffffff16636daccffa6040518163ffffffff1660e01b815260040160606040518083038186803b15801561155457600080fd5b505afa925050508015611584575060408051601f3d908101601f1916820190925261158191810190612509565b60015b61159057506000610502565b829350505050610502565b60608173ffffffffffffffffffffffffffffffffffffffff16631dd746ea6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115e357600080fd5b505afa92505050801561161857506040513d6000823e601f3d908101601f191682016040526116159190810190612465565b60015b6115055750604080516000815260208101909152610502565b60008173ffffffffffffffffffffffffffffffffffffffff1663b35056b86040518163ffffffff1660e01b815260040160206040518083038186803b15801561167957600080fd5b505afa9250505080156114f9575060408051601f3d908101601f191682019092526114f691810190612498565b60608173ffffffffffffffffffffffffffffffffffffffff1663f89f27ed6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115e357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663de82cd346040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663876f303b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b6040805160028082526060808301845292839291906020830190803683370190505090508273ffffffffffffffffffffffffffffffffffffffff166363fe3b566040518163ffffffff1660e01b8152600401604080518083038186803b15801561187757600080fd5b505afa15801561188b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118af9190612541565b826000815181106118bc57fe5b60200260200101836001815181106118d057fe5b60209081029190910101919091525292915050565b6060808a5167ffffffffffffffff8111801561190057600080fd5b5060405190808252806020026020018201604052801561192a578160200160208202803683370190505b5090506000805b8c518110156119b4578b60200151801561195e57508a818151811061195257fe5b60200260200101516000145b8061198857508b604001518015611988575089818151811061197c57fe5b60200260200101516000145b156119ac57600183828151811061199b57fe5b911515602092830291909101909101525b600101611931565b8b6060015115611a2b575060005b8b610180015151811015611a2b578881815181106119dc57fe5b602002602001015160001415611a23576001838d61018001518381518110611a0057fe5b602002602001015181518110611a1257fe5b911515602092830291909101909101525b6001016119c2565b8b60e0015115611aa2575060005b8b6101e0015151811015611aa257878181518110611a5357fe5b602002602001015160001415611a9a576001838d6101e001518381518110611a7757fe5b602002602001015181518110611a8957fe5b911515602092830291909101909101525b600101611a39565b8b610100015115611b1a575060005b8b610200015151811015611b1a57868181518110611acb57fe5b602002602001015160001415611b12576001838d61020001518381518110611aef57fe5b602002602001015181518110611b0157fe5b911515602092830291909101909101525b600101611ab1565b8b60c0015115611b92575060005b8b6101c0015151811015611b9257858181518110611b4257fe5b60200260200101515160001415611b8a576001838d6101c001518381518110611b6757fe5b602002602001015181518110611b7957fe5b911515602092830291909101909101525b600101611b28565b8b60a0015115611c0a575060005b8b6101a0015151811015611c0a57848181518110611bba57fe5b60200260200101515160001415611c02576001838d6101a001518381518110611bdf57fe5b602002602001015181518110611bf157fe5b911515602092830291909101909101525b600101611ba0565b5060005b8251811015611c4657828181518110611c2357fe5b60200260200101511515600115151415611c3e576001909101905b600101611c0e565b60608267ffffffffffffffff81118015611c5f57600080fd5b50604051908082528060200260200182016040528015611c89578160200160208202803683370190505b50905060008092505b8451831015611ce257848381518110611ca757fe5b60200260200101511515600115151415611cd75782828281518110611cc857fe5b60209081029190910101526001015b600190920191611c92565b509d9c50505050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16631c0de0516040518163ffffffff1660e01b815260040160606040518083038186803b158015611d3c57600080fd5b505afa925050508015611584575060408051601f3d908101601f19168201909252611581918101906124bb565b600082601f830112611d79578081fd5b8135611d8c611d87826127b2565b61278b565b818152915060208083019084810181840286018201871015611dad57600080fd5b60005b84811015611dd5578135611dc3816127d2565b84529282019290820190600101611db0565b505050505092915050565b600082601f830112611df0578081fd5b8135611dfe611d87826127b2565b818152915060208083019084810181840286018201871015611e1f57600080fd5b60005b84811015611dd557813584529282019290820190600101611e22565b600082601f830112611e4e578081fd5b8135611e5c611d87826127b2565b818152915060208083019084810181840286018201871015611e7d57600080fd5b6000805b85811015611ea957823560028110611e97578283fd5b85529383019391830191600101611e81565b50505050505092915050565b600082601f830112611ec5578081fd5b8135611ed3611d87826127b2565b818152915060208083019084810181840286018201871015611ef457600080fd5b60005b84811015611dd5578135611f0a81612805565b84529282019290820190600101611ef7565b600082601f830112611f2c578081fd5b8151611f3a611d87826127b2565b818152915060208083019084810181840286018201871015611f5b57600080fd5b60005b84811015611dd557815184529282019290820190600101611f5e565b8035610469816127f7565b60008060408385031215611f97578182fd5b8251611fa2816127d2565b6020840151909250611fb381612805565b809150509250929050565b600060208284031215611fcf578081fd5b813567ffffffffffffffff811115611fe5578182fd5b611ff184828501611d69565b949350505050565b6000806040838503121561200b578182fd5b823567ffffffffffffffff80821115612022578384fd5b61202e86838701611d69565b93506020850135915080821115612043578283fd5b5061205085828601611e3e565b9150509250929050565b6000806040838503121561206c578182fd5b823567ffffffffffffffff80821115612083578384fd5b61208f86838701611d69565b935060208501359150808211156120a4578283fd5b5061205085828601611eb5565b600080604083850312156120c3578182fd5b823567ffffffffffffffff808211156120da578384fd5b6120e686838701611de0565b935060208501359150808211156120fb578283fd5b8185019150610220808388031215612111578384fd5b61211a8161278b565b90506121268784611f7a565b81526121358760208501611f7a565b60208201526121478760408501611f7a565b60408201526121598760608501611f7a565b606082015261216b8760808501611f7a565b608082015261217d8760a08501611f7a565b60a082015261218f8760c08501611f7a565b60c08201526121a18760e08501611f7a565b60e08201526101006121b588828601611f7a565b90820152610120838101359082015261014080840135838111156121d7578586fd5b6121e389828701611eb5565b82840152505061016080840135838111156121fc578586fd5b61220889828701611e3e565b8284015250506101808084013583811115612221578586fd5b61222d89828701611de0565b8284015250506101a08084013583811115612246578586fd5b61225289828701611de0565b8284015250506101c0808401358381111561226b578586fd5b61227789828701611de0565b8284015250506101e08084013583811115612290578586fd5b61229c89828701611de0565b82840152505061020080840135838111156122b5578586fd5b6122c189828701611de0565b8284015250508093505050509250929050565b60008082840360608112156122e7578283fd5b833567ffffffffffffffff8111156122fd578384fd5b61230986828701611de0565b9350506040601f198201121561231d578182fd5b50612328604061278b565b6020840135612336816127f7565b81526040840135612346816127f7565b6020820152919491935090915050565b60008060408385031215612368578182fd5b823567ffffffffffffffff81111561237e578283fd5b61238a85828601611de0565b95602094909401359450505050565b6000806000606084860312156123ad578081fd5b835167ffffffffffffffff808211156123c4578283fd5b818601915086601f8301126123d7578283fd5b81516123e5611d87826127b2565b80828252602080830192508086018b828387028901011115612405578788fd5b8796505b8487101561243057805161241c816127d2565b845260019690960195928101928101612409565b508901519097509350505080821115612447578283fd5b5061245486828701611f1c565b925050604084015190509250925092565b600060208284031215612476578081fd5b815167ffffffffffffffff81111561248c578182fd5b611ff184828501611f1c565b6000602082840312156124a9578081fd5b81516124b4816127f7565b9392505050565b6000806000606084860312156124cf578081fd5b83516124da816127f7565b602085015160409095015190969495509392505050565b600060208284031215612502578081fd5b5051919050565b60008060006060848603121561251d578081fd5b83519250602084015161252f816127f7565b80925050604084015190509250925092565b60008060408385031215612553578182fd5b505080516020909101519092909150565b6000815180845260208085019450848183028601828601855b858110156125a75783830389526125958383516125f0565b9885019892509084019060010161257d565b5090979650505050505050565b6000815180845260208085019450808401835b838110156125e55781511515875295820195908201906001016125c7565b509495945050505050565b6000815180845260208085019450808401835b838110156125e557815187529582019590820190600101612603565b6000602082526124b46020830184612564565b60006101408083526126468184018e612564565b9050828103602084015261265a818d6125f0565b9050828103604084015261266e818c6125f0565b90508281036060840152612682818b6125f0565b90508281036080840152612696818a612564565b905082810360a08401526126aa8189612564565b905082810360c08401526126be8188612564565b905082810360e08401526126d281876125f0565b90508281036101008401526126e781866125f0565b90508281036101208401526126fc81856125f0565b9d9c50505050505050505050505050565b6000602082526124b460208301846125b4565b60006040825261273360408301856125b4565b828103602084015261274581856125b4565b95945050505050565b6000602082526124b460208301846125f0565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156127aa57600080fd5b604052919050565b600067ffffffffffffffff8211156127c8578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff811681146127f457600080fd5b50565b80151581146127f457600080fd5b600381106127f457600080fdfea2646970667358221220ca3984f20141bfd5cfeb0527ebaa61758fcf55e38cecb2ccbda647cf7bf9f2c764736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x28EF CODESIZE SUB DUP1 PUSH3 0x28EF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x4A JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH3 0x7A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x73 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x2848 PUSH3 0xA7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x563 MSTORE DUP1 PUSH2 0x704 MSTORE DUP1 PUSH2 0xD14 MSTORE DUP1 PUSH2 0x13CB MSTORE POP PUSH2 0x2848 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB3A46001 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xECFB5A7C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xECFB5A7C EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xED5017F6 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xFD436378 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xB3A46001 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB4A9F0C8 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xC4FB0F82 EQ PUSH2 0x1D8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x716BB27A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x716BB27A EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x7B2DE533 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x828F7C7D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x96EBD934 EQ PUSH2 0x192 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x4013A7D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x17615F32 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4B3DCC1E EQ PUSH2 0x12B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x274E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x102 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x22D4 JUMP JUMPDEST PUSH2 0x507 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x2720 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x2356 JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x261F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x15F PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x88A JUMP JUMPDEST PUSH2 0x1A5 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x923 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x205A JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0xCAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2632 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x13C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x276A JUMP JUMPDEST PUSH2 0x1A5 PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x294 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x1 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2C4 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x396 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C1A4115 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x353 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x350 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x376 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x365 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x391 JUMP JUMPDEST DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x383 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH2 0x45D JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x41F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x41C SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x442 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x431 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x45D JUMP JUMPDEST DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x44F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x29A JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4B4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x4DF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1481 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4EB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BA JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x550 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP2 POP JUMPDEST DUP6 MLOAD DUP3 LT ISZERO PUSH2 0x66E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x5A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CD SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61C SWAP2 SWAP1 PUSH2 0x1F85 JUMP JUMPDEST POP DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP1 PUSH1 0x1 ADD SWAP3 POP POP PUSH2 0x558 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x684 JUMPI PUSH2 0x681 DUP2 PUSH2 0x13ED JUMP JUMPDEST SWAP4 POP JUMPDEST DUP5 MLOAD ISZERO PUSH2 0x697 JUMPI PUSH2 0x694 DUP2 PUSH2 0x923 JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6F3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x6DE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF94D4668 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x74A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2399 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP DUP6 DUP4 GT ISZERO PUSH2 0x7E9 JUMPI DUP4 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6F9 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x840 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x86B DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x85E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x150C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x877 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x846 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8D9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x8C4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x904 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x159B JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x910 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x8DF JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x968 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x993 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x986 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1631 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x99F JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x96E JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA06 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x9F1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xA31 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16A6 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA3D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA0C JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA95 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x1 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAC5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB04 JUMPI PUSH2 0xAE7 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xADA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16EE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xB7C JUMP JUMPDEST PUSH1 0x2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB25 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB47 JUMPI PUSH2 0xAE7 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1736 JUMP JUMPDEST PUSH2 0xB63 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB56 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x177E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBC9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xBF4 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xBE7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x17C6 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC00 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xBCF JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC62 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC4D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xC8D DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC80 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x180E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC99 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP14 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD01 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP2 POP JUMPDEST DUP14 MLOAD DUP3 LT ISZERO PUSH2 0xE1F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP16 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD7E SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDCD SWAP2 SWAP1 PUSH2 0x1F85 JUMP JUMPDEST POP DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xDDA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP1 PUSH1 0x1 ADD SWAP3 POP POP PUSH2 0xD09 JUMP JUMPDEST DUP13 MLOAD ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE35 DUP15 DUP15 PUSH2 0x120 ADD MLOAD PUSH2 0x6A0 JUMP JUMPDEST SWAP12 POP JUMPDEST DUP13 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0xE54 JUMPI PUSH2 0xE51 DUP2 DUP15 PUSH2 0x140 ADD MLOAD PUSH2 0xA50 JUMP JUMPDEST SWAP11 POP JUMPDEST DUP13 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xE70 JUMPI PUSH2 0xE6D DUP2 DUP15 PUSH2 0x160 ADD MLOAD PUSH2 0x24F JUMP JUMPDEST SWAP10 POP JUMPDEST DUP13 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0xF4E JUMPI PUSH1 0x60 DUP14 PUSH2 0x180 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xE99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEC3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x180 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0xF41 JUMPI DUP2 DUP15 PUSH2 0x180 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEEB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0xEFD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF11 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xECB JUMP JUMPDEST PUSH2 0xF4A DUP2 PUSH2 0x46F JUMP JUMPDEST SWAP10 POP POP JUMPDEST DUP13 PUSH1 0xA0 ADD MLOAD ISZERO PUSH2 0x102C JUMPI PUSH1 0x60 DUP14 PUSH2 0x1A0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFA1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1A0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x101F JUMPI DUP2 DUP15 PUSH2 0x1A0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFC9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0xFDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0x1028 DUP2 PUSH2 0x9B7 JUMP JUMPDEST SWAP8 POP POP JUMPDEST DUP13 PUSH1 0xC0 ADD MLOAD ISZERO PUSH2 0x110A JUMPI PUSH1 0x60 DUP14 PUSH2 0x1C0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x107F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1C0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x10FD JUMPI DUP2 DUP15 PUSH2 0x1C0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10A7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x10B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10CD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1087 JUMP JUMPDEST PUSH2 0x1106 DUP2 PUSH2 0x88A JUMP JUMPDEST SWAP7 POP POP JUMPDEST DUP13 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x11E8 JUMPI PUSH1 0x60 DUP14 PUSH2 0x1E0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x115D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1E0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x11DB JUMPI DUP2 DUP15 PUSH2 0x1E0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1185 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11AB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x11E4 DUP2 PUSH2 0x7FB JUMP JUMPDEST SWAP6 POP POP JUMPDEST DUP13 PUSH2 0x100 ADD MLOAD ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x60 DUP14 PUSH2 0x200 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x123C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x200 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x12BA JUMPI DUP2 DUP15 PUSH2 0x200 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1264 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1276 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1244 JUMP JUMPDEST PUSH2 0x12C3 DUP2 PUSH2 0xB84 JUMP JUMPDEST SWAP5 POP POP JUMPDEST DUP13 PUSH1 0x80 ADD MLOAD ISZERO PUSH2 0x13A5 JUMPI PUSH1 0x60 DUP14 PUSH2 0x180 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x12F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x131A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x180 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x1398 JUMPI DUP2 DUP15 PUSH2 0x180 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1342 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1354 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1368 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x13A1 DUP2 PUSH2 0xC13 JUMP JUMPDEST SWAP9 POP POP JUMPDEST PUSH2 0x13B6 DUP15 DUP15 DUP14 DUP14 DUP14 DUP11 DUP11 DUP14 DUP16 PUSH2 0x18E5 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1432 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x145D DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1450 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1CF4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1469 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1438 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5431AA8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1505 JUMPI POP PUSH1 0x0 PUSH2 0x502 JUMP JUMPDEST SWAP1 POP PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DACCFFA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1584 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1581 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1590 JUMPI POP PUSH1 0x0 PUSH2 0x502 JUMP JUMPDEST DUP3 SWAP4 POP POP POP POP PUSH2 0x502 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1DD746EA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1618 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1615 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2465 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1505 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB35056B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2498 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF89F27ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDE82CD34 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x876F303B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x63FE3B56 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AF SWAP2 SWAP1 PUSH2 0x2541 JUMP JUMPDEST DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18BC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD SWAP2 SWAP1 SWAP2 MSTORE MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP11 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x192A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP13 MLOAD DUP2 LT ISZERO PUSH2 0x19B4 JUMPI DUP12 PUSH1 0x20 ADD MLOAD DUP1 ISZERO PUSH2 0x195E JUMPI POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1952 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ JUMPDEST DUP1 PUSH2 0x1988 JUMPI POP DUP12 PUSH1 0x40 ADD MLOAD DUP1 ISZERO PUSH2 0x1988 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x197C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ JUMPDEST ISZERO PUSH2 0x19AC JUMPI PUSH1 0x1 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x199B JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1931 JUMP JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x1A2B JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x180 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1A2B JUMPI DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x19DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1A23 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x180 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1A12 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x19C2 JUMP JUMPDEST DUP12 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x1AA2 JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1E0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1AA2 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1A53 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1E0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A77 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1A89 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A39 JUMP JUMPDEST DUP12 PUSH2 0x100 ADD MLOAD ISZERO PUSH2 0x1B1A JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x200 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1B1A JUMPI DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1ACB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1B12 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x200 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1AEF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1B01 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1AB1 JUMP JUMPDEST DUP12 PUSH1 0xC0 ADD MLOAD ISZERO PUSH2 0x1B92 JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1C0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1B92 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1B42 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1B8A JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1C0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1B67 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1B79 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B28 JUMP JUMPDEST DUP12 PUSH1 0xA0 ADD MLOAD ISZERO PUSH2 0x1C0A JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1A0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1C0A JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1BBA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1C02 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1A0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BDF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1BF1 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1C46 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1C23 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ ISZERO PUSH2 0x1C3E JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C89 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP3 POP JUMPDEST DUP5 MLOAD DUP4 LT ISZERO PUSH2 0x1CE2 JUMPI DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CA7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ ISZERO PUSH2 0x1CD7 JUMPI DUP3 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1C92 JUMP JUMPDEST POP SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1C0DE051 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1584 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1581 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D79 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D8C PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST PUSH2 0x278B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1DAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD PUSH2 0x1DC3 DUP2 PUSH2 0x27D2 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1DB0 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1DFE PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1E5C PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1EA9 JUMPI DUP3 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x1E97 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1E81 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1ED3 PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1EF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD PUSH2 0x1F0A DUP2 PUSH2 0x2805 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F2C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F3A PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1F5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1F5E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x469 DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F97 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x1FA2 DUP2 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x1FB3 DUP2 PUSH2 0x2805 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FCF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FE5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1FF1 DUP5 DUP3 DUP6 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x200B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2022 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x202E DUP7 DUP4 DUP8 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2043 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2050 DUP6 DUP3 DUP7 ADD PUSH2 0x1E3E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x206C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2083 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x208F DUP7 DUP4 DUP8 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x20A4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2050 DUP6 DUP3 DUP7 ADD PUSH2 0x1EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x20DA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x20E6 DUP7 DUP4 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x20FB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP PUSH2 0x220 DUP1 DUP4 DUP9 SUB SLT ISZERO PUSH2 0x2111 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x211A DUP2 PUSH2 0x278B JUMP JUMPDEST SWAP1 POP PUSH2 0x2126 DUP8 DUP5 PUSH2 0x1F7A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2135 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2147 DUP8 PUSH1 0x40 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2159 DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x216B DUP8 PUSH1 0x80 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x217D DUP8 PUSH1 0xA0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x218F DUP8 PUSH1 0xC0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x21A1 DUP8 PUSH1 0xE0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x21B5 DUP9 DUP3 DUP7 ADD PUSH2 0x1F7A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x21D7 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x21E3 DUP10 DUP3 DUP8 ADD PUSH2 0x1EB5 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x21FC JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2208 DUP10 DUP3 DUP8 ADD PUSH2 0x1E3E JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2221 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x222D DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2246 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2252 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x226B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2277 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2290 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x229C DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x200 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x22B5 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22C1 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x60 DUP2 SLT ISZERO PUSH2 0x22E7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2309 DUP7 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x231D JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH2 0x2328 PUSH1 0x40 PUSH2 0x278B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2336 DUP2 PUSH2 0x27F7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2368 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x237E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x238A DUP6 DUP3 DUP7 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23AD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x23C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x23E5 PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x2405 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x2430 JUMPI DUP1 MLOAD PUSH2 0x241C DUP2 PUSH2 0x27D2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x2409 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2447 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2454 DUP7 DUP3 DUP8 ADD PUSH2 0x1F1C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2476 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x248C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1FF1 DUP5 DUP3 DUP6 ADD PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24A9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B4 DUP2 PUSH2 0x27F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x24CF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x24DA DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2502 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x251D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x252F DUP2 PUSH2 0x27F7 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2553 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP5 DUP2 DUP4 MUL DUP7 ADD DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25A7 JUMPI DUP4 DUP4 SUB DUP10 MSTORE PUSH2 0x2595 DUP4 DUP4 MLOAD PUSH2 0x25F0 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP3 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x257D JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E5 JUMPI DUP2 MLOAD ISZERO ISZERO DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25C7 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E5 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2603 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP1 DUP4 MSTORE PUSH2 0x2646 DUP2 DUP5 ADD DUP15 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x265A DUP2 DUP14 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x266E DUP2 DUP13 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x2682 DUP2 DUP12 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2696 DUP2 DUP11 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x26AA DUP2 DUP10 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x26BE DUP2 DUP9 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x26D2 DUP2 DUP8 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x26E7 DUP2 DUP7 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x26FC DUP2 DUP6 PUSH2 0x25F0 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x2733 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x25B4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2745 DUP2 DUP6 PUSH2 0x25B4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x27C8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CODECOPY DUP5 CALLCODE ADD COINBASE 0xBF 0xD5 0xCF 0xEB SDIV 0x27 0xEB 0xAA PUSH2 0x758F 0xCF SSTORE 0xE3 DUP13 0xEC 0xB2 0xCC 0xBD 0xA6 SELFBALANCE 0xCF PUSH28 0xF9F2C764736F6C634300070100330000000000000000000000000000 ","sourceMap":"3408:16665:84:-:0;;;3483:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3520:14;;-1:-1:-1;;;;;;3520:14:84;;;3408:16665;;176:293:-1;;306:2;294:9;285:7;281:23;277:32;274:2;;;-1:-1;;312:12;274:2;98:13;;-1:-1;;;;;749:54;;889:50;;879:2;;-1:-1;;943:12;879:2;364:89;268:201;-1:-1;;;268:201::o;:::-;3408:16665:84;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9756":[{"length":32,"start":1379},{"length":32,"start":1796},{"length":32,"start":3348},{"length":32,"start":5067}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b3a460011161008c578063ecfb5a7c11610066578063ecfb5a7c146101eb578063ed5017f6146101fe578063fbfa77cf14610227578063fd4363781461023c576100ea565b8063b3a46001146101b2578063b4a9f0c8146101c5578063c4fb0f82146101d8576100ea565b8063716bb27a116100c8578063716bb27a1461014c5780637b2de5331461016c578063828f7c7d1461017f57806396ebd93414610192576100ea565b806304013a7d146100ef57806317615f32146101185780634b3dcc1e1461012b575b600080fd5b6101026100fd366004611ff9565b61024f565b60405161010f919061274e565b60405180910390f35b610102610126366004611fbe565b61046f565b61013e6101393660046122d4565b610507565b60405161010f929190612720565b61015f61015a366004612356565b6106a0565b60405161010f919061261f565b61010261017a366004611fbe565b6107fb565b61015f61018d366004611fbe565b61088a565b6101a56101a0366004611fbe565b610923565b60405161010f919061270d565b61015f6101c0366004611fbe565b6109b7565b6101026101d336600461205a565b610a50565b6101026101e6366004611fbe565b610b84565b61015f6101f9366004611fbe565b610c13565b61021161020c3660046120b1565b610cac565b60405161010f9a99989796959493929190612632565b61022f6113c9565b60405161010f919061276a565b6101a561024a366004611fbe565b6113ed565b606080835167ffffffffffffffff8111801561026a57600080fd5b50604051908082528060200260200182016040528015610294578160200160208202803683370190505b50905060005b84518110156104655760018482815181106102b157fe5b602002602001015160018111156102c457fe5b1415610396578481815181106102d657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16634c1a41156040518163ffffffff1660e01b815260040160206040518083038186803b15801561032357600080fd5b505afa925050508015610353575060408051601f3d908101601f19168201909252610350918101906124f1565b60015b61037657600082828151811061036557fe5b602002602001018181525050610391565b8083838151811061038357fe5b602002602001018181525050505b61045d565b8481815181106103a257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ef57600080fd5b505afa92505050801561041f575060408051601f3d908101601f1916820190925261041c918101906124f1565b60015b61044257600082828151811061043157fe5b60200260200101818152505061045d565b8083838151811061044f57fe5b602002602001018181525050505b60010161029a565b5090505b92915050565b606080825167ffffffffffffffff8111801561048a57600080fd5b506040519080825280602002602001820160405280156104b4578160200160208202803683370190505b50905060005b83518110156104fe576104df8482815181106104d257fe5b6020026020010151611481565b8282815181106104eb57fe5b60209081029190910101526001016104ba565b5090505b919050565b60608060006060855167ffffffffffffffff8111801561052657600080fd5b50604051908082528060200260200182016040528015610550578160200160208202803683370190505b509050600091505b855182101561066e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c009278784815181106105a957fe5b60200260200101516040518263ffffffff1660e01b81526004016105cd9190612761565b604080518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c9190611f85565b5081838151811061062957fe5b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050610558565b84602001511561068457610681816113ed565b93505b8451156106975761069481610923565b92505b50509250929050565b60608060006060855167ffffffffffffffff811180156106bf57600080fd5b506040519080825280602002602001820160405280156106f357816020015b60608152602001906001900390816106de5790505b50905060005b86518110156107f1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f94d466888838151811061074a57fe5b60200260200101516040518263ffffffff1660e01b815260040161076e9190612761565b60006040518083038186803b15801561078657600080fd5b505afa15801561079a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c29190810190612399565b909550935050858311156107e957838282815181106107dd57fe5b60200260200101819052505b6001016106f9565b5095945050505050565b606080825167ffffffffffffffff8111801561081657600080fd5b50604051908082528060200260200182016040528015610840578160200160208202803683370190505b50905060005b83518110156104fe5761086b84828151811061085e57fe5b602002602001015161150c565b82828151811061087757fe5b6020908102919091010152600101610846565b606080825167ffffffffffffffff811180156108a557600080fd5b506040519080825280602002602001820160405280156108d957816020015b60608152602001906001900390816108c45790505b50905060005b83518110156104fe576109048482815181106108f757fe5b602002602001015161159b565b82828151811061091057fe5b60209081029190910101526001016108df565b606080825167ffffffffffffffff8111801561093e57600080fd5b50604051908082528060200260200182016040528015610968578160200160208202803683370190505b50905060005b83518110156104fe5761099384828151811061098657fe5b6020026020010151611631565b82828151811061099f57fe5b9115156020928302919091019091015260010161096e565b606080825167ffffffffffffffff811180156109d257600080fd5b50604051908082528060200260200182016040528015610a0657816020015b60608152602001906001900390816109f15790505b50905060005b83518110156104fe57610a31848281518110610a2457fe5b60200260200101516116a6565b828281518110610a3d57fe5b6020908102919091010152600101610a0c565b606080835167ffffffffffffffff81118015610a6b57600080fd5b50604051908082528060200260200182016040528015610a95578160200160208202803683370190505b50905060005b8451811015610465576001848281518110610ab257fe5b60200260200101516002811115610ac557fe5b1415610b0457610ae7858281518110610ada57fe5b60200260200101516116ee565b828281518110610af357fe5b602002602001018181525050610b7c565b6002848281518110610b1257fe5b60200260200101516002811115610b2557fe5b1415610b4757610ae7858281518110610b3a57fe5b6020026020010151611736565b610b63858281518110610b5657fe5b602002602001015161177e565b828281518110610b6f57fe5b6020026020010181815250505b600101610a9b565b606080825167ffffffffffffffff81118015610b9f57600080fd5b50604051908082528060200260200182016040528015610bc9578160200160208202803683370190505b50905060005b83518110156104fe57610bf4848281518110610be757fe5b60200260200101516117c6565b828281518110610c0057fe5b6020908102919091010152600101610bcf565b606080825167ffffffffffffffff81118015610c2e57600080fd5b50604051908082528060200260200182016040528015610c6257816020015b6060815260200190600190039081610c4d5790505b50905060005b83518110156104fe57610c8d848281518110610c8057fe5b602002602001015161180e565b828281518110610c9957fe5b6020908102919091010152600101610c68565b606080606080606080606080606080600060608d5167ffffffffffffffff81118015610cd757600080fd5b50604051908082528060200260200182016040528015610d01578160200160208202803683370190505b509050600091505b8d51821015610e1f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c009278f8481518110610d5a57fe5b60200260200101516040518263ffffffff1660e01b8152600401610d7e9190612761565b604080518083038186803b158015610d9557600080fd5b505afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611f85565b50818381518110610dda57fe5b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050610d09565b8c5115610e3857610e358e8e61012001516106a0565b9b505b8c6020015115610e5457610e51818e6101400151610a50565b9a505b8c6040015115610e7057610e6d818e610160015161024f565b99505b8c6060015115610f4e5760608d61018001515167ffffffffffffffff81118015610e9957600080fd5b50604051908082528060200260200182016040528015610ec3578160200160208202803683370190505b509050600092505b8d610180015151831015610f4157818e61018001518481518110610eeb57fe5b602002602001015181518110610efd57fe5b6020026020010151818481518110610f1157fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191610ecb565b610f4a8161046f565b9950505b8c60a001511561102c5760608d6101a001515167ffffffffffffffff81118015610f7757600080fd5b50604051908082528060200260200182016040528015610fa1578160200160208202803683370190505b509050600092505b8d6101a001515183101561101f57818e6101a001518481518110610fc957fe5b602002602001015181518110610fdb57fe5b6020026020010151818481518110610fef57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191610fa9565b611028816109b7565b9750505b8c60c001511561110a5760608d6101c001515167ffffffffffffffff8111801561105557600080fd5b5060405190808252806020026020018201604052801561107f578160200160208202803683370190505b509050600092505b8d6101c00151518310156110fd57818e6101c0015184815181106110a757fe5b6020026020010151815181106110b957fe5b60200260200101518184815181106110cd57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611087565b6111068161088a565b9650505b8c60e00151156111e85760608d6101e001515167ffffffffffffffff8111801561113357600080fd5b5060405190808252806020026020018201604052801561115d578160200160208202803683370190505b509050600092505b8d6101e00151518310156111db57818e6101e00151848151811061118557fe5b60200260200101518151811061119757fe5b60200260200101518184815181106111ab57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611165565b6111e4816107fb565b9550505b8c6101000151156112c75760608d61020001515167ffffffffffffffff8111801561121257600080fd5b5060405190808252806020026020018201604052801561123c578160200160208202803683370190505b509050600092505b8d6102000151518310156112ba57818e6102000151848151811061126457fe5b60200260200101518151811061127657fe5b602002602001015181848151811061128a57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611244565b6112c381610b84565b9450505b8c60800151156113a55760608d61018001515167ffffffffffffffff811180156112f057600080fd5b5060405190808252806020026020018201604052801561131a578160200160208202803683370190505b509050600092505b8d61018001515183101561139857818e6101800151848151811061134257fe5b60200260200101518151811061135457fe5b602002602001015181848151811061136857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190920191611322565b6113a181610c13565b9850505b6113b68e8e8d8d8d8a8a8d8f6118e5565b925050509295989b9194979a5092959850565b7f000000000000000000000000000000000000000000000000000000000000000081565b606080825167ffffffffffffffff8111801561140857600080fd5b50604051908082528060200260200182016040528015611432578160200160208202803683370190505b50905060005b83518110156104fe5761145d84828151811061145057fe5b6020026020010151611cf4565b82828151811061146957fe5b91151560209283029190910190910152600101611438565b60008173ffffffffffffffffffffffffffffffffffffffff1663f5431aa86040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b505afa9250505080156114f9575060408051601f3d908101601f191682019092526114f6918101906124f1565b60015b61150557506000610502565b9050610502565b60008173ffffffffffffffffffffffffffffffffffffffff16636daccffa6040518163ffffffff1660e01b815260040160606040518083038186803b15801561155457600080fd5b505afa925050508015611584575060408051601f3d908101601f1916820190925261158191810190612509565b60015b61159057506000610502565b829350505050610502565b60608173ffffffffffffffffffffffffffffffffffffffff16631dd746ea6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115e357600080fd5b505afa92505050801561161857506040513d6000823e601f3d908101601f191682016040526116159190810190612465565b60015b6115055750604080516000815260208101909152610502565b60008173ffffffffffffffffffffffffffffffffffffffff1663b35056b86040518163ffffffff1660e01b815260040160206040518083038186803b15801561167957600080fd5b505afa9250505080156114f9575060408051601f3d908101601f191682019092526114f691810190612498565b60608173ffffffffffffffffffffffffffffffffffffffff1663f89f27ed6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115e357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663de82cd346040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663876f303b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b6040805160028082526060808301845292839291906020830190803683370190505090508273ffffffffffffffffffffffffffffffffffffffff166363fe3b566040518163ffffffff1660e01b8152600401604080518083038186803b15801561187757600080fd5b505afa15801561188b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118af9190612541565b826000815181106118bc57fe5b60200260200101836001815181106118d057fe5b60209081029190910101919091525292915050565b6060808a5167ffffffffffffffff8111801561190057600080fd5b5060405190808252806020026020018201604052801561192a578160200160208202803683370190505b5090506000805b8c518110156119b4578b60200151801561195e57508a818151811061195257fe5b60200260200101516000145b8061198857508b604001518015611988575089818151811061197c57fe5b60200260200101516000145b156119ac57600183828151811061199b57fe5b911515602092830291909101909101525b600101611931565b8b6060015115611a2b575060005b8b610180015151811015611a2b578881815181106119dc57fe5b602002602001015160001415611a23576001838d61018001518381518110611a0057fe5b602002602001015181518110611a1257fe5b911515602092830291909101909101525b6001016119c2565b8b60e0015115611aa2575060005b8b6101e0015151811015611aa257878181518110611a5357fe5b602002602001015160001415611a9a576001838d6101e001518381518110611a7757fe5b602002602001015181518110611a8957fe5b911515602092830291909101909101525b600101611a39565b8b610100015115611b1a575060005b8b610200015151811015611b1a57868181518110611acb57fe5b602002602001015160001415611b12576001838d61020001518381518110611aef57fe5b602002602001015181518110611b0157fe5b911515602092830291909101909101525b600101611ab1565b8b60c0015115611b92575060005b8b6101c0015151811015611b9257858181518110611b4257fe5b60200260200101515160001415611b8a576001838d6101c001518381518110611b6757fe5b602002602001015181518110611b7957fe5b911515602092830291909101909101525b600101611b28565b8b60a0015115611c0a575060005b8b6101a0015151811015611c0a57848181518110611bba57fe5b60200260200101515160001415611c02576001838d6101a001518381518110611bdf57fe5b602002602001015181518110611bf157fe5b911515602092830291909101909101525b600101611ba0565b5060005b8251811015611c4657828181518110611c2357fe5b60200260200101511515600115151415611c3e576001909101905b600101611c0e565b60608267ffffffffffffffff81118015611c5f57600080fd5b50604051908082528060200260200182016040528015611c89578160200160208202803683370190505b50905060008092505b8451831015611ce257848381518110611ca757fe5b60200260200101511515600115151415611cd75782828281518110611cc857fe5b60209081029190910101526001015b600190920191611c92565b509d9c50505050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16631c0de0516040518163ffffffff1660e01b815260040160606040518083038186803b158015611d3c57600080fd5b505afa925050508015611584575060408051601f3d908101601f19168201909252611581918101906124bb565b600082601f830112611d79578081fd5b8135611d8c611d87826127b2565b61278b565b818152915060208083019084810181840286018201871015611dad57600080fd5b60005b84811015611dd5578135611dc3816127d2565b84529282019290820190600101611db0565b505050505092915050565b600082601f830112611df0578081fd5b8135611dfe611d87826127b2565b818152915060208083019084810181840286018201871015611e1f57600080fd5b60005b84811015611dd557813584529282019290820190600101611e22565b600082601f830112611e4e578081fd5b8135611e5c611d87826127b2565b818152915060208083019084810181840286018201871015611e7d57600080fd5b6000805b85811015611ea957823560028110611e97578283fd5b85529383019391830191600101611e81565b50505050505092915050565b600082601f830112611ec5578081fd5b8135611ed3611d87826127b2565b818152915060208083019084810181840286018201871015611ef457600080fd5b60005b84811015611dd5578135611f0a81612805565b84529282019290820190600101611ef7565b600082601f830112611f2c578081fd5b8151611f3a611d87826127b2565b818152915060208083019084810181840286018201871015611f5b57600080fd5b60005b84811015611dd557815184529282019290820190600101611f5e565b8035610469816127f7565b60008060408385031215611f97578182fd5b8251611fa2816127d2565b6020840151909250611fb381612805565b809150509250929050565b600060208284031215611fcf578081fd5b813567ffffffffffffffff811115611fe5578182fd5b611ff184828501611d69565b949350505050565b6000806040838503121561200b578182fd5b823567ffffffffffffffff80821115612022578384fd5b61202e86838701611d69565b93506020850135915080821115612043578283fd5b5061205085828601611e3e565b9150509250929050565b6000806040838503121561206c578182fd5b823567ffffffffffffffff80821115612083578384fd5b61208f86838701611d69565b935060208501359150808211156120a4578283fd5b5061205085828601611eb5565b600080604083850312156120c3578182fd5b823567ffffffffffffffff808211156120da578384fd5b6120e686838701611de0565b935060208501359150808211156120fb578283fd5b8185019150610220808388031215612111578384fd5b61211a8161278b565b90506121268784611f7a565b81526121358760208501611f7a565b60208201526121478760408501611f7a565b60408201526121598760608501611f7a565b606082015261216b8760808501611f7a565b608082015261217d8760a08501611f7a565b60a082015261218f8760c08501611f7a565b60c08201526121a18760e08501611f7a565b60e08201526101006121b588828601611f7a565b90820152610120838101359082015261014080840135838111156121d7578586fd5b6121e389828701611eb5565b82840152505061016080840135838111156121fc578586fd5b61220889828701611e3e565b8284015250506101808084013583811115612221578586fd5b61222d89828701611de0565b8284015250506101a08084013583811115612246578586fd5b61225289828701611de0565b8284015250506101c0808401358381111561226b578586fd5b61227789828701611de0565b8284015250506101e08084013583811115612290578586fd5b61229c89828701611de0565b82840152505061020080840135838111156122b5578586fd5b6122c189828701611de0565b8284015250508093505050509250929050565b60008082840360608112156122e7578283fd5b833567ffffffffffffffff8111156122fd578384fd5b61230986828701611de0565b9350506040601f198201121561231d578182fd5b50612328604061278b565b6020840135612336816127f7565b81526040840135612346816127f7565b6020820152919491935090915050565b60008060408385031215612368578182fd5b823567ffffffffffffffff81111561237e578283fd5b61238a85828601611de0565b95602094909401359450505050565b6000806000606084860312156123ad578081fd5b835167ffffffffffffffff808211156123c4578283fd5b818601915086601f8301126123d7578283fd5b81516123e5611d87826127b2565b80828252602080830192508086018b828387028901011115612405578788fd5b8796505b8487101561243057805161241c816127d2565b845260019690960195928101928101612409565b508901519097509350505080821115612447578283fd5b5061245486828701611f1c565b925050604084015190509250925092565b600060208284031215612476578081fd5b815167ffffffffffffffff81111561248c578182fd5b611ff184828501611f1c565b6000602082840312156124a9578081fd5b81516124b4816127f7565b9392505050565b6000806000606084860312156124cf578081fd5b83516124da816127f7565b602085015160409095015190969495509392505050565b600060208284031215612502578081fd5b5051919050565b60008060006060848603121561251d578081fd5b83519250602084015161252f816127f7565b80925050604084015190509250925092565b60008060408385031215612553578182fd5b505080516020909101519092909150565b6000815180845260208085019450848183028601828601855b858110156125a75783830389526125958383516125f0565b9885019892509084019060010161257d565b5090979650505050505050565b6000815180845260208085019450808401835b838110156125e55781511515875295820195908201906001016125c7565b509495945050505050565b6000815180845260208085019450808401835b838110156125e557815187529582019590820190600101612603565b6000602082526124b46020830184612564565b60006101408083526126468184018e612564565b9050828103602084015261265a818d6125f0565b9050828103604084015261266e818c6125f0565b90508281036060840152612682818b6125f0565b90508281036080840152612696818a612564565b905082810360a08401526126aa8189612564565b905082810360c08401526126be8188612564565b905082810360e08401526126d281876125f0565b90508281036101008401526126e781866125f0565b90508281036101208401526126fc81856125f0565b9d9c50505050505050505050505050565b6000602082526124b460208301846125b4565b60006040825261273360408301856125b4565b828103602084015261274581856125b4565b95945050505050565b6000602082526124b460208301846125f0565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156127aa57600080fd5b604052919050565b600067ffffffffffffffff8211156127c8578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff811681146127f457600080fd5b50565b80151581146127f457600080fd5b600381106127f457600080fdfea2646970667358221220ca3984f20141bfd5cfeb0527ebaa61758fcf55e38cecb2ccbda647cf7bf9f2c764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB3A46001 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xECFB5A7C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xECFB5A7C EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xED5017F6 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x227 JUMPI DUP1 PUSH4 0xFD436378 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xB3A46001 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xB4A9F0C8 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xC4FB0F82 EQ PUSH2 0x1D8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x716BB27A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x716BB27A EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x7B2DE533 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x828F7C7D EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x96EBD934 EQ PUSH2 0x192 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x4013A7D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x17615F32 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4B3DCC1E EQ PUSH2 0x12B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1FF9 JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x274E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x102 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x22D4 JUMP JUMPDEST PUSH2 0x507 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x2720 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x2356 JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x261F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x15F PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x88A JUMP JUMPDEST PUSH2 0x1A5 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x923 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x205A JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0xCAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2632 JUMP JUMPDEST PUSH2 0x22F PUSH2 0x13C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x276A JUMP JUMPDEST PUSH2 0x1A5 PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x13ED JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x294 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x1 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2C4 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x396 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C1A4115 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x353 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x350 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x376 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x365 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x391 JUMP JUMPDEST DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x383 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH2 0x45D JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x41F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x41C SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x442 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x431 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x45D JUMP JUMPDEST DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x44F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x29A JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4B4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x4DF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1481 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4EB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x4BA JUMP JUMPDEST POP SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x550 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP2 POP JUMPDEST DUP6 MLOAD DUP3 LT ISZERO PUSH2 0x66E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x5A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CD SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x61C SWAP2 SWAP1 PUSH2 0x1F85 JUMP JUMPDEST POP DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP1 PUSH1 0x1 ADD SWAP3 POP POP PUSH2 0x558 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x684 JUMPI PUSH2 0x681 DUP2 PUSH2 0x13ED JUMP JUMPDEST SWAP4 POP JUMPDEST DUP5 MLOAD ISZERO PUSH2 0x697 JUMPI PUSH2 0x694 DUP2 PUSH2 0x923 JUMP JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x6F3 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x6DE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x7F1 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF94D4668 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x74A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2399 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP DUP6 DUP4 GT ISZERO PUSH2 0x7E9 JUMPI DUP4 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x6F9 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x840 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x86B DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x85E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x150C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x877 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x846 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8D9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x8C4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x904 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x159B JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x910 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x8DF JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x968 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x993 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x986 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1631 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x99F JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x96E JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA06 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x9F1 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xA31 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16A6 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA3D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA0C JUMP JUMPDEST PUSH1 0x60 DUP1 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA95 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x1 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAC5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB04 JUMPI PUSH2 0xAE7 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xADA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x16EE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xB7C JUMP JUMPDEST PUSH1 0x2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xB25 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xB47 JUMPI PUSH2 0xAE7 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1736 JUMP JUMPDEST PUSH2 0xB63 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB56 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x177E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBC9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xBF4 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xBE7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x17C6 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC00 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xBCF JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xC2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC62 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC4D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0xC8D DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC80 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x180E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC99 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xC68 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x0 PUSH1 0x60 DUP14 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xCD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD01 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP2 POP JUMPDEST DUP14 MLOAD DUP3 LT ISZERO PUSH2 0xE1F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP16 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD7E SWAP2 SWAP1 PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDCD SWAP2 SWAP1 PUSH2 0x1F85 JUMP JUMPDEST POP DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xDDA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP1 PUSH1 0x1 ADD SWAP3 POP POP PUSH2 0xD09 JUMP JUMPDEST DUP13 MLOAD ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE35 DUP15 DUP15 PUSH2 0x120 ADD MLOAD PUSH2 0x6A0 JUMP JUMPDEST SWAP12 POP JUMPDEST DUP13 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0xE54 JUMPI PUSH2 0xE51 DUP2 DUP15 PUSH2 0x140 ADD MLOAD PUSH2 0xA50 JUMP JUMPDEST SWAP11 POP JUMPDEST DUP13 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xE70 JUMPI PUSH2 0xE6D DUP2 DUP15 PUSH2 0x160 ADD MLOAD PUSH2 0x24F JUMP JUMPDEST SWAP10 POP JUMPDEST DUP13 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0xF4E JUMPI PUSH1 0x60 DUP14 PUSH2 0x180 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xE99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEC3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x180 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0xF41 JUMPI DUP2 DUP15 PUSH2 0x180 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEEB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0xEFD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF11 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xECB JUMP JUMPDEST PUSH2 0xF4A DUP2 PUSH2 0x46F JUMP JUMPDEST SWAP10 POP POP JUMPDEST DUP13 PUSH1 0xA0 ADD MLOAD ISZERO PUSH2 0x102C JUMPI PUSH1 0x60 DUP14 PUSH2 0x1A0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFA1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1A0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x101F JUMPI DUP2 DUP15 PUSH2 0x1A0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFC9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0xFDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xFA9 JUMP JUMPDEST PUSH2 0x1028 DUP2 PUSH2 0x9B7 JUMP JUMPDEST SWAP8 POP POP JUMPDEST DUP13 PUSH1 0xC0 ADD MLOAD ISZERO PUSH2 0x110A JUMPI PUSH1 0x60 DUP14 PUSH2 0x1C0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x107F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1C0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x10FD JUMPI DUP2 DUP15 PUSH2 0x1C0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10A7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x10B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10CD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1087 JUMP JUMPDEST PUSH2 0x1106 DUP2 PUSH2 0x88A JUMP JUMPDEST SWAP7 POP POP JUMPDEST DUP13 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x11E8 JUMPI PUSH1 0x60 DUP14 PUSH2 0x1E0 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x115D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x1E0 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x11DB JUMPI DUP2 DUP15 PUSH2 0x1E0 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1185 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11AB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x11E4 DUP2 PUSH2 0x7FB JUMP JUMPDEST SWAP6 POP POP JUMPDEST DUP13 PUSH2 0x100 ADD MLOAD ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x60 DUP14 PUSH2 0x200 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x123C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x200 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x12BA JUMPI DUP2 DUP15 PUSH2 0x200 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1264 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1276 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1244 JUMP JUMPDEST PUSH2 0x12C3 DUP2 PUSH2 0xB84 JUMP JUMPDEST SWAP5 POP POP JUMPDEST DUP13 PUSH1 0x80 ADD MLOAD ISZERO PUSH2 0x13A5 JUMPI PUSH1 0x60 DUP14 PUSH2 0x180 ADD MLOAD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x12F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x131A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 SWAP3 POP JUMPDEST DUP14 PUSH2 0x180 ADD MLOAD MLOAD DUP4 LT ISZERO PUSH2 0x1398 JUMPI DUP2 DUP15 PUSH2 0x180 ADD MLOAD DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1342 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1354 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1368 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1322 JUMP JUMPDEST PUSH2 0x13A1 DUP2 PUSH2 0xC13 JUMP JUMPDEST SWAP9 POP POP JUMPDEST PUSH2 0x13B6 DUP15 DUP15 DUP14 DUP14 DUP14 DUP11 DUP11 DUP14 DUP16 PUSH2 0x18E5 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1432 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH2 0x145D DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1450 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1CF4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1469 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1438 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5431AA8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24F1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1505 JUMPI POP PUSH1 0x0 PUSH2 0x502 JUMP JUMPDEST SWAP1 POP PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DACCFFA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1584 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1581 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1590 JUMPI POP PUSH1 0x0 PUSH2 0x502 JUMP JUMPDEST DUP3 SWAP4 POP POP POP POP PUSH2 0x502 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1DD746EA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1618 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1615 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2465 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1505 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x502 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB35056B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x14F9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x14F6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2498 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF89F27ED PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDE82CD34 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x876F303B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x63FE3B56 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18AF SWAP2 SWAP1 PUSH2 0x2541 JUMP JUMPDEST DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18BC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD SWAP2 SWAP1 SWAP2 MSTORE MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP11 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x192A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP13 MLOAD DUP2 LT ISZERO PUSH2 0x19B4 JUMPI DUP12 PUSH1 0x20 ADD MLOAD DUP1 ISZERO PUSH2 0x195E JUMPI POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1952 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ JUMPDEST DUP1 PUSH2 0x1988 JUMPI POP DUP12 PUSH1 0x40 ADD MLOAD DUP1 ISZERO PUSH2 0x1988 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x197C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ JUMPDEST ISZERO PUSH2 0x19AC JUMPI PUSH1 0x1 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x199B JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1931 JUMP JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x1A2B JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x180 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1A2B JUMPI DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x19DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1A23 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x180 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A00 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1A12 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x19C2 JUMP JUMPDEST DUP12 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x1AA2 JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1E0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1AA2 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1A53 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1E0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A77 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1A89 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A39 JUMP JUMPDEST DUP12 PUSH2 0x100 ADD MLOAD ISZERO PUSH2 0x1B1A JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x200 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1B1A JUMPI DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1ACB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1B12 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x200 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1AEF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1B01 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1AB1 JUMP JUMPDEST DUP12 PUSH1 0xC0 ADD MLOAD ISZERO PUSH2 0x1B92 JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1C0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1B92 JUMPI DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1B42 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1B8A JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1C0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1B67 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1B79 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1B28 JUMP JUMPDEST DUP12 PUSH1 0xA0 ADD MLOAD ISZERO PUSH2 0x1C0A JUMPI POP PUSH1 0x0 JUMPDEST DUP12 PUSH2 0x1A0 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1C0A JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1BBA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x1C02 JUMPI PUSH1 0x1 DUP4 DUP14 PUSH2 0x1A0 ADD MLOAD DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1BDF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1BF1 JUMPI INVALID JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BA0 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1C46 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1C23 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ ISZERO PUSH2 0x1C3E JUMPI PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x1 ADD PUSH2 0x1C0E JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1C89 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP3 POP JUMPDEST DUP5 MLOAD DUP4 LT ISZERO PUSH2 0x1CE2 JUMPI DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CA7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ISZERO ISZERO PUSH1 0x1 ISZERO ISZERO EQ ISZERO PUSH2 0x1CD7 JUMPI DUP3 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CC8 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD JUMPDEST PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0x1C92 JUMP JUMPDEST POP SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1C0DE051 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1584 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1581 SWAP2 DUP2 ADD SWAP1 PUSH2 0x24BB JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D79 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D8C PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST PUSH2 0x278B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1DAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD PUSH2 0x1DC3 DUP2 PUSH2 0x27D2 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1DB0 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1DFE PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E22 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1E5C PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1E7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1EA9 JUMPI DUP3 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x1E97 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1E81 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1ED3 PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1EF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 CALLDATALOAD PUSH2 0x1F0A DUP2 PUSH2 0x2805 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1EF7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F2C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F3A PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1F5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DD5 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1F5E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x469 DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F97 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x1FA2 DUP2 PUSH2 0x27D2 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x1FB3 DUP2 PUSH2 0x2805 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FCF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1FE5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1FF1 DUP5 DUP3 DUP6 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x200B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2022 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x202E DUP7 DUP4 DUP8 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2043 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2050 DUP6 DUP3 DUP7 ADD PUSH2 0x1E3E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x206C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2083 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x208F DUP7 DUP4 DUP8 ADD PUSH2 0x1D69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x20A4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2050 DUP6 DUP3 DUP7 ADD PUSH2 0x1EB5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x20DA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x20E6 DUP7 DUP4 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x20FB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP PUSH2 0x220 DUP1 DUP4 DUP9 SUB SLT ISZERO PUSH2 0x2111 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x211A DUP2 PUSH2 0x278B JUMP JUMPDEST SWAP1 POP PUSH2 0x2126 DUP8 DUP5 PUSH2 0x1F7A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2135 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2147 DUP8 PUSH1 0x40 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2159 DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x216B DUP8 PUSH1 0x80 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x217D DUP8 PUSH1 0xA0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x218F DUP8 PUSH1 0xC0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x21A1 DUP8 PUSH1 0xE0 DUP6 ADD PUSH2 0x1F7A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x21B5 DUP9 DUP3 DUP7 ADD PUSH2 0x1F7A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x21D7 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x21E3 DUP10 DUP3 DUP8 ADD PUSH2 0x1EB5 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x160 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x21FC JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2208 DUP10 DUP3 DUP8 ADD PUSH2 0x1E3E JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x180 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2221 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x222D DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1A0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2246 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2252 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1C0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x226B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2277 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x1E0 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x2290 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x229C DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x200 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x22B5 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22C1 DUP10 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x60 DUP2 SLT ISZERO PUSH2 0x22E7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22FD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2309 DUP7 DUP3 DUP8 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x231D JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH2 0x2328 PUSH1 0x40 PUSH2 0x278B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2336 DUP2 PUSH2 0x27F7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2368 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x237E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x238A DUP6 DUP3 DUP7 ADD PUSH2 0x1DE0 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23AD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x23C4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23D7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x23E5 PUSH2 0x1D87 DUP3 PUSH2 0x27B2 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x2405 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x2430 JUMPI DUP1 MLOAD PUSH2 0x241C DUP2 PUSH2 0x27D2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x2409 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2447 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2454 DUP7 DUP3 DUP8 ADD PUSH2 0x1F1C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2476 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x248C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1FF1 DUP5 DUP3 DUP6 ADD PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24A9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x24B4 DUP2 PUSH2 0x27F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x24CF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x24DA DUP2 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2502 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x251D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x252F DUP2 PUSH2 0x27F7 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2553 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP5 DUP2 DUP4 MUL DUP7 ADD DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x25A7 JUMPI DUP4 DUP4 SUB DUP10 MSTORE PUSH2 0x2595 DUP4 DUP4 MLOAD PUSH2 0x25F0 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP3 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x257D JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E5 JUMPI DUP2 MLOAD ISZERO ISZERO DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x25C7 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E5 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2603 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2564 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x140 DUP1 DUP4 MSTORE PUSH2 0x2646 DUP2 DUP5 ADD DUP15 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x265A DUP2 DUP14 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x266E DUP2 DUP13 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x2682 DUP2 DUP12 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2696 DUP2 DUP11 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x26AA DUP2 DUP10 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x26BE DUP2 DUP9 PUSH2 0x2564 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x26D2 DUP2 DUP8 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x26E7 DUP2 DUP7 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x26FC DUP2 DUP6 PUSH2 0x25F0 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x2733 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x25B4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2745 DUP2 DUP6 PUSH2 0x25B4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x24B4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25F0 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x27C8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x27F4 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CODECOPY DUP5 CALLCODE ADD COINBASE 0xBF 0xD5 0xCF 0xEB SDIV 0x27 0xEB 0xAA PUSH2 0x758F 0xCF SSTORE 0xE3 DUP13 0xEC 0xB2 0xCC 0xBD 0xA6 SELFBALANCE 0xCF PUSH28 0xF9F2C764736F6C634300070100330000000000000000000000000000 ","sourceMap":"3408:16665:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10113:1074;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9099:355;;;;;;:::i;:::-;;:::i;7887:605::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8498:595::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9460:318::-;;;;;;:::i;:::-;;:::i;12349:385::-;;;;;;:::i;:::-;;:::i;13117:364::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11973:370::-;;;;;;:::i;:::-;;:::i;11193:774::-;;;;;;:::i;:::-;;:::i;9784:323::-;;;;;;:::i;:::-;;:::i;12740:371::-;;;;;;:::i;:::-;;:::i;4279:3602::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;3447:29::-;;;:::i;:::-;;;;;;;:::i;13487:331::-;;;;;;:::i;:::-;;:::i;10113:1074::-;10263:16;10295:25;10337:13;:20;10323:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10323:35:84;;10295:63;;10374:9;10369:786;10393:13;:20;10389:1;:24;10369:786;;;10457:23;10438:12;10451:1;10438:15;;;;;;;;;;;;;;:42;;;;;;;;;10434:711;;;10524:13;10538:1;10524:16;;;;;;;;;;;;;;10504:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10504:50:84;;;;;;;;-1:-1:-1;;10504:50:84;;;;;;;;;;;;:::i;:::-;;;10500:206;;10686:1;10672:8;10681:1;10672:11;;;;;;;;;;;;;:15;;;;;10500:206;;;10617:7;10603:8;10612:1;10603:11;;;;;;;;;;;;;:21;;;;;10555:88;10500:206;10434:711;;;10939:13;10953:1;10939:16;;;;;;;;;;;;;;10912:65;;;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10912:67:84;;;;;;;;-1:-1:-1;;10912:67:84;;;;;;;;;;;;:::i;:::-;;;10908:223;;11111:1;11097:8;11106:1;11097:11;;;;;;;;;;;;;:15;;;;;10908:223;;;11042:7;11028:8;11037:1;11028:11;;;;;;;;;;;;;:21;;;;;10980:88;10908:223;10415:3;;10369:786;;;-1:-1:-1;11172:8:84;-1:-1:-1;10113:1074:84;;;;;:::o;9099:355::-;9195:16;9223:22;9262:13;:20;9248:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9248:35:84;;9223:60;;9299:9;9294:131;9318:13;:20;9314:1;:24;9294:131;;;9370:44;9397:13;9411:1;9397:16;;;;;;;;;;;;;;9370:26;:44::i;:::-;9359:5;9365:1;9359:8;;;;;;;;;;;;;;;;;:55;9340:3;;9294:131;;;-1:-1:-1;9442:5:84;-1:-1:-1;9099:355:84;;;;:::o;7887:605::-;8020:22;8044:28;8088:9;8107:22;8146:7;:14;8132:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8132:29:84;;8107:54;;8181:1;8177:5;;8172:102;8188:7;:14;8184:1;:18;8172:102;;;8238:5;:13;;;8252:7;8260:1;8252:10;;;;;;;;;;;;;;8238:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8223:40;8224:5;8230:1;8224:8;;;;;;;;;;;;;8223:40;;;;;;;;;8204:3;;;;;;;8172:102;;;8288:6;:19;;;8284:87;;;8334:26;8354:5;8334:19;:26::i;:::-;8323:37;;8284:87;8385:25;;8381:105;;;8443:32;8469:5;8443:25;:32::i;:::-;8426:49;;8381:105;7887:605;;;;;;;:::o;8498:595::-;8641:18;8675:25;8710:23;8743:30;8792:7;:14;8776:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8743:64;;8823:9;8818:240;8842:7;:14;8838:1;:18;8818:240;;;8909:5;:19;;;8929:7;8937:1;8929:10;;;;;;;;;;;;;;8909:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8909:31:84;;;;;;;;;;;;:::i;:::-;8877:63;;-1:-1:-1;8877:63:84;-1:-1:-1;;8959:29:84;;;8955:93;;;9025:8;9008:11;9020:1;9008:14;;;;;;;;;;;;;:25;;;;8955:93;8858:3;;8818:240;;;-1:-1:-1;9075:11:84;8498:595;-1:-1:-1;;;;;8498:595:84:o;9460:318::-;9537:16;9565:21;9603:13;:20;9589:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9589:35:84;;9565:59;;9640:9;9635:115;9659:13;:20;9655:1;:24;9635:115;;;9710:29;9722:13;9736:1;9722:16;;;;;;;;;;;;;;9710:11;:29::i;:::-;9700:4;9705:1;9700:7;;;;;;;;;;;;;;;;;:39;9681:3;;9635:115;;12349:385;12437:18;12467:36;12522:13;:20;12506:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12467:76;;12559:9;12554:139;12578:13;:20;12574:1;:24;12554:139;;;12642:40;12665:13;12679:1;12665:16;;;;;;;;;;;;;;12642:22;:40::i;:::-;12619:17;12637:1;12619:20;;;;;;;;;;;;;;;;;:63;12600:3;;12554:139;;13117:364;13205:13;13230:29;13273:13;:20;13262:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13262:32:84;;13230:64;;13310:9;13305:137;13329:13;:20;13325:1;:24;13305:137;;;13391:40;13414:13;13428:1;13414:16;;;;;;;;;;;;;;13391:22;:40::i;:::-;13370:15;13386:1;13370:18;;;;;;;;:61;;;:18;;;;;;;;;;;:61;13351:3;;13305:137;;11973:370;12064:18;12094:29;12142:13;:20;12126:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12094:69;;12179:9;12174:135;12198:13;:20;12194:1;:24;12174:135;;;12255:43;12281:13;12295:1;12281:16;;;;;;;;;;;;;;12255:25;:43::i;:::-;12239:10;12250:1;12239:13;;;;;;;;;;;;;;;;;:59;12220:3;;12174:135;;11193:774;11345:16;11377:30;11424:13;:20;11410:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11410:35:84;;11377:68;;11461:9;11456:474;11480:13;:20;11476:1;:24;11456:474;;;11548:30;11525:16;11542:1;11525:19;;;;;;;;;;;;;;:53;;;;;;;;;11521:399;;;11617:39;11639:13;11653:1;11639:16;;;;;;;;;;;;;;11617:21;:39::i;:::-;11598:13;11612:1;11598:16;;;;;;;;;;;;;:58;;;;;11521:399;;;11704:29;11681:16;11698:1;11681:19;;;;;;;;;;;;;;:52;;;;;;;;;11677:243;;;11772:38;11793:13;11807:1;11793:16;;;;;;;;;;;;;;11772:20;:38::i;11677:243::-;11868:37;11888:13;11902:1;11888:16;;;;;;;;;;;;;;11868:19;:37::i;:::-;11849:13;11863:1;11849:16;;;;;;;;;;;;;:56;;;;;11677:243;11502:3;;11456:474;;9784:323;9862:16;9890:22;9929:13;:20;9915:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9915:35:84;;9890:60;;9966:9;9961:117;9985:13;:20;9981:1;:24;9961:117;;;10037:30;10050:13;10064:1;10050:16;;;;;;;;;;;;;;10037:12;:30::i;:::-;10026:5;10032:1;10026:8;;;;;;;;;;;;;;;;;:41;10007:3;;9961:117;;12740:371;12827:18;12857:32;12908:13;:20;12892:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12857:72;;12945:9;12940:134;12964:13;:20;12960:1;:24;12940:134;;;13024:39;13046:13;13060:1;13046:16;;;;;;;;;;;;;;13024:21;:39::i;:::-;13005:13;13019:1;13005:16;;;;;;;;;;;;;;;;;:58;12986:3;;12940:134;;4279:3602;4421:27;4462:30;4506:25;4545:40;4599:32;4645:26;4685:33;4732:21;4767:22;4803:27;4855:9;4874:22;4913:7;:14;4899:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4899:29:84;;4874:54;;4948:1;4944:5;;4939:102;4955:7;:14;4951:1;:18;4939:102;;;5005:5;:13;;;5019:7;5027:1;5019:10;;;;;;;;;;;;;;5005:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4990:40;4991:5;4997:1;4991:8;;;;;;;;;;;;;4990:40;;;;;;;;;4971:3;;;;;;;4939:102;;;5055:40;;5051:152;;;5122:70;5164:7;5173:6;:18;;;5122:41;:70::i;:::-;5111:81;;5051:152;5217:6;:22;;;5213:123;;;5271:54;5294:5;5301:6;:23;;;5271:22;:54::i;:::-;5255:70;;5213:123;5350:6;:19;;;5346:117;;;5396:56;5425:5;5432:6;:19;;;5396:28;:56::i;:::-;5385:67;;5346:117;5477:6;:34;;;5473:372;;;5527:28;5572:6;:21;;;:28;5558:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5558:43:84;;5527:74;;5625:1;5621:5;;5616:132;5632:6;:21;;;:28;5628:1;:32;5616:132;;;5702:5;5708:6;:21;;;5730:1;5708:24;;;;;;;;;;;;;;5702:31;;;;;;;;;;;;;;5685:11;5697:1;5685:14;;;;;;;;:48;;;;:14;;;;;;;;;;;:48;5662:3;;;;;5616:132;;;5788:46;5822:11;5788:33;:46::i;:::-;5762:72;;5473:372;;5859:6;:28;;;5855:357;;;5903:30;5950:6;:23;;;:30;5936:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5936:45:84;;5903:78;;6005:1;6001:5;;5996:138;6012:6;:23;;;:30;6008:1;:34;5996:138;;;6086:5;6092:6;:23;;;6116:1;6092:26;;;;;;;;;;;;;;6086:33;;;;;;;;;;;;;;6067:13;6081:1;6067:16;;;;;;;;:52;;;;:16;;;;;;;;;;;:52;6044:3;;;;;5996:138;;;6158:43;6187:13;6158:28;:43::i;:::-;6148:53;;5855:357;;6226:6;:25;;;6222:388;;;6267:35;6319:6;:28;;;:35;6305:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6305:50:84;;6267:88;;6379:1;6375:5;;6370:153;6386:6;:28;;;:35;6382:1;:39;6370:153;;;6470:5;6476:6;:28;;;6505:1;6476:31;;;;;;;;;;;;;;6470:38;;;;;;;;;;;;;;6446:18;6465:1;6446:21;;;;;;;;:62;;;;:21;;;;;;;;;;;:62;6423:3;;;;;6370:153;;;6554:45;6580:18;6554:25;:45::i;:::-;6537:62;;6222:388;;6624:6;:15;;;6620:297;;;6655:25;6697:6;:18;;;:25;6683:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6683:40:84;;6655:68;;6747:1;6743:5;;6738:123;6754:6;:18;;;:25;6750:1;:29;6738:123;;;6818:5;6824:6;:18;;;6843:1;6824:21;;;;;;;;;;;;;;6818:28;;;;;;;;;;;;;;6804:8;6813:1;6804:11;;;;;;;;:42;;;;:11;;;;;;;;;;;:42;6781:3;;;;;6738:123;;;6882:24;6897:8;6882:14;:24::i;:::-;6875:31;;6620:297;;6931:6;:16;;;6927:306;;;6963:26;7006:6;:19;;;:26;6992:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6992:41:84;;6963:70;;7057:1;7053:5;;7048:126;7064:6;:19;;;:26;7060:1;:30;7048:126;;;7130:5;7136:6;:19;;;7156:1;7136:22;;;;;;;;;;;;;;7130:29;;;;;;;;;;;;;;7115:9;7125:1;7115:12;;;;;;;;:44;;;;:12;;;;;;;;;;;:44;7092:3;;;;;7048:126;;;7196:26;7212:9;7196:15;:26::i;:::-;7188:34;;6927:306;;7247:6;:24;;;7243:361;;;7287:34;7338:6;:21;;;:28;7324:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7324:43:84;;7287:80;;7391:1;7387:5;;7382:138;7398:6;:21;;;:28;7394:1;:32;7382:138;;;7474:5;7480:6;:21;;;7502:1;7480:24;;;;;;;;;;;;;;7474:31;;;;;;;;;;;;;;7451:17;7469:1;7451:20;;;;;;;;:54;;;;:20;;;;;;;;;;;:54;7428:3;;;;;7382:138;;;7550:43;7575:17;7550:24;:43::i;:::-;7534:59;;7243:361;;7627:247;7665:7;7686:6;7706:13;7733:8;7755:23;7792:4;7810:5;7829:14;7857:7;7627:24;:247::i;:::-;7614:260;;4279:3602;;;;;;;;;;;;;;;:::o;3447:29::-;;;:::o;13487:331::-;13569:13;13594:22;13630:13;:20;13619:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13619:32:84;;13594:57;;13667:9;13662:124;13686:13;:20;13682:1;:24;13662:124;;;13741:34;13758:13;13772:1;13758:16;;;;;;;;;;;;;;13741;:34::i;:::-;13727:8;13736:1;13727:11;;;;;;;;:48;;;:11;;;;;;;;;;;:48;13708:3;;13662:124;;14329:255;14409:7;14444:11;14432:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14432:46:84;;;;;;;;-1:-1:-1;;14432:46:84;;;;;;;;;;;;:::i;:::-;;;14428:150;;-1:-1:-1;14566:1:84;14559:8;;14428:150;14523:4;-1:-1:-1;14516:11:84;;16632:264;16697:7;16733:11;16720:51;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16720:53:84;;;;;;;;-1:-1:-1;;16720:53:84;;;;;;;;;;;;:::i;:::-;;;16716:174;;-1:-1:-1;16878:1:84;16871:8;;16716:174;16834:5;16827:12;;;;;;;15900:359;15976:16;16032:11;16008:54;;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16008:56:84;;;;;;;;;;;;:::i;:::-;;;16004:249;;-1:-1:-1;16199:16:84;;;16213:1;16199:16;;;;;;;;16230:12;;16902:266;16978:4;17012:11;16998:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16998:43:84;;;;;;;;-1:-1:-1;;16998:43:84;;;;;;;;;;;;:::i;16265:361::-;16344:16;16390:11;16376:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14849:276;14924:7;14970:11;14947:52;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15131:271;15205:7;15250:11;15228:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15408:249;15481:7;15511:11;15504:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15663:231;15729:7;15766:11;15752:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14590:253;14720:16;;;14734:1;14720:16;;;14665;14720;;;;;14665;;;14720;14734:1;14720:16;;;;;;;;;;-1:-1:-1;14720:16:84;14693:43;;14786:11;14774:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14748:7;14756:1;14748:10;;;;;;;;;;;;;14760:7;14768:1;14760:10;;;;;;;;;;;;;;;;;14747:64;;;;;14829:7;14590:253;-1:-1:-1;;14590:253:84:o;17449:2622::-;17856:16;17884:20;17918:7;:14;17907:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17907:26:84;;17884:49;;17943:17;17974:9;17994:210;18010:7;:14;18006:1;:18;17994:210;;;18050:6;:22;;;:47;;;;;18076:13;18090:1;18076:16;;;;;;;;;;;;;;18096:1;18076:21;18050:47;18049:94;;;;18103:6;:19;;;:39;;;;;18126:8;18135:1;18126:11;;;;;;;;;;;;;;18141:1;18126:16;18103:39;18045:149;;;18175:4;18163:6;18170:1;18163:9;;;;;;;;:16;;;:9;;;;;;;;;;;:16;18045:149;18026:3;;17994:210;;;18218:6;:34;;;18214:264;;;-1:-1:-1;18277:1:84;18268:200;18284:6;:21;;;:28;18280:1;:32;18268:200;;;18341:23;18365:1;18341:26;;;;;;;;;;;;;;18371:1;18341:31;18337:117;;;18431:4;18396:6;18403;:21;;;18425:1;18403:24;;;;;;;;;;;;;;18396:32;;;;;;;;:39;;;:32;;;;;;;;;;;:39;18337:117;18314:3;;18268:200;;;18492:6;:15;;;18488:220;;;-1:-1:-1;18532:1:84;18523:175;18539:6;:18;;;:25;18535:1;:29;18523:175;;;18593:4;18598:1;18593:7;;;;;;;;;;;;;;18604:1;18593:12;18589:95;;;18661:4;18629:6;18636;:18;;;18655:1;18636:21;;;;;;;;;;;;;;18629:29;;;;;;;;:36;;;:29;;;;;;;;;;;:36;18589:95;18566:3;;18523:175;;;18722:6;:16;;;18718:224;;;-1:-1:-1;18763:1:84;18754:178;18770:6;:19;;;:26;18766:1;:30;18754:178;;;18825:5;18831:1;18825:8;;;;;;;;;;;;;;18837:1;18825:13;18821:97;;;18895:4;18862:6;18869;:19;;;18889:1;18869:22;;;;;;;;;;;;;;18862:30;;;;;;;;:37;;;:30;;;;;;;;;;;:37;18821:97;18798:3;;18754:178;;;18956:6;:25;;;18952:347;;;-1:-1:-1;19006:1:84;18997:292;19013:6;:28;;;:35;19009:1;:39;18997:292;;;19157:14;19172:1;19157:17;;;;;;;;;;;;;;:24;19185:1;19157:29;19153:122;;;19252:4;19210:6;19217;:28;;;19246:1;19217:31;;;;;;;;;;;;;;19210:39;;;;;;;;:46;;;:39;;;;;;;;;;;:46;19153:122;19050:3;;18997:292;;;19313:6;:28;;;19309:336;;;-1:-1:-1;19366:1:84;19357:278;19373:6;:23;;;:30;19369:1;:34;19357:278;;;19515:7;19523:1;19515:10;;;;;;;;;;;;;;:17;19536:1;19515:22;19511:110;;;19598:4;19561:6;19568;:23;;;19592:1;19568:26;;;;;;;;;;;;;;19561:34;;;;;;;;:41;;;:34;;;;;;;;;;;:41;19511:110;19405:3;;19357:278;;;-1:-1:-1;19664:1:84;19655:127;19671:6;:13;19667:1;:17;19655:127;;;19709:6;19716:1;19709:9;;;;;;;;;;;;;;:17;;19722:4;19709:17;;;19705:67;;;19746:11;;;;;19705:67;19686:3;;19655:127;;;19792:26;19835:9;19821:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19821:24:84;;19792:53;;19855:11;19890:1;19886:5;;19881:157;19897:6;:13;19893:1;:17;19881:157;;;19935:6;19942:1;19935:9;;;;;;;;;;;;;;:17;;19948:4;19935:17;;;19931:97;;;19989:1;19972:9;19982:3;19972:14;;;;;;;;;;;;;;;;;:18;20008:5;;19931:97;19912:3;;;;;19881:157;;;-1:-1:-1;20055:9:84;17449:2622;-1:-1:-1;;;;;;;;;;;;;17449:2622:84:o;17174:269::-;17244:4;17285:11;17264:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17264:50:84;;;;;;;;-1:-1:-1;;17264:50:84;;;;;;;;;;;;:::i;301:707:-1:-;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;:::i;:::-;495:80;:::i;:::-;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;:::o;1034:707::-;;1151:3;1144:4;1136:6;1132:17;1128:27;1118:2;;-1:-1;;1159:12;1118:2;1206:6;1193:20;1228:80;1243:64;1300:6;1243:64;:::i;1228:80::-;1336:21;;;1219:89;-1:-1;1380:4;1393:14;;;;1368:17;;;1482;;;1473:27;;;;1470:36;-1:-1;1467:2;;;1519:1;;1509:12;1467:2;1544:1;1529:206;1554:6;1551:1;1548:13;1529:206;;;5960:20;;1622:50;;1686:14;;;;1714;;;;1576:1;1569:9;1529:206;;2577:755;;2710:3;2703:4;2695:6;2691:17;2687:27;2677:2;;-1:-1;;2718:12;2677:2;2765:6;2752:20;2787:96;2802:80;2875:6;2802:80;:::i;2787:96::-;2911:21;;;2778:105;-1:-1;2955:4;2968:14;;;;2943:17;;;3057;;;3048:27;;;;3045:36;-1:-1;3042:2;;;3094:1;;3084:12;3042:2;3119:1;;3104:222;3129:6;3126:1;3123:13;3104:222;;;6484:6;6471:20;34093:1;34086:5;34083:12;34073:2;;3119:1;;34099:12;34073:2;3197:66;;3277:14;;;;3305;;;;3151:1;3144:9;3104:222;;;3108:14;;;;;;2670:662;;;;:::o;3371:767::-;;3508:3;3501:4;3493:6;3489:17;3485:27;3475:2;;-1:-1;;3516:12;3475:2;3563:6;3550:20;3585:100;3600:84;3677:6;3600:84;:::i;3585:100::-;3713:21;;;3576:109;-1:-1;3757:4;3770:14;;;;3745:17;;;3859;;;3850:27;;;;3847:36;-1:-1;3844:2;;;3896:1;;3886:12;3844:2;3921:1;3906:226;3931:6;3928:1;3925:13;3906:226;;;6657:6;6644:20;6669:53;6716:5;6669:53;:::i;:::-;3999:70;;4083:14;;;;4111;;;;3953:1;3946:9;3906:226;;4897:722;;5025:3;5018:4;5010:6;5006:17;5002:27;4992:2;;-1:-1;;5033:12;4992:2;5073:6;5067:13;5095:80;5110:64;5167:6;5110:64;:::i;5095:80::-;5203:21;;;5086:89;-1:-1;5247:4;5260:14;;;;5235:17;;;5349;;;5340:27;;;;5337:36;-1:-1;5334:2;;;5386:1;;5376:12;5334:2;5411:1;5396:217;5421:6;5418:1;5415:13;5396:217;;;11193:13;;5489:61;;5564:14;;;;5592;;;;5443:1;5436:9;5396:217;;5627:124;5691:20;;5716:30;5691:20;5716:30;:::i;11256:445::-;;;11411:2;11399:9;11390:7;11386:23;11382:32;11379:2;;;-1:-1;;11417:12;11379:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;11580:2;11653:22;;6302:13;11469:74;;-1:-1;6320:56;6302:13;6320:56;:::i;:::-;11588:97;;;;11373:328;;;;;:::o;11708:377::-;;11837:2;11825:9;11816:7;11812:23;11808:32;11805:2;;;-1:-1;;11843:12;11805:2;11901:17;11888:31;11939:18;11931:6;11928:30;11925:2;;;-1:-1;;11961:12;11925:2;11991:78;12061:7;12052:6;12041:9;12037:22;11991:78;:::i;:::-;11981:88;11799:286;-1:-1;;;;11799:286::o;12092:670::-;;;12279:2;12267:9;12258:7;12254:23;12250:32;12247:2;;;-1:-1;;12285:12;12247:2;12343:17;12330:31;12381:18;;12373:6;12370:30;12367:2;;;-1:-1;;12403:12;12367:2;12433:78;12503:7;12494:6;12483:9;12479:22;12433:78;:::i;:::-;12423:88;;12576:2;12565:9;12561:18;12548:32;12534:46;;12381:18;12592:6;12589:30;12586:2;;;-1:-1;;12622:12;12586:2;;12652:94;12738:7;12729:6;12718:9;12714:22;12652:94;:::i;:::-;12642:104;;;12241:521;;;;;:::o;12769:678::-;;;12960:2;12948:9;12939:7;12935:23;12931:32;12928:2;;;-1:-1;;12966:12;12928:2;13024:17;13011:31;13062:18;;13054:6;13051:30;13048:2;;;-1:-1;;13084:12;13048:2;13114:78;13184:7;13175:6;13164:9;13160:22;13114:78;:::i;:::-;13104:88;;13257:2;13246:9;13242:18;13229:32;13215:46;;13062:18;13273:6;13270:30;13267:2;;;-1:-1;;13303:12;13267:2;;13333:98;13423:7;13414:6;13403:9;13399:22;13333:98;:::i;13454:662::-;;;13637:2;13625:9;13616:7;13612:23;13608:32;13605:2;;;-1:-1;;13643:12;13605:2;13701:17;13688:31;13739:18;;13731:6;13728:30;13725:2;;;-1:-1;;13761:12;13725:2;13791:78;13861:7;13852:6;13841:9;13837:22;13791:78;:::i;:::-;13781:88;;13934:2;13923:9;13919:18;13906:32;13892:46;;13739:18;13950:6;13947:30;13944:2;;;-1:-1;;13980:12;13944:2;14083:6;14072:9;14068:22;;;6893:6;;6881:9;6876:3;6872:19;6868:32;6865:2;;;-1:-1;;6903:12;6865:2;6931:22;6893:6;6931:22;:::i;:::-;6922:31;;7064:46;7106:3;7082:22;7064:46;:::i;:::-;7046:16;7039:72;7216:46;7258:3;13934:2;7238:9;7234:22;7216:46;:::i;:::-;13934:2;7202:5;7198:16;7191:72;7365:46;7407:3;13637:2;7387:9;7383:22;7365:46;:::i;:::-;13637:2;7351:5;7347:16;7340:72;7529:46;7571:3;7496:2;7551:9;7547:22;7529:46;:::i;:::-;7496:2;7515:5;7511:16;7504:72;7684:46;7726:3;7650;7706:9;7702:22;7684:46;:::i;:::-;7650:3;7670:5;7666:16;7659:72;7843:46;7885:3;7809;7865:9;7861:22;7843:46;:::i;:::-;7809:3;7829:5;7825:16;7818:72;7999:46;8041:3;7965;8021:9;8017:22;7999:46;:::i;:::-;7965:3;7985:5;7981:16;7974:72;8145:46;8187:3;8111;8167:9;8163:22;8145:46;:::i;:::-;8111:3;8131:5;8127:16;8120:72;8258:3;8294:46;8336:3;8258;8316:9;8312:22;8294:46;:::i;:::-;8274:18;;;8267:74;8409:3;8466:22;;;11045:20;8425:18;;;8418:77;8596:3;8581:19;;;8568:33;8610:30;;;8607:2;;;-1:-1;;8643:12;8607:2;8690:94;8780:3;8771:6;8760:9;8756:22;8690:94;:::i;:::-;8596:3;8674:5;8670:18;8663:122;;;8882:3;;8871:9;8867:19;8854:33;13739:18;8899:6;8896:30;8893:2;;;-1:-1;;8929:12;8893:2;8976:90;9062:3;9053:6;9042:9;9038:22;8976:90;:::i;:::-;8882:3;8960:5;8956:18;8949:118;;;9166:3;;9155:9;9151:19;9138:33;13739:18;9183:6;9180:30;9177:2;;;-1:-1;;9213:12;9177:2;9260:74;9330:3;9321:6;9310:9;9306:22;9260:74;:::i;:::-;9166:3;9244:5;9240:18;9233:102;;;9436:3;;9425:9;9421:19;9408:33;13739:18;9453:6;9450:30;9447:2;;;-1:-1;;9483:12;9447:2;9530:74;9600:3;9591:6;9580:9;9576:22;9530:74;:::i;:::-;9436:3;9514:5;9510:18;9503:102;;;9711:3;;9700:9;9696:19;9683:33;13739:18;9728:6;9725:30;9722:2;;;-1:-1;;9758:12;9722:2;9805:74;9875:3;9866:6;9855:9;9851:22;9805:74;:::i;:::-;9711:3;9789:5;9785:18;9778:102;;;9976:3;;9965:9;9961:19;9948:33;13739:18;9993:6;9990:30;9987:2;;;-1:-1;;10023:12;9987:2;10070:74;10140:3;10131:6;10120:9;10116:22;10070:74;:::i;:::-;9976:3;10054:5;10050:18;10043:102;;;10242:3;;10231:9;10227:19;10214:33;13739:18;10259:6;10256:30;10253:2;;;-1:-1;;10289:12;10253:2;10336:74;10406:3;10397:6;10386:9;10382:22;10336:74;:::i;:::-;10242:3;10320:5;10316:18;10309:102;;;14000:100;;;;;;13599:517;;;;;:::o;14123:580::-;;;14296:9;14287:7;14283:23;14308:2;14283:23;14279:32;14276:2;;;-1:-1;;14314:12;14276:2;14372:17;14359:31;14410:18;14402:6;14399:30;14396:2;;;-1:-1;;14432:12;14396:2;14462:78;14532:7;14523:6;14512:9;14508:22;14462:78;:::i;:::-;14452:88;;;10602:4;-1:-1;;10581:19;;10577:30;10574:2;;;-1:-1;;10610:12;10574:2;;10638:20;10602:4;10638:20;:::i;:::-;14577:2;14659:9;14655:22;5691:20;5716:30;5740:5;5716:30;:::i;:::-;10729:72;;10602:4;10921:22;;5691:20;5716:30;5691:20;5716:30;:::i;:::-;14577:2;10885:16;;10878:72;14270:433;;10889:5;;-1:-1;14270:433;;-1:-1;;14270:433::o;14710:502::-;;;14856:2;14844:9;14835:7;14831:23;14827:32;14824:2;;;-1:-1;;14862:12;14824:2;14920:17;14907:31;14958:18;14950:6;14947:30;14944:2;;;-1:-1;;14980:12;14944:2;15010:78;15080:7;15071:6;15060:9;15056:22;15010:78;:::i;:::-;15000:88;15125:2;15164:22;;;;11045:20;;-1:-1;;;;14818:394::o;15219:823::-;;;;15433:2;15421:9;15412:7;15408:23;15404:32;15401:2;;;-1:-1;;15439:12;15401:2;15490:17;15484:24;15528:18;;15520:6;15517:30;15514:2;;;-1:-1;;15550:12;15514:2;15667:6;15656:9;15652:22;;;1918:3;1911:4;1903:6;1899:17;1895:27;1885:2;;-1:-1;;1926:12;1885:2;1966:6;1960:13;1988:95;2003:79;2075:6;2003:79;:::i;1988:95::-;2089:16;2125:6;2118:5;2111:21;2155:4;;2172:3;2168:14;2161:21;;2155:4;2147:6;2143:17;2277:3;2155:4;;2261:6;2257:17;2147:6;2248:27;;2245:36;2242:2;;;-1:-1;;2284:12;2242:2;-1:-1;2310:10;;2304:232;2329:6;2326:1;2323:13;2304:232;;;6129:6;6123:13;6141:48;6183:5;6141:48;:::i;:::-;2397:76;;2351:1;2344:9;;;;;2487:14;;;;2515;;2304:232;;;-1:-1;15727:18;;15721:25;15570:114;;-1:-1;15721:25;-1:-1;;;15755:30;;;15752:2;;;-1:-1;;15788:12;15752:2;;15818:89;15899:7;15890:6;15879:9;15875:22;15818:89;:::i;:::-;15808:99;;;15944:2;15998:9;15994:22;11193:13;15952:74;;15395:647;;;;;:::o;16049:392::-;;16189:2;16177:9;16168:7;16164:23;16160:32;16157:2;;;-1:-1;;16195:12;16157:2;16246:17;16240:24;16284:18;16276:6;16273:30;16270:2;;;-1:-1;;16306:12;16270:2;16336:89;16417:7;16408:6;16397:9;16393:22;16336:89;:::i;16448:257::-;;16560:2;16548:9;16539:7;16535:23;16531:32;16528:2;;;-1:-1;;16566:12;16528:2;5839:6;5833:13;5851:30;5875:5;5851:30;:::i;:::-;16618:71;16522:183;-1:-1;;;16522:183::o;16712:529::-;;;;16858:2;16846:9;16837:7;16833:23;16829:32;16826:2;;;-1:-1;;16864:12;16826:2;5839:6;5833:13;5851:30;5875:5;5851:30;:::i;:::-;17024:2;17074:22;;11193:13;17143:2;17193:22;;;11193:13;16916:71;;11193:13;;-1:-1;11193:13;16820:421;-1:-1;;;16820:421::o;17248:263::-;;17363:2;17351:9;17342:7;17338:23;17334:32;17331:2;;;-1:-1;;17369:12;17331:2;-1:-1;11193:13;;17325:186;-1:-1;17325:186::o;17518:529::-;;;;17664:2;17652:9;17643:7;17639:23;17635:32;17632:2;;;-1:-1;;17670:12;17632:2;11199:6;11193:13;17722:74;;17833:2;17884:9;17880:22;5833:13;5851:30;5875:5;5851:30;:::i;:::-;17841:71;;;;17949:2;18003:9;17999:22;11193:13;17957:74;;17626:421;;;;;:::o;18054:399::-;;;18186:2;18174:9;18165:7;18161:23;18157:32;18154:2;;;-1:-1;;18192:12;18154:2;-1:-1;;11193:13;;18355:2;18405:22;;;11193:13;;;;;-1:-1;18148:305::o;19109:1048::-;;19377:5;31034:12;31883:6;31878:3;31871:19;31920:4;;31915:3;31911:14;19389:118;;;31920:4;19564:6;19560:17;19555:3;19551:27;31920:4;19674:5;30550:14;-1:-1;19713:405;19738:6;19735:1;19732:13;19713:405;;;19800:9;19794:4;19790:20;19785:3;19778:33;18612:96;18704:3;19845:6;19839:13;18612:96;:::i;:::-;20097:14;;;;19859:122;-1:-1;31474:14;;;;19760:1;19753:9;19713:405;;;-1:-1;20141:10;;19283:874;-1:-1;;;;;;;19283:874::o;20190:666::-;;20374:5;31034:12;31883:6;31878:3;31871:19;31920:4;;31915:3;31911:14;20386:90;;31920:4;20544:5;30550:14;-1:-1;20583:251;20608:6;20605:1;20602:13;20583:251;;;20669:13;;32651;32644:21;22357:34;;18864:14;;;;31474;;;;20630:1;20623:9;20583:251;;;-1:-1;20840:10;;20308:548;-1:-1;;;;;20308:548::o;20895:670::-;;21078:5;31034:12;31883:6;31878:3;31871:19;31920:4;;31915:3;31911:14;21090:83;;31920:4;21244:5;30550:14;-1:-1;21283:260;21308:6;21305:1;21302:13;21283:260;;;21369:13;;22474:37;;19046:14;;;;31474;;;;21330:1;21323:9;21283:260;;22796:470;;23023:2;23044:17;23037:47;23098:158;23023:2;23012:9;23008:18;23242:6;23098:158;:::i;23273:3108::-;;24352:3;;24374:17;24367:47;24428:158;24352:3;24341:9;24337:19;24572:6;24428:158;:::i;:::-;24420:166;;24634:9;24628:4;24624:20;24619:2;24608:9;24604:18;24597:48;24659:108;24762:4;24753:6;24659:108;:::i;:::-;24651:116;;24815:9;24809:4;24805:20;24800:2;24789:9;24785:18;24778:48;24840:108;24943:4;24934:6;24840:108;:::i;:::-;24832:116;;24996:9;24990:4;24986:20;24981:2;24970:9;24966:18;24959:48;25021:108;25124:4;25115:6;25021:108;:::i;:::-;25013:116;;25178:9;25172:4;25168:20;25162:3;25151:9;25147:19;25140:49;25203:158;25356:4;25347:6;25203:158;:::i;:::-;25195:166;;25410:9;25404:4;25400:20;25394:3;25383:9;25379:19;25372:49;25435:158;25588:4;25579:6;25435:158;:::i;:::-;25427:166;;25642:9;25636:4;25632:20;25626:3;25615:9;25611:19;25604:49;25667:158;25820:4;25811:6;25667:158;:::i;:::-;25659:166;;25874:9;25868:4;25864:20;25858:3;25847:9;25843:19;25836:49;25899:108;26002:4;25993:6;25899:108;:::i;:::-;25891:116;;26056:9;26050:4;26046:20;26040:3;26029:9;26025:19;26018:49;26081:108;26184:4;26175:6;26081:108;:::i;:::-;26073:116;;26238:9;26232:4;26228:20;26222:3;26211:9;26207:19;26200:49;26263:108;26366:4;26357:6;26263:108;:::i;:::-;26255:116;24323:2058;-1:-1;;;;;;;;;;;;;24323:2058::o;26388:358::-;;26559:2;26580:17;26573:47;26634:102;26559:2;26548:9;26544:18;26722:6;26634:102;:::i;26753:605::-;;26996:2;27017:17;27010:47;27071:102;26996:2;26985:9;26981:18;27159:6;27071:102;:::i;:::-;27221:9;27215:4;27211:20;27206:2;27195:9;27191:18;27184:48;27246:102;27343:4;27334:6;27246:102;:::i;:::-;27238:110;26967:391;-1:-1;;;;;26967:391::o;27365:370::-;;27542:2;27563:17;27556:47;27617:108;27542:2;27531:9;27527:18;27711:6;27617:108;:::i;27742:222::-;22474:37;;;27869:2;27854:18;;27840:124::o;27971:252::-;32942:42;32931:54;;;;22609:65;;28113:2;28098:18;;28084:139::o;28230:256::-;28292:2;28286:9;28318:17;;;28393:18;28378:34;;28414:22;;;28375:62;28372:2;;;28450:1;;28440:12;28372:2;28292;28459:22;28270:216;;-1:-1;28270:216::o;28493:304::-;;28652:18;28644:6;28641:30;28638:2;;;-1:-1;;28674:12;28638:2;-1:-1;28719:4;28707:17;;;28772:15;;28575:222::o;33364:117::-;32942:42;33451:5;32931:54;33426:5;33423:35;33413:2;;33472:1;;33462:12;33413:2;33407:74;:::o;33488:111::-;33569:5;32651:13;32644:21;33547:5;33544:32;33534:2;;33590:1;;33580:12;33884:117;33976:1;33969:5;33966:12;33956:2;;33992:1;;33982:12"},"methodIdentifiers":{"getAmpForPools(address[])":"7b2de533","getInRecoveryModeForPools(address[])":"96ebd934","getIsPausedForPools(address[])":"fd436378","getLinearTargetsForPools(address[])":"ecfb5a7c","getNormalizedWeightsForPools(address[])":"b3a46001","getPoolData(bytes32[],(bool,bool,bool,bool,bool,bool,bool,bool,bool,uint256,uint8[],uint8[],uint256[],uint256[],uint256[],uint256[],uint256[]))":"ed5017f6","getPoolStatus(bytes32[],(bool,bool))":"4b3dcc1e","getPoolTokenBalancesWithUpdatesAfterBlock(bytes32[],uint256)":"716bb27a","getRateForPools(address[])":"c4fb0f82","getScalingFactorsForPools(address[])":"828f7c7d","getSwapFeePercentageForPools(address[],uint8[])":"04013a7d","getTotalSupplyForPools(address[],uint8[])":"b4a9f0c8","getWrappedTokenRateForLinearPools(address[])":"17615f32","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getAmpForPools\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getInRecoveryModeForPools\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getIsPausedForPools\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getLinearTargetsForPools\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"\",\"type\":\"uint256[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getNormalizedWeightsForPools\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"\",\"type\":\"uint256[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"loadTokenBalanceUpdatesAfterBlock\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadTotalSupply\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadSwapFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadLinearWrappedTokenRates\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadLinearTargets\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadNormalizedWeights\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadScalingFactors\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadAmps\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadRates\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"enum TotalSupplyType[]\",\"name\":\"totalSupplyTypes\",\"type\":\"uint8[]\"},{\"internalType\":\"enum SwapFeeType[]\",\"name\":\"swapFeeTypes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"linearPoolIdxs\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"weightedPoolIdxs\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"scalingFactorPoolIdxs\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ampPoolIdxs\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ratePoolIdxs\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolDataQueryConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"getPoolData\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"balances\",\"type\":\"uint256[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"totalSupplies\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFees\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"linearWrappedTokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[][]\",\"name\":\"linearTargets\",\"type\":\"uint256[][]\"},{\"internalType\":\"uint256[][]\",\"name\":\"weights\",\"type\":\"uint256[][]\"},{\"internalType\":\"uint256[][]\",\"name\":\"scalingFactors\",\"type\":\"uint256[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"amps\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ignoreIdxs\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"loadInRecoveryMode\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"loadIsPaused\",\"type\":\"bool\"}],\"internalType\":\"struct PoolStatusQueryConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"getPoolStatus\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"isPaused\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"inRecoveryMode\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"poolIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPoolTokenBalancesWithUpdatesAfterBlock\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"\",\"type\":\"uint256[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getRateForPools\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getScalingFactorsForPools\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"\",\"type\":\"uint256[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"},{\"internalType\":\"enum SwapFeeType[]\",\"name\":\"swapFeeTypes\",\"type\":\"uint8[]\"}],\"name\":\"getSwapFeePercentageForPools\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"},{\"internalType\":\"enum TotalSupplyType[]\",\"name\":\"totalSupplyTypes\",\"type\":\"uint8[]\"}],\"name\":\"getTotalSupplyForPools\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"poolAddresses\",\"type\":\"address[]\"}],\"name\":\"getWrappedTokenRateForLinearPools\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract builds on top of the Balancer V2 architecture to provide useful helpers for fetching on chain data for Balancer pools. It is especially helpful for SOR (Smart order router) initialization. It allows for bulking actions for many pools at once, with the overall goal to reduce network-in and network-out required for loading useful onchain data.\",\"kind\":\"dev\",\"methods\":{\"getPoolData(bytes32[],(bool,bool,bool,bool,bool,bool,bool,bool,bool,uint256,uint8[],uint8[],uint256[],uint256[],uint256[],uint256[],uint256[]))\":{\"details\":\"Under most circumstances, you will use getPoolData as the main entry point for this contract. It allows you to fetch various types of pool data for many pools in a single query. The response is optimized for data out. We return the minimum amount of data from this query to facilitate faster network requests. getPoolData replaces the generic multicall approach that over fetches data in most situations and will revert if any query in the multicall reverts, making it difficult to identify pools that need to be filtered from routing. This function returns an array ignoreIdxs that contains the enumerated idxs in the poolIds array that should be filtered out.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"BalancerPoolDataQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"ILinearPool":{"abi":[{"inputs":[],"name":"getTargets","outputs":[{"internalType":"uint256","name":"lowerTarget","type":"uint256"},{"internalType":"uint256","name":"upperTarget","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWrappedTokenRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getTargets()":"63fe3b56","getWrappedTokenRate()":"f5431aa8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getTargets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lowerTarget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"upperTarget\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWrappedTokenRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"ILinearPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithActualSupply":{"abi":[{"inputs":[],"name":"getActualSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActualSupply()":"876f303b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getActualSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithActualSupply\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithAmp":{"abi":[{"inputs":[],"name":"getAmplificationParameter","outputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"isUpdating","type":"bool"},{"internalType":"uint256","name":"precision","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAmplificationParameter()":"6daccffa"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAmplificationParameter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isUpdating\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"precision\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithAmp\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithPercentFee":{"abi":[{"inputs":[],"name":"percentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"percentFee()":"4c1a4115"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"percentFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithPercentFee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithScalingFactors":{"abi":[{"inputs":[],"name":"getScalingFactors","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getScalingFactors()":"1dd746ea"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getScalingFactors\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithScalingFactors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithSwapFeePercentage":{"abi":[{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getSwapFeePercentage()":"55c67628"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithSwapFeePercentage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IPoolWithVirtualSupply":{"abi":[{"inputs":[],"name":"getVirtualSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getVirtualSupply()":"de82cd34"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getVirtualSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IPoolWithVirtualSupply\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"},"IWeightedPool":{"abi":[{"inputs":[],"name":"getNormalizedWeights","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getNormalizedWeights()":"f89f27ed"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getNormalizedWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerPoolDataQueries.sol\":\"IWeightedPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"contracts/BalancerPoolDataQueries.sol\":{\"keccak256\":\"0x4f55f1568ed32c1427f4aaa50b2dd74d3acc651bcbd16e27890a73be98d43220\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85206823dc514c1b96386edd2d2a658338b951ba7fb1152f13bb074e83a77e95\",\"dweb:/ipfs/QmYFVs9WSG5jNriGwFPgJ6LFqD7zX9XXgafnEQvJnrmuah\"]}},\"version\":1}"}},"contracts/BalancerQueries.sol":{"BalancerQueries":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200187c3803806200187c8339810160408190526200003491620000c9565b806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006e57600080fd5b505afa15801562000083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a99190620000c9565b6001600160601b0319606091821b811660805291901b1660a05262000108565b600060208284031215620000db578081fd5b8151620000e881620000ef565b9392505050565b6001600160a01b03811681146200010557600080fd5b50565b60805160601c60a05160601c611727620001556000398061010652806101c9528061039c528061045f5280610693528061080b52806108a75280610919525080610bf852506117276000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea2646970667358221220d92975b3342d89374c92e49fb08547ded101a5dbf93f8e25fad65b4da17333bc64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x187C CODESIZE SUB DUP1 PUSH3 0x187C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xC9 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xA9 SWAP2 SWAP1 PUSH3 0xC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH3 0x108 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xDB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xE8 DUP2 PUSH3 0xEF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1727 PUSH3 0x155 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x106 MSTORE DUP1 PUSH2 0x1C9 MSTORE DUP1 PUSH2 0x39C MSTORE DUP1 PUSH2 0x45F MSTORE DUP1 PUSH2 0x693 MSTORE DUP1 PUSH2 0x80B MSTORE DUP1 PUSH2 0x8A7 MSTORE DUP1 PUSH2 0x919 MSTORE POP DUP1 PUSH2 0xBF8 MSTORE POP PUSH2 0x1727 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0x29 PUSH22 0xB3342D89374C92E49FB08547DED101A5DBF93F8E25FA 0xD6 JUMPDEST 0x4D LOG1 PUSH20 0x33BC64736F6C6343000701003300000000000000 ","sourceMap":"1600:4665:85:-:0;;;1701:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1741:6;-1:-1:-1;;;;;1741:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:81;;;;;;;;1766:14:85;;;;::::1;::::0;1600:4665;;345:293:-1;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1394:147::-;-1:-1;;;;;1328:54;;1468:50;;1458:2;;1532:1;;1522:12;1458:2;1452:89;:::o;:::-;1600:4665:85;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9295":[{"length":32,"start":3064}],"11585":[{"length":32,"start":262},{"length":32,"start":457},{"length":32,"start":924},{"length":32,"start":1119},{"length":32,"start":1683},{"length":32,"start":2059},{"length":32,"start":2215},{"length":32,"start":2329}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea2646970667358221220d92975b3342d89374c92e49fb08547ded101a5dbf93f8e25fad65b4da17333bc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0x29 PUSH22 0xB3342D89374C92E49FB08547DED101A5DBF93F8E25FA 0xD6 JUMPDEST 0x4D LOG1 PUSH20 0x33BC64736F6C6343000701003300000000000000 ","sourceMap":"1600:4665:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4107:736;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4849;;;;;;:::i;:::-;;:::i;1793:1993::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3792:309::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1665:29::-;;;:::i;:::-;;;;;;;:::i;4107:736::-;4281:14;4297:26;4336:12;4354:5;:13;;;4368:6;4354:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4335:40;;;4386:25;4413:23;4440:53;4470:6;4478:7;:14;;;4440:29;:53::i;:::-;4385:108;;;;4503:36;4542:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4503:71;;4617:4;4607:25;;;4646:6;4666;4686:9;4709:8;4731:15;4760:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4810:7;:16;;;4607:229;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4607:229:85;;;;;;;;;;;;:::i;:::-;4585:251;;;;-1:-1:-1;4107:736:85;-1:-1:-1;;;;;;;;;4107:736:85:o;4849:::-;5023:13;5038:27;5078:12;5096:5;:13;;;5110:6;5096:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5077:40;;;5128:25;5155:23;5182:53;5212:6;5220:7;:14;;;5182:29;:53::i;:::-;5127:108;;;;5245:36;5284:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5245:71;;5359:4;5349:25;;;5388:6;5408;5428:9;5451:8;5473:15;5502:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1793:1993;2337:15;;;2350:1;2337:15;;;2312:22;2337:15;;;;;1936:7;;2312:22;;2337:15;2350:1;2337:15;;;;;;;;;;-1:-1:-1;2337:15:85;2312:40;;2374:10;:18;;;2362:6;2369:1;2362:9;;;;;;;;;;;;;:30;;;;;;;;;;;2414:10;:19;;;2402:6;2409:1;2402:9;;;;;;;;:31;;;;;:9;;;;;;;;;;;:31;2482:29;;;2509:1;2482:29;;;;;;;;;2444:35;;2482:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2444:67;;2532:212;;;;;;;;2575:10;:17;;;2532:212;;;;2620:1;2532:212;;;;2650:1;2532:212;;;;2673:10;:17;;;2532:212;;;;2714:10;:19;;;2532:212;;;2521:5;2527:1;2521:8;;;;;;;;;;;;;:223;;;;2755:27;2785:5;:20;;;2806:10;:15;;;2823:5;2830:6;2838:5;2785:59;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2785:59:85;;;;;;;;;;;;:::i;:::-;2755:89;-1:-1:-1;3191:24:85;3172:10;:15;;;:43;;;;;;;;;3168:612;;;3432:55;3459:1;3441:11;3453:1;3441:14;;;;;;;;;;;;;;:19;;15089:3:12;3432:8:85;:55::i;:::-;3517:11;3529:1;3517:14;;;;;;;;;;;;;;3516:15;;3501:31;;;;;;;3168:612;3754:11;3766:1;3754:14;;;;;;;;;;;;;;3739:30;;;;;1793:1993;;;;;:::o;3792:309::-;4046:48;;;;;4000:27;;4046:20;:5;:20;;;;:48;;4067:4;;4073:5;;4080:6;;4088:5;;4046:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4046:48:85;;;;;;;;;;;;:::i;:::-;4039:55;3792:309;-1:-1:-1;;;;;3792:309:85:o;1665:29::-;;;:::o;5591:672::-;5725:25;5752:23;5791:28;5829:30;5862:34;5881:14;5862:18;:34::i;:::-;5951:27;;;;;5829:67;;-1:-1:-1;5951:19:85;:5;:19;;;;:27;;5971:6;;5951:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5951:27:85;;;;;;;;;;;;:::i;:::-;6024:19;;6045:21;;5907:71;;-1:-1:-1;5907:71:85;;-1:-1:-1;5907:71:85;;-1:-1:-1;5988:79:85;;6024:19;5988:35;:79::i;:::-;6083:9;6078:179;6102:12;:19;6098:1;:23;6078:179;;;6142:12;6157;6170:1;6157:15;;;;;;;;;;;;;;6142:30;;6186:60;6204:14;6219:1;6204:17;;;;;;;;;;;;;;6195:26;;:5;:26;;;14115:3:12;6186:8:85;:60::i;:::-;-1:-1:-1;6123:3:85;;6078:179;;;;5591:672;;;;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;2218:303:81:-;2293:15;2320:22;2358:6;:13;2345:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:27:81;;2320:52;;2387:9;2382:110;2406:6;:13;2402:1;:17;2382:110;;;2452:29;2471:6;2478:1;2471:9;;;;;;;;;;;;;;2452:18;:29::i;:::-;2440:6;2447:1;2440:9;;;;;;;;:41;;;;:9;;;;;;;;;;;:41;2421:3;;2382:110;;;-1:-1:-1;2508:6:81;2218:303;-1:-1:-1;;2218:303:81:o;920:131:61:-;998:46;1012:1;1007;:6;5826:3:12;998:8:61;:46::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1982:139:81:-;2047:6;2072:13;2079:5;2072:6;:13::i;:::-;:42;;2098:16;2108:5;2098:9;:16::i;:::-;2072:42;;;2088:7;:5;:7::i;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1705:105:81;1781:22;;;;1705:105::o;2762:110::-;2858:5;2762:110::o;1528:76::-;1592:5;1528:76;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;462:752::-;;594:3;587:4;579:6;575:17;571:27;561:2;;-1:-1;;602:12;561:2;649:6;636:20;671:95;686:79;758:6;686:79;:::i;:::-;671:95;:::i;:::-;794:21;;;662:104;-1:-1;838:4;851:14;;;;826:17;;;940;;;931:27;;;;928:36;-1:-1;925:2;;;977:1;;967:12;925:2;1002:1;987:221;1012:6;1009:1;1006:13;987:221;;;5877:6;5864:20;5889:48;5931:5;5889:48;:::i;:::-;1080:65;;1159:14;;;;1187;;;;1034:1;1027:9;987:221;;;991:14;;;;;554:660;;;;:::o;3602:707::-;;3719:3;3712:4;3704:6;3700:17;3696:27;3686:2;;-1:-1;;3727:12;3686:2;3774:6;3761:20;3796:80;3811:64;3868:6;3811:64;:::i;3796:80::-;3904:21;;;3787:89;-1:-1;3948:4;3961:14;;;;3936:17;;;4050;;;4041:27;;;;4038:36;-1:-1;4035:2;;;4087:1;;4077:12;4035:2;4112:1;4097:206;4122:6;4119:1;4116:13;4097:206;;;12353:20;;4190:50;;4254:14;;;;4282;;;;4144:1;4137:9;4097:206;;4335:722;;4463:3;4456:4;4448:6;4444:17;4440:27;4430:2;;-1:-1;;4471:12;4430:2;4511:6;4505:13;4533:80;4548:64;4605:6;4548:64;:::i;4533:80::-;4641:21;;;4524:89;-1:-1;4685:4;4698:14;;;;4673:17;;;4787;;;4778:27;;;;4775:36;-1:-1;4772:2;;;4824:1;;4814:12;4772:2;4849:1;4834:217;4859:6;4856:1;4853:13;4834:217;;;12501:13;;4927:61;;5002:14;;;;5030;;;;4881:1;4874:9;4834:217;;5065:124;5129:20;;36496:13;;36489:21;39062:32;;39052:2;;39108:1;;39098:12;5334:440;;5435:3;5428:4;5420:6;5416:17;5412:27;5402:2;;-1:-1;;5443:12;5402:2;5490:6;5477:20;33000:18;32992:6;32989:30;32986:2;;;-1:-1;;33022:12;32986:2;5512:64;33163:4;-1:-1;;5428:4;33080:6;33076:17;33072:33;33153:15;5512:64;:::i;:::-;5503:73;;5596:6;5589:5;5582:21;5700:3;33163:4;5691:6;5624;5682:16;;5679:25;5676:2;;;5717:1;;5707:12;5676:2;38177:6;33163:4;5624:6;5620:17;33163:4;5658:5;5654:16;38154:30;38233:1;38215:16;;;33163:4;38215:16;38208:27;5658:5;5395:379;-1:-1;;5395:379::o;5782:160::-;5864:20;;5889:48;5864:20;5889:48;:::i;6510:156::-;6590:20;;39948:1;39938:12;;39928:2;;39964:1;;39954:12;7915:1120;;8037:4;8025:9;8020:3;8016:19;8012:30;8009:2;;;-1:-1;;8045:12;8009:2;8073:20;8037:4;8073:20;:::i;:::-;8064:29;;8158:17;8145:31;8196:18;;8188:6;8185:30;8182:2;;;8173:1;;8218:12;8182:2;8263:89;8348:3;8339:6;8328:9;8324:22;8263:89;:::i;:::-;8245:16;8238:115;8451:2;8440:9;8436:18;8423:32;8409:46;;8196:18;8467:6;8464:30;8461:2;;;8173:1;;8497:12;8461:2;8542:74;8612:3;8603:6;8592:9;8588:22;8542:74;:::i;:::-;8451:2;8528:5;8524:16;8517:100;8710:2;8699:9;8695:18;8682:32;8668:46;;8196:18;8726:6;8723:30;8720:2;;;8173:1;;8756:12;8720:2;;8801:58;8855:3;8846:6;8835:9;8831:22;8801:58;:::i;:::-;8710:2;8787:5;8783:16;8776:84;;8967:46;9009:3;8934:2;8989:9;8985:22;8967:46;:::i;:::-;8934:2;8953:5;8949:16;8942:72;8003:1032;;;;:::o;9077:799::-;;9198:4;9186:9;9181:3;9177:19;9173:30;9170:2;;;-1:-1;;9206:12;9170:2;9234:20;9198:4;9234:20;:::i;:::-;9225:29;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9313:75;;9497:46;9539:3;9464:2;9515:22;;9497:46;:::i;:::-;9464:2;9483:5;9479:16;9472:72;9610:2;9676:9;9672:22;358:20;383:41;418:5;383:41;:::i;:::-;9610:2;9625:16;;9618:83;9808:46;9850:3;9775:2;9826:22;;9808:46;:::i;12564:445::-;;;12719:2;12707:9;12698:7;12694:23;12690:32;12687:2;;;-1:-1;;12725:12;12687:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;12888:2;12961:22;;6424:13;12777:74;;-1:-1;39834:1;39824:12;;39814:2;;-1:-1;;39840:12;39814:2;12896:97;;;;12681:328;;;;;:::o;13016:823::-;;;;13230:2;13218:9;13209:7;13205:23;13201:32;13198:2;;;-1:-1;;13236:12;13198:2;13287:17;13281:24;13325:18;;13317:6;13314:30;13311:2;;;-1:-1;;13347:12;13311:2;13464:6;13453:9;13449:22;;;1391:3;1384:4;1376:6;1372:17;1368:27;1358:2;;-1:-1;;1399:12;1358:2;1439:6;1433:13;1461:95;1476:79;1548:6;1476:79;:::i;1461:95::-;1562:16;1598:6;1591:5;1584:21;1628:4;;1645:3;1641:14;1634:21;;1628:4;1620:6;1616:17;1750:3;1628:4;;1734:6;1730:17;1620:6;1721:27;;1718:36;1715:2;;;-1:-1;;1757:12;1715:2;-1:-1;1783:10;;1777:232;1802:6;1799:1;1796:13;1777:232;;;6048:6;6042:13;6060:48;6102:5;6060:48;:::i;:::-;1870:76;;1824:1;1817:9;;;;;1960:14;;;;1988;;1777:232;;;-1:-1;13524:18;;13518:25;13367:114;;-1:-1;13518:25;-1:-1;;;13552:30;;;13549:2;;;-1:-1;;13585:12;13549:2;;13615:89;13696:7;13687:6;13676:9;13672:22;13615:89;:::i;:::-;13605:99;;;13741:2;13795:9;13791:22;12501:13;13749:74;;13192:647;;;;;:::o;13846:390::-;;13985:2;;13973:9;13964:7;13960:23;13956:32;13953:2;;;-1:-1;;13991:12;13953:2;14042:17;14036:24;14080:18;14072:6;14069:30;14066:2;;;-1:-1;;14102:12;14066:2;14188:22;;2160:4;2148:17;;2144:27;-1:-1;2134:2;;-1:-1;;2175:12;2134:2;2215:6;2209:13;2237:79;2252:63;2308:6;2252:63;:::i;2237:79::-;2344:21;;;2401:14;;;;2376:17;;;2490;;;2481:27;;;;2478:36;-1:-1;2475:2;;;-1:-1;;2517:12;2475:2;-1:-1;2543:10;;2537:216;2562:6;2559:1;2556:13;2537:216;;;6750:13;;2630:60;;2584:1;2577:9;;;;;2704:14;;;;2732;;2537:216;;;-1:-1;14122:98;13947:289;-1:-1;;;;;;;13947:289::o;14243:769::-;;;;;14431:3;14419:9;14410:7;14406:23;14402:33;14399:2;;;-1:-1;;14438:12;14399:2;5276:6;5263:20;14490:63;;14590:2;14633:9;14629:22;72:20;97:33;124:5;97:33;:::i;:::-;14598:63;-1:-1;14698:2;14737:22;;72:20;97:33;72:20;97:33;:::i;:::-;14706:63;-1:-1;14834:2;14819:18;;14806:32;14858:18;14847:30;;14844:2;;;-1:-1;;14880:12;14844:2;14910:86;14988:7;14979:6;14968:9;14964:22;14910:86;:::i;:::-;14900:96;;;14393:619;;;;;;;:::o;15795:325::-;;15941:2;15929:9;15920:7;15916:23;15912:32;15909:2;;;-1:-1;;15947:12;15909:2;6235:6;6229:13;6247:64;6305:5;6247:64;:::i;:::-;15999:105;15903:217;-1:-1;;;15903:217::o;16127:1071::-;;;;;16423:3;16411:9;16402:7;16398:23;16394:33;16391:2;;;-1:-1;;16430:12;16391:2;16492:66;16550:7;16526:22;16492:66;:::i;:::-;16482:76;;16623:2;16612:9;16608:18;16595:32;16647:18;;16639:6;16636:30;16633:2;;;-1:-1;;16669:12;16633:2;16791:6;16780:9;16776:22;;;2953:3;2946:4;2938:6;2934:17;2930:27;2920:2;;-1:-1;;2961:12;2920:2;3030:111;3045:95;3008:6;2995:20;3045:95;:::i;3030:111::-;2995:20;;3169:21;;16623:2;3226:14;;;;3147:16;3201:17;;-1:-1;3306:264;3008:6;2995:20;3328:1;3325:13;3306:264;;;3414:3;3401:17;3205:6;3389:30;6966:4;-1:-1;;3389:30;6949:3;6945:19;;6941:30;6938:2;;;-1:-1;;6974:12;6938:2;7002:20;6966:4;7002:20;:::i;:::-;16623:2;3389:30;;5263:20;7088:16;7081:75;7279:22;3389:30;7279:22;12353:20;16623:2;7244:5;7240:16;7233:75;7432:22;3389:30;7432:22;12353:20;7279:22;7397:5;7393:16;7386:75;7578:22;3389:30;7578:22;12353:20;7432:22;7543:5;7539:16;7532:75;6966:4;3389:30;7685:19;7672:33;16647:18;7717:6;7714:30;7711:2;;;-1:-1;;7747:12;7711:2;7792:58;7846:3;16623:2;7837:6;3389:30;7822:22;;7792:58;:::i;:::-;7578:22;7774:16;;7767:84;-1:-1;3426:81;;-1:-1;16623:2;3521:14;;;;3549;;;;;3353:1;3346:9;3306:264;;;-1:-1;16689:119;;-1:-1;;;7279:22;16858:18;;16845:32;;-1:-1;16886:30;;;16883:2;;;-1:-1;;16919:12;16883:2;;16949:93;17034:7;17025:6;17014:9;17010:22;16949:93;:::i;:::-;16939:103;;;17097:85;17174:7;7432:22;17154:9;17150:22;17097:85;:::i;:::-;17087:95;;16385:813;;;;;;;:::o;17205:573::-;;;17386:3;17374:9;17365:7;17361:23;17357:33;17354:2;;;-1:-1;;17393:12;17354:2;17451:17;17438:31;17489:18;;17481:6;17478:30;17475:2;;;-1:-1;;17511:12;17475:2;17590:22;;;;11195:4;11174:19;;;11170:30;11167:2;;;-1:-1;;11203:12;11167:2;11231:20;11195:4;11231:20;:::i;:::-;5276:6;5263:20;11317:16;11310:75;11479:62;11537:3;11446:2;11517:9;11513:22;11479:62;:::i;:::-;11446:2;11465:5;11461:16;11454:88;11606:2;11679:9;11675:22;5864:20;5889:48;5931:5;5889:48;:::i;:::-;11606:2;11621:16;;11614:90;11802:64;11862:3;11769:2;11838:22;;11802:64;:::i;:::-;11769:2;11788:5;11784:16;11777:90;11930:3;11989:9;11985:22;12353:20;11930:3;11950:5;11946:16;11939:75;17386:3;12096:9;12092:19;12079:33;17489:18;12124:6;12121:30;12118:2;;;-1:-1;;12154:12;12118:2;12199:58;12253:3;12244:6;12233:9;12229:22;12199:58;:::i;:::-;17386:3;12185:5;12181:16;12174:84;;17531:91;;;;;;17677:85;17754:7;11446:2;17734:9;17730:22;17677:85;:::i;:::-;17667:95;;17348:430;;;;;:::o;17785:263::-;;17900:2;17888:9;17879:7;17875:23;17871:32;17868:2;;;-1:-1;;17906:12;17868:2;-1:-1;12501:13;;17862:186;-1:-1;17862:186::o;18055:528::-;;;18212:2;18200:9;18191:7;18187:23;18183:32;18180:2;;;-1:-1;;18218:12;18180:2;12507:6;12501:13;18270:74;;18402:2;18391:9;18387:18;18381:25;18426:18;18418:6;18415:30;18412:2;;;-1:-1;;18448:12;18412:2;18478:89;18559:7;18550:6;18539:9;18535:22;18478:89;:::i;:::-;18468:99;;;18174:409;;;;;:::o;19851:765::-;;20074:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;20086:93;;35284:4;20265:5;33315:14;-1:-1;20304:290;20329:6;20326:1;20323:13;20304:290;;;20390:13;;37246:42;37235:54;24334:65;;18774:14;;;;34715;;;;20351:1;20344:9;20304:290;;;-1:-1;20600:10;;19990:626;-1:-1;;;;;19990:626::o;22549:690::-;;22742:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;22754:93;;35284:4;22918:5;33315:14;-1:-1;22957:260;22982:6;22979:1;22976:13;22957:260;;;23043:13;;23409:37;;19420:14;;;;34715;;;;23004:1;22997:9;22957:260;;23578:323;;23710:5;33980:12;35247:6;35242:3;35235:19;-1:-1;38322:101;38336:6;38333:1;38330:13;38322:101;;;35284:4;38403:11;;;;;38397:18;38384:11;;;;;38377:39;38351:10;38322:101;;;38438:6;38435:1;38432:13;38429:2;;;-1:-1;35284:4;38494:6;35279:3;38485:16;;38478:27;38429:2;-1:-1;38614:2;38594:14;-1:-1;;38590:28;23857:39;;;;35284:4;23857:39;;23658:243;-1:-1;;23658:243::o;26033:837::-;37246:42;;26264:16;26258:23;37235:54;19532:3;19525:45;26444:4;26437:5;26433:16;26427:23;36496:13;36489:21;26444:4;26502:3;26498:14;23302:34;37246:42;26597:4;26590:5;26586:16;26580:23;37235:54;26597:4;26677:3;26673:14;19525:45;;26780:4;26773:5;26769:16;26763:23;36496:13;36489:21;26780:4;26838:3;26834:14;23302:34;26163:707;;:::o;27107:366::-;27282:2;27296:47;;;33980:12;;27267:18;;;35235:19;;;27107:366;;27282:2;33315:14;;;;35275;;;;27107:366;21056:257;21081:6;21078:1;21075:13;21056:257;;;21142:13;;23409:37;;34715:14;;;;18952;;;;21103:1;21096:9;21056:257;;;-1:-1;27349:114;;27253:220;-1:-1;;;;;;27253:220::o;27480:222::-;23409:37;;;27607:2;27592:18;;27578:124::o;27709:1124::-;;23439:5;23416:3;23409:37;37246:42;;36306:5;37235:54;28237:2;28226:9;28222:18;19525:45;37246:42;36306:5;37235:54;28320:2;28309:9;28305:18;19525:45;;28072:3;28357:2;28346:9;28342:18;28335:48;28397:108;28072:3;28061:9;28057:19;28491:6;28397:108;:::i;:::-;23439:5;28584:3;28573:9;28569:19;23409:37;23439:5;28668:3;28657:9;28653:19;23409:37;28722:9;28716:4;28712:20;28706:3;28695:9;28691:19;28684:49;28747:76;28818:4;28809:6;28747:76;:::i;:::-;28739:84;28043:790;-1:-1;;;;;;;;;;28043:790::o;28840:252::-;37246:42;37235:54;;;;24334:65;;28982:2;28967:18;;28953:139::o;29099:1156::-;;29562:3;29551:9;29547:19;37037:46;37077:5;37037:46;:::i;:::-;38046:37;24663:3;24656:61;29692:2;29562:3;29692:2;29681:9;29677:18;29670:48;29732:170;21700:5;33980:12;35247:6;35242:3;35235:19;35275:14;;;;29551:9;35275:14;21712:124;;35275:14;29692:2;21893:6;21889:17;29551:9;21880:27;;21868:39;;29692:2;22009:5;33315:14;-1:-1;22048:423;22073:6;22070:1;22067:13;22048:423;;;22125:20;;;;;22113:33;;22174:13;;25122:23;;23409:37;;25290:16;;;25284:23;25361:14;;;23409:37;25464:4;25453:16;;;25447:23;25524:14;;;23409:37;25620:4;25609:16;;;25603:23;25680:14;;;23409:37;25778:4;25767:16;;;25761:23;25054:4;25804:14;;;25797:38;;;25761:23;25850:71;25045:14;;;25761:23;25850:71;:::i;:::-;22194:134;-1:-1;;;22450:14;;;;34715;;;;22095:1;22088:9;22048:423;;;22052:14;;;;;29950:9;29944:4;29940:20;25464:4;29924:9;29920:18;29913:48;29975:123;30093:4;30084:6;29975:123;:::i;:::-;29967:131;;;30109:136;25620:4;30230:9;30226:18;30217:6;30109:136;:::i;30491:481::-;;23439:5;23416:3;23409:37;30696:2;30814;30803:9;30799:18;30792:48;30854:108;30696:2;30685:9;30681:18;30948:6;30854:108;:::i;:::-;30846:116;30667:305;-1:-1;;;;30667:305::o;30979:256::-;31041:2;31035:9;31067:17;;;31142:18;31127:34;;31163:22;;;31124:62;31121:2;;;31199:1;;31189:12;31121:2;31041;31208:22;31019:216;;-1:-1;31019:216::o;31242:319::-;;31416:18;31408:6;31405:30;31402:2;;;-1:-1;;31438:12;31402:2;-1:-1;31483:4;31471:17;;;31536:15;;31339:222::o;38631:104::-;38713:1;38706:5;38703:12;38693:2;;38719:9;38742:117;37246:42;38829:5;37235:54;38804:5;38801:35;38791:2;;38850:1;;38840:12"},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users. It connects different functionalities of the protocol components to allow accessing information that would have required a more cumbersome setup if we wanted to provide these already built-in.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerQueries.sol\":\"BalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x745fc8ab86d691812bf311fe0f94acf09d31b18d6b48784dcdfa96096100b1c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://870d659f080fe5c87d0f18df21cf4777ebf93de9214aeae5ec6034ea796bd3c5\",\"dweb:/ipfs/QmU3HeamVBq7WoQvyWDeWbQYjueBU96Qrn69LQmZyCRwLV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x4673e08f6b8e76ffa89155d704a0682a6a98e3c60ca5f28e0c4b964f26b65dbe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eef030243d480fb6e84943d88c19cfc2b7e17bee800ece7b7be840061f3cc4bb\",\"dweb:/ipfs/QmYCLn4pspMRBdKAhtjc7EjnHQURHrzp844M5722LEbL8D\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BalancerQueries.sol\":{\"keccak256\":\"0x7dc3b7e866b3b1161d30c2529350dca0faa580eadde1bc3f2c2f6e3f30fdb926\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1232040c6b1ee0492ac4b612fa0ffdd48cf69c510bc50cf612707bfd16b97f7\",\"dweb:/ipfs/QmeX4RU2cnZVD36ZmKyPBUJubQSjD5tDsC3gmZBzY21g9G\"]}},\"version\":1}"}},"contracts/BatchRelayerLibrary.sol":{"BatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"},{"internalType":"bool","name":"canCallUserCheckpoint","type":"bool"},{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"canCallUserCheckpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeCheckpoint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapEuler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"dieselAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapGearbox","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapShareToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapTetu","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapYearn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"eulerProtocol","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapEuler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"mainAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapGearbox","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapShareToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapTetu","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapYearn","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101806040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b5060405162006d0838038062006d0883398101604081905262000059916200021a565b8383838784816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009857600080fd5b505afa158015620000ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d3919062000318565b6001600160601b0319606091821b81166080529083901b1660a05260405182903090839062000102906200020c565b62000110939291906200033e565b604051809103906000f0801580156200012d573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05294901b9093166101005250151560f81b61012052506001600160a01b0381166200016d576000620001e4565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001a957600080fd5b505af1158015620001be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e4919062000318565b6001600160601b0319606091821b81166101405291901b166101605250620003d99350505050565b6109f6806200631283390190565b600080600080600060a0868803121562000232578081fd5b85516200023f81620003c0565b60208701519095506200025281620003c0565b60408701519094506200026581620003c0565b606087015190935080151581146200027b578182fd5b60808701519092506001600160401b038082111562000298578283fd5b818801915088601f830112620002ac578283fd5b815181811115620002bb578384fd5b604051601f8201601f191681016020018381118282101715620002dc578586fd5b6040528181528382016020018b1015620002f4578485fd5b620003078260208301602087016200038d565b809450505050509295509295909350565b6000602082840312156200032a578081fd5b81516200033781620003c0565b9392505050565b600060018060a01b038086168352808516602084015250606060408301528251806060840152620003778160808501602087016200038d565b601f01601f191691909101608001949350505050565b60005b83811015620003aa57818101518382015260200162000390565b83811115620003ba576000848401525b50505050565b6001600160a01b0381168114620003d657600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160f81c6101405160601c6101605160601c615e8a62000488600039806106f4528061079d52806107c85280610c455280610c715280610d1452806133055280613331525080610c245280610f2f5280610fd352806133d45250806107f1528061172e5250806112ed5280612577525080613d93525080612215525080612315528061266e525050615e8a6000f3fe6080604052600436106102dc5760003560e01c80637ab6e03c11610184578063959fc17a116100d6578063d80952d51161008a578063efe6910811610064578063efe6910814610604578063f3cab68514610617578063f4dd54b014610637576102dc565b8063d80952d5146105cb578063db4c0e91146105de578063e8210e3c146105f1576102dc565b8063b064b376116100bb578063b064b37614610592578063b6d24737146105a5578063d293f290146105b8576102dc565b8063959fc17a1461056c578063abf6d3991461057f576102dc565b80638b35ac8d116101385780638d928af8116101125780638d928af8146105315780638fe4624f14610546578063941e849b14610559576102dc565b80638b35ac8d146104f85780638c57198b1461050b5780638d64cfbc1461051e576102dc565b80637fd0e5d5116101695780637fd0e5d5146104b057806380db15bd146104d2578063837f9bcb146104e5576102dc565b80637ab6e03c1461048a5780637bc008f51461049d576102dc565b80633f85d3901161023d5780634f06a70b116101f1578063611b90dd116101cb578063611b90dd1461045157806365ca4804146104645780636d307ea814610477576102dc565b80634f06a70b146104185780635001fe751461042b57806352b887461461043e576102dc565b806344b6ac741161022257806344b6ac74146103df57806348699d58146103f25780634e9d9bab14610405576102dc565b80633f85d390146103b9578063433b0865146103cc576102dc565b80631c982441116102945780632cbec84e116102795780632cbec84e146103805780632e6272ea14610393578063311c5c57146103a6576102dc565b80631c9824411461035a5780632c25efe11461036d576102dc565b806310f3aaff116102c557806310f3aaff14610309578063138fdc2c146103345780631836944614610347576102dc565b80630e248fea146102e15780631089e5e3146102f6575b600080fd5b6102f46102ef366004614a74565b61064a565b005b6102f46103043660046149f6565b6106e5565b34801561031557600080fd5b5061031e6107ef565b60405161032b919061596b565b60405180910390f35b6102f4610342366004614e59565b610813565b6102f46103553660046151ec565b610a16565b6102f46103683660046148d1565b610c1f565b6102f461037b366004614e59565b610d42565b6102f461038e3660046149f6565b610f20565b6102f46103a13660046152e8565b610ffa565b6102f46103b4366004614e59565b61111a565b6102f46103c7366004614a2a565b6112ba565b6102f46103da36600461508a565b611384565b6102f46103ed366004614e59565b6115ad565b6102f4610400366004614916565b61172c565b6102f4610413366004614e59565b611772565b6102f4610426366004614e59565b6119cd565b6102f4610439366004614e59565b611ade565b6102f461044c366004614fcd565b611c69565b6102f461045f366004614e59565b611e0d565b6102f461047236600461503a565b611eb0565b6102f4610485366004614e59565b611fce565b6102f461049836600461508a565b612009565b6102f46104ab36600461503a565b61210f565b3480156104bc57600080fd5b506104c5612213565b60405161032b919061564e565b6102f46104e0366004614969565b612237565b6102f46104f3366004614b44565b61233b565b6102f4610506366004614e59565b61250b565b6102f4610519366004614cbd565b612547565b6102f461052c366004614f34565b6125f2565b34801561053d57600080fd5b506104c561266c565b6102f4610554366004614dc9565b612690565b6102f4610567366004614e59565b6128ba565b6102f461057a366004614eb3565b612a05565b6102f461058d366004614e59565b612a82565b6102f46105a0366004614e59565b612b35565b6102f46105b3366004614fa2565b612c78565b6102f46105c6366004614e59565b612cb2565b6102f46105d9366004614d20565b612d72565b6102f46105ec3660046148d1565b613300565b6102f46105ff366004614e59565b6133fb565b6102f4610612366004614e59565b613436565b61062a6106253660046153d6565b613475565b60405161032b9190615cfa565b6102f4610645366004614e59565b613487565b8060005b818110156106df5783838281811061066257fe5b90506020020160208101906106779190614899565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106a2919061564e565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b5050505080600101905061064e565b50505050565b6106ee826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b815260040161073e9190615cfa565b60206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e91906153ee565b90506107c36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016846135d9565b6106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088691906148b5565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c357600080fd5b505afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb91906148b5565b905061090981838689613681565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109569087908990600090600401615d39565b600060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b50505050610a0d83836001600160a01b0316634d778ad1876040518263ffffffff1660e01b81526004016109b89190615cfa565b60206040518083038186803b1580156109d057600080fd5b505afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906153ee565b6136ac565b50505050505050565b33610a246020890189614899565b6001600160a01b03161480610a4d575030610a426020890189614899565b6001600160a01b0316145b610a725760405162461bcd60e51b8152600401610a6990615b5c565b60405180910390fd5b60005b8a51811015610ad75760008b8281518110610a8c57fe5b6020026020010151606001519050610aa3816136c4565b15610ace57610ab18161370b565b8c8381518110610abd57fe5b602002602001015160600181815250505b50600101610a75565b506060610ae261266c565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b1c989796959493929190615a1c565b6000604051808303818588803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b729190810190614ab4565b905060005b82811015610c1057610b9d848483818110610b8e57fe5b905060400201602001356136c4565b610bb95760405162461bcd60e51b8152600401610a6990615c38565b610c08848483818110610bc857fe5b90506040020160200135610c0384878786818110610be257fe5b9050604002016000013581518110610bf657fe5b6020026020010151613736565b613742565b600101610b77565b50505050505050505050505050565b610c6b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613681565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610cbb9190615cfa565b602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db591906148b5565b9050610dc381878588613681565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e0b908690600401615cfa565b602060405180830381600087803b158015610e2557600080fd5b505af1158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d91906153ee565b15610e7a5760405162461bcd60e51b8152600401610a6990615bca565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610ec290309060040161564e565b60206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1291906153ee565b9050610a0d87868386613653565b610f29826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610f7a919061564e565b6020604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fcc91906153ee565b90506106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b336110086020870187614899565b6001600160a01b031614806110315750306110266020870187614899565b6001600160a01b0316145b61104d5760405162461bcd60e51b8152600401610a6990615b5c565b61105a86608001516136c4565b156110725761106c866080015161370b565b60808701525b600061107c61266c565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016110ae9493929190615c6f565b6020604051808303818588803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061110091906153ee565b905061110b826136c4565b15610a0d57610a0d8282613742565b611125858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561116257600080fd5b505afa158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a91906148b5565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906111e2908690600401615cfa565b600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061125c90309060040161564e565b60206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906153ee565b9050610a0d82868386613653565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061132690879087903390600401615875565b602060405180830381600087803b15801561134057600080fd5b505af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906153ee565b90506106df82826136ac565b61138d836136c4565b1561139e5761139b8361370b565b92505b60008261141d57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906148b5565b611490565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149091906148b5565b90506001600160a01b03861630146114d5576001600160a01b03861633146114ca5760405162461bcd60e51b8152600401610a6990615b5c565b6114d58682866137a1565b6114e96001600160a01b038216888661383d565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611537908990899086908a90600401615849565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158991906153ee565b9050611594836136c4565b156115a3576115a38382613742565b5050505050505050565b6115b8858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f557600080fd5b505afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d91906148b5565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a7590611675908690600401615cfa565b602060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c791906153ee565b156116e45760405162461bcd60e51b8152600401610a6990615b25565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061125c90309060040161564e565b7f0000000000000000000000000000000000000000000000000000000000000000156117625761175d838383613989565b61176d565b61176d838383613a3c565b505050565b61177d858386613755565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f291906148b5565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186791906148b5565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d359906118d49084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600090600401615826565b6040805180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190615406565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061196f90309060040161564e565b60206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf91906153ee565b90506115a382878387613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4091906148b5565b9050611a4e81878588613681565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611a80929190615d03565b602060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad291906153ee565b9050610a0d83826136ac565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1957600080fd5b505afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5191906148b5565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8e57600080fd5b505afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906148b5565b9050611bd482828689613681565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c0b94939291906156fa565b6040805180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615406565b9150506115a384826136ac565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca457600080fd5b505afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc91906148b5565b9050611cea81878588613681565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d35906000908790600401615640565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611daf90309060040161564e565b60206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff91906153ee565b90506115a388868386613653565b611e18858386613755565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611e4a92919061580d565b602060405180830381600087803b158015611e6457600080fd5b505af1158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906153ee565b9050611ea882826136ac565b505050505050565b611ebb848285613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f03908490600401615cfa565b600060405180830381600087803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b505050506001600160a01b03821630146106df576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906148b5565b9050610d3b6001600160a01b0382168484613b56565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b612012836136c4565b15612023576120208361370b565b92505b6001600160a01b0385163014612066576001600160a01b038516331461205b5760405162461bcd60e51b8152600401610a6990615b5c565b6120668587856137a1565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906120b290889088908890600401615826565b6040805180830381600087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121039190615406565b91505061110b826136c4565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561214a57600080fd5b505afa15801561215e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218291906148b5565b905061219081868487613681565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906121da9085908790600401615d03565b600060405180830381600087803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061224c575082155b6122685760405162461bcd60e51b8152600401610a6990615b93565b606063fa6e671d60e01b33868660405160240161228793929190615662565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516122f692869186910161561b565b60408051601f198184030181529190529050611ea86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613b75565b60005b845181101561241b57336001600160a01b031685828151811061235d57fe5b6020026020010151606001516001600160a01b031614806123a65750306001600160a01b031685828151811061238f57fe5b6020026020010151606001516001600160a01b0316145b6123c25760405162461bcd60e51b8152600401610a6990615b5c565b60008582815181106123d057fe5b60200260200101516040015190506123e7816136c4565b15612412576123f58161370b565b86838151811061240157fe5b602002602001015160400181815250505b5060010161233e565b5061242461266c565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b815260040161245091906158d5565b6000604051808303818588803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050505060005b81811015610d3b5761249c838383818110610b8e57fe5b6124b85760405162461bcd60e51b8152600401610a6990615c38565b6125038383838181106124c757fe5b90506040020160200135868585858181106124de57fe5b90506040020160000135815181106124f257fe5b602002602001015160400151613742565b600101612485565b612516858386613755565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611e4a929190615d03565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906125b89030908a908a908a908a908a908a906004016157ad565b600060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf8761260a61266c565b88888888886040518863ffffffff1660e01b8152600401612631979695949392919061576c565b600060405180830381600087803b15801561264b57600080fd5b505af115801561265f573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806126af57506001600160a01b03851630145b6126cb5760405162461bcd60e51b8152600401610a6990615b5c565b60006126d688613bef565b905060006126e3836136c4565b6126ee576000612783565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061273390899060040161564e565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278391906153ee565b9050612793888660400151613bf5565b60408601526127a061266c565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b81526004016127d29493929190615976565b6000604051808303818588803b1580156127eb57600080fd5b505af11580156127ff573d6000803e3d6000fd5b505050505061280d836136c4565b15612208576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a082319061285a908a9060040161564e565b60206040518083038186803b15801561287257600080fd5b505afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa91906153ee565b90506125e684610c038385613c7c565b6128c5858386613755565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e7090612930906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615640565b600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b505afa1580156129b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d591906148b5565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161125c919061564e565b876001600160a01b0316638fcbaf0c88612a1d61266c565b8989898989896040518963ffffffff1660e01b8152600401612a46989796959493929190615723565b600060405180830381600087803b158015612a6057600080fd5b505af1158015612a74573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612abd57600080fd5b505afa158015612ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af591906148b5565b9050612b0381878588613681565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611a8092919061580d565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b505afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba891906148b5565b9050612bb681878588613681565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612bfe908690600401615cfa565b600060405180830381600087803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610ec290309060040161564e565b612c81816136c4565b15612c9257612c8f8161370b565b90505b612cae612c9d61266c565b6001600160a01b038416908361383d565b5050565b612cbd858386613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612d05908590600401615cfa565b600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b6001600160a01b038516331480612d9157506001600160a01b03851630145b612dad5760405162461bcd60e51b8152600401610a6990615b5c565b60608167ffffffffffffffff81118015612dc657600080fd5b50604051908082528060200260200182016040528015612df0578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612e0c57600080fd5b50604051908082528060200260200182016040528015612e36578160200160208202803683370190505b50905060005b83811015612fa657612e53858583818110610b8e57fe5b612e6f5760405162461bcd60e51b8152600401610a6990615c38565b8551600090868684818110612e8057fe5b9050604002016000013581518110612e9457fe5b60200260200101519050866060015115612ee257612eb181613c92565b848381518110612ebd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f9d565b612eeb81613c95565b612f7857612ef881613c92565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612f23919061564e565b60206040518083038186803b158015612f3b57600080fd5b505afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7391906153ee565b612f84565b876001600160a01b0316315b838381518110612f9057fe5b6020026020010181815250505b50600101612e3c565b5084606001511561303d57612fb961266c565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401612fe6929190615686565b60006040518083038186803b158015612ffe57600080fd5b505afa158015613012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261303a9190810190614c6e565b90505b61304b888660400151613ca2565b604086015261305861266c565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016130899493929190615976565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156130d657600080fd5b50604051908082528060200260200182016040528015613100578160200160208202803683370190505b50905085606001511561319d5761311561266c565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b8152600401613142929190615686565b60006040518083038186803b15801561315a57600080fd5b505afa15801561316e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131969190810190614c6e565b905061329b565b60005b848110156132995786516000908787848181106131b957fe5b90506040020160000135815181106131cd57fe5b602002602001015190506131e081613c95565b61326d576131ed81613c92565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401613218919061564e565b60206040518083038186803b15801561323057600080fd5b505afa158015613244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326891906153ee565b613279565b886001600160a01b0316315b83838151811061328557fe5b6020908102919091010152506001016131a0565b505b60005b8481101561265f576132f88686838181106132b557fe5b90506040020160200135610c038584815181106132ce57fe5b60200260200101518585815181106132e257fe5b6020026020010151613c7c90919063ffffffff16565b60010161329e565b61332b7f00000000000000000000000000000000000000000000000000000000000000008386613755565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161337b9190615cfa565b602060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b613441858386613755565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611e4a93929190615d1a565b600061348082613d18565b9392505050565b613492858386613755565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cf57600080fd5b505afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350791906148b5565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135519086908890600401615d03565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b50505050611ea882826001600160a01b0316635427c938866040518263ffffffff1660e01b81526004016109b89190615cfa565b60006135be826136c4565b6135c857816135d1565b6135d18261370b565b90505b919050565b6135e8814710156101a3613d2f565b6000826001600160a01b03168260405161360190613c92565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b5050905061176d816101a4613d2f565b6001600160a01b0383163014613677576136776001600160a01b0385168484613b56565b6106df81836136ac565b600061368e858484613755565b90506136a46001600160a01b038616858361383d565b949350505050565b6136b5826136c4565b15612cae57612cae8282613742565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061371984613d18565b9150915061372684613d3d565b1561348057600082559392505050565b60ff81901d9081180390565b600061374d83613d84565b919091555050565b6000613760836135b3565b90506001600160a01b0382163014613480576001600160a01b038216331461379a5760405162461bcd60e51b8152600401610a6990615b5c565b6134808285835b806137ab5761176d565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106137db57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061382657fe5b602002602001018181525050610d3b858383613de2565b80158015906138e157506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061388e90309086906004016156e0565b60206040518083038186803b1580156138a657600080fd5b505afa1580156138ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138de91906153ee565b15155b1561396a5761396a8363095ea7b360e01b8460006040516024016139069291906157f1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f30565b61176d8363095ea7b360e01b848460405160240161390692919061580d565b8060005b81811015610d3b578383828181106139a157fe5b90506020020160208101906139b69190614899565b6001600160a01b0316634b820093866040518263ffffffff1660e01b81526004016139e1919061564e565b602060405180830381600087803b1580156139fb57600080fd5b505af1158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a339190614ca1565b5060010161398d565b8060608167ffffffffffffffff81118015613a5657600080fd5b50604051908082528060200260200182016040528015613a9057816020015b613a7d614481565b815260200190600190039081613a755790505b50905060005b82811015613b22576040805160a081019091528060038152602001868684818110613abd57fe5b9050602002016020810190613ad29190614899565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613b0f57fe5b6020908102919091010152600101613a96565b50613b2b61266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016121da91906158d5565b61176d8363a9059cbb60e01b848460405160240161390692919061580d565b606060006060846001600160a01b031684604051613b9391906155ff565b6000604051808303816000865af19150503d8060008114613bd0576040519150601f19603f3d011682016040523d82523d6000602084013e613bd5565b606091505b5091509150613be48282613fd0565b925050505b92915050565b60601c90565b60606000836003811115613c0557fe5b1415613c1b57613c1482613ffa565b9050613be9565b6001836003811115613c2957fe5b1480613c4057506002836003811115613c3e57fe5b145b80613c5657506003836003811115613c5457fe5b145b15613c6457613c1482613ffa565b60405162461bcd60e51b8152600401610a6990615c01565b6000613c8c838311156001613d2f565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613cb257fe5b1415613cc157613c1482614037565b6001836003811115613ccf57fe5b1415613cde57613c1482614080565b6002836003811115613cec57fe5b1415613cfb57613c14826140c6565b6003836003811115613d0957fe5b1415613c6457613c14826140f2565b600080613d2483613d84565b915081549050915091565b81612cae57612cae81614125565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613d9183614152565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613dc3929190615640565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613dfc57600080fd5b50604051908082528060200260200182016040528015613e3657816020015b613e23614481565b815260200190600190039081613e1b5790505b50905060005b8351811015613ece576040805160a081019091528060038152602001858381518110613e6457fe5b60200260200101516001600160a01b03168152602001848381518110613e8657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613ebb57fe5b6020908102919091010152600101613e3c565b50613ed761266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613f0291906158d5565b600060405180830381600087803b158015613f1c57600080fd5b505af11580156115a3573d6000803e3d6000fd5b60006060836001600160a01b031683604051613f4c91906155ff565b6000604051808303816000865af19150503d8060008114613f89576040519150601f19603f3d011682016040523d82523d6000602084013e613f8e565b606091505b50915091506000821415613fa6573d6000803e3d6000fd5b6106df815160001480613fc8575081806020019051810190613fc89190614ca1565b6101a2613d2f565b60608215613fdf575080613be9565b815115613fef5781518083602001fd5b613be96101ae614125565b6060600061400783614175565b9050600181600381111561401757fe5b141561402e576140268361418b565b9150506135d4565b829150506135d4565b60606000614044836141dd565b9050600081600281111561405457fe5b141561406357614026836141f3565b600181600281111561407157fe5b141561402e5761402683614256565b6060600061408d836141dd565b600281111561409857fe5b905060ff81166140ac5761402683826142a9565b60015b60ff168160ff16141561402e57614026838261430b565b606060006140d3836141dd565b60028111156140de57fe5b905060ff811661402e5761402683826142a9565b606060006140ff836141dd565b600281111561410a57fe5b905060ff811661411e5761402683826142a9565b60026140af565b61414f817f42414c0000000000000000000000000000000000000000000000000000000000614366565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6000818060200190518101906135d19190615178565b6060806000614199846143c7565b915091506141a6826143ea565b6141b057836136a4565b600182826040516020016141c6939291906159ea565b604051602081830303815290604052949350505050565b6000818060200190518101906135d191906150f9565b606060008061420184614454565b9150915061420e826136c4565b1561424c5761421c8261370b565b915060008282604051602001614234939291906159c9565b604051602081830303815290604052925050506135d4565b83925050506135d4565b606060006142638361446b565b905061426e816136c4565b1561402e5761427c8161370b565b90506001816040516020016142929291906159b2565b6040516020818303038152906040529150506135d4565b60606000806142b785614454565b915091506142c4826136c4565b15614301576142d28261370b565b91508382826040516020016142e993929190615d6b565b60405160208183030381529060405292505050613be9565b8492505050613be9565b606060006143188461446b565b9050614323816136c4565b1561435d576143318161370b565b90508281604051602001614346929190615d58565b604051602081830303815290604052915050613be9565b83915050613be9565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906143df9190615194565b909590945092505050565b600080805b835181101561444d57600084828151811061440657fe5b60200260200101519050614419816136c4565b15614444576144278161370b565b85838151811061443357fe5b602002602001018181525050600192505b506001016143ef565b5092915050565b600080828060200190518101906143df9190615142565b6000818060200190518101906134809190615115565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613be981615e17565b60008083601f8401126144cd578182fd5b50813567ffffffffffffffff8111156144e4578182fd5b60208301915083602080830285010111156144fe57600080fd5b9250929050565b600082601f830112614515578081fd5b813561452861452382615dad565b615d86565b81815291506020808301908481018184028601820187101561454957600080fd5b60005b8481101561457157813561455f81615e17565b8452928201929082019060010161454c565b505050505092915050565b600082601f83011261458c578081fd5b813561459a61452382615dad565b818152915060208083019084810160005b84811015614571578135870160a080601f19838c030112156145cc57600080fd5b6145d581615d86565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561461757600080fd5b6146258c8885870101614747565b908201528652505092820192908201906001016145ab565b60008083601f84011261464e578182fd5b50813567ffffffffffffffff811115614665578182fd5b6020830191508360206040830285010111156144fe57600080fd5b600082601f830112614690578081fd5b813561469e61452382615dad565b8181529150602080830190848101818402860182018710156146bf57600080fd5b60005b84811015614571578135845292820192908201906001016146c2565b600082601f8301126146ee578081fd5b81516146fc61452382615dad565b81815291506020808301908481018184028601820187101561471d57600080fd5b60005b8481101561457157815184529282019290820190600101614720565b8035613be981615e2c565b600082601f830112614757578081fd5b813567ffffffffffffffff81111561476d578182fd5b6147806020601f19601f84011601615d86565b915080825283602082850101111561479757600080fd5b8060208401602084013760009082016020015292915050565b8035613be981615e47565b803560028110613be957600080fd5b6000608082840312156147db578081fd5b6147e56080615d86565b9050813567ffffffffffffffff808211156147ff57600080fd5b61480b85838601614505565b8352602084013591508082111561482157600080fd5b61482d85838601614680565b6020840152604084013591508082111561484657600080fd5b5061485384828501614747565b604083015250614866836060840161473c565b606082015292915050565b600060808284031215614882578081fd5b50919050565b803560ff81168114613be957600080fd5b6000602082840312156148aa578081fd5b813561348081615e17565b6000602082840312156148c6578081fd5b815161348081615e17565b600080600080608085870312156148e6578283fd5b84356148f181615e17565b9350602085013561490181615e17565b93969395505050506040820135916060013590565b60008060006040848603121561492a578081fd5b833561493581615e17565b9250602084013567ffffffffffffffff811115614950578182fd5b61495c868287016144bc565b9497909650939450505050565b6000806000806060858703121561497e578182fd5b843561498981615e17565b9350602085013561499981615e2c565b9250604085013567ffffffffffffffff808211156149b5578384fd5b818701915087601f8301126149c8578384fd5b8135818111156149d6578485fd5b8860208285010111156149e7578485fd5b95989497505060200194505050565b600080600060608486031215614a0a578081fd5b8335614a1581615e17565b95602085013595506040909401359392505050565b600080600060408486031215614a3e578081fd5b833567ffffffffffffffff811115614a54578182fd5b614a60868287016144bc565b909790965060209590950135949350505050565b60008060208385031215614a86578182fd5b823567ffffffffffffffff811115614a9c578283fd5b614aa8858286016144bc565b90969095509350505050565b60006020808385031215614ac6578182fd5b825167ffffffffffffffff811115614adc578283fd5b8301601f81018513614aec578283fd5b8051614afa61452382615dad565b8181528381019083850185840285018601891015614b16578687fd5b8694505b83851015614b38578051835260019490940193918501918501614b1a565b50979650505050505050565b60008060008060608587031215614b59578182fd5b843567ffffffffffffffff80821115614b70578384fd5b818701915087601f830112614b83578384fd5b8135614b9161452382615dad565b808282526020808301925080860160a08d838288028a01011115614bb357898afd5b8997505b85881015614c365780828f031215614bcd57898afd5b614bd681615d86565b614be08f846147b0565b8152614bee8f8585016144b1565b8185015260408381013590820152614c098f606085016144b1565b6060820152614c1b8f608085016144b1565b60808201528552600197909701969382019390810190614bb7565b509199508a013597505050604088013592505080821115614c55578384fd5b50614c628782880161463d565b95989497509550505050565b600060208284031215614c7f578081fd5b815167ffffffffffffffff811115614c95578182fd5b6136a4848285016146de565b600060208284031215614cb2578081fd5b815161348081615e2c565b60008060008060008060c08789031215614cd5578384fd5b8635614ce081615e2c565b95506020870135614cf081615e17565b945060408701359350614d068860608901614888565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614d3a578485fd5b873596506020880135614d4c81615e47565b95506040880135614d5c81615e17565b94506060880135614d6c81615e17565b9350608088013567ffffffffffffffff80821115614d88578283fd5b614d948b838c016147ca565b945060a08a0135915080821115614da9578283fd5b50614db68a828b0161463d565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614de3578081fd5b873596506020880135614df581615e47565b95506040880135614e0581615e17565b94506060880135614e1581615e17565b9350608088013567ffffffffffffffff811115614e30578182fd5b614e3c8a828b016147ca565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614e70578283fd5b8535614e7b81615e17565b94506020860135614e8b81615e17565b93506040860135614e9b81615e17565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614ecf578182fd5b8835614eda81615e17565b97506020890135614eea81615e17565b965060408901359550606089013594506080890135614f0881615e2c565b9350614f178a60a08b01614888565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614f4e578081fd5b8735614f5981615e17565b96506020880135614f6981615e17565b95506040880135945060608801359350614f868960808a01614888565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614fb4578182fd5b8235614fbf81615e17565b946020939093013593505050565b60008060008060008060c08789031215614fe5578384fd5b8635614ff081615e17565b9550602087013561500081615e17565b9450604087013561501081615e17565b9350606087013561502081615e17565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561504f578182fd5b843561505a81615e17565b9350602085013561506a81615e17565b9250604085013561507a81615e17565b9396929550929360600135925050565b60008060008060008060c087890312156150a2578384fd5b86356150ad81615e17565b955060208701356150bd81615e17565b945060408701356150cd81615e17565b93506060870135925060808701356150e481615e2c565b8092505060a087013590509295509295509295565b60006020828403121561510a578081fd5b815161348081615e3a565b60008060408385031215615127578182fd5b825161513281615e3a565b6020939093015192949293505050565b600080600060608486031215615156578081fd5b835161516181615e3a565b602085015160409095015190969495509392505050565b600060208284031215615189578081fd5b815161348081615e47565b6000806000606084860312156151a8578081fd5b83516151b381615e47565b602085015190935067ffffffffffffffff8111156151cf578182fd5b6151db868287016146de565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e03121561520d578485fd5b6152178d8d6147bb565b9a5067ffffffffffffffff8060208e01351115615232578586fd5b6152428e60208f01358f0161457c565b9a508060408e01351115615254578586fd5b6152648e60408f01358f016144bc565b909a5098506152768e60608f01614871565b97508060e08e01351115615288578586fd5b6152988e60e08f01358f016144bc565b90975095506101008d013594506101208d013593506101408d01358110156152be578283fd5b506152d08d6101408e01358e0161463d565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215615301578384fd5b863567ffffffffffffffff80821115615318578586fd5b9088019060c0828b03121561532b578586fd5b61533560c0615d86565b823581526153468b602085016147bb565b6020820152604083013561535981615e17565b604082015261536b8b606085016144b1565b60608201526080830135608082015260a08301358281111561538b578788fd5b6153978c828601614747565b60a0830152508098505050506153b08860208901614871565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156153e7578081fd5b5035919050565b6000602082840312156153ff578081fd5b5051919050565b60008060408385031215615418578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561547357813561545881615e17565b6001600160a01b031687529582019590820190600101615445565b509495945050505050565b60008284526020808501945082825b858110156154735781358752958201959082019060010161548d565b6000815180845260208085019450808401835b83811015615473578151875295820195908201906001016154bc565b15159052565b600081518084526154f6816020860160208601615dcd565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561554f5783516001600160a01b03168352928401929184019160010161552a565b50508285015191508581038387015261556881836154a9565b925050506040830151848203604086015261558382826154de565b915050606083015161559860608601826154d8565b509392505050565b80356155ab81615e17565b6001600160a01b0390811683526020820135906155c782615e2c565b90151560208401526040820135906155de82615e17565b16604083015260608101356155f281615e2c565b8015156060840152505050565b60008251615611818460208701615dcd565b9190910192915050565b6000845161562d818460208901615dcd565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156156d25785518516835294830194918301916001016156b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156158b8576020833561589d81615e17565b6001600160a01b031683529283019290910190600101615888565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561595e578151805161590781615e03565b8552808701516001600160a01b031687860152858101518686015260608082015161593482880182615429565b50506080908101519061594986820183615429565b505060a09390930192908501906001016158f2565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b038086166020840152808516604084015250608060608301526159a8608083018461550a565b9695505050505050565b604081016159bf84615df9565b9281526020015290565b606081016159d685615df9565b938152602081019290925260409091015290565b60006159f585615e03565b84825260606020830152615a0c60608301856154a9565b9050826040830152949350505050565b6000610120808301615a2d8c615e0d565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615ad4578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615ac0818801836154de565b978601979650505090830190600101615a54565b505050508381036040850152615aeb818a8c615436565b915050615afb60608401886155a0565b82810360e0840152615b0e81868861547e565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615c8a81615e0d565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615cd86101a08401826154de565b915050615ce860208301866155a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615da557600080fd5b604052919050565b600067ffffffffffffffff821115615dc3578081fd5b5060209081020190565b60005b83811015615de8578181015183820152602001615dd0565b838111156106df5750506000910152565b6003811061414f57fe5b6004811061414f57fe5b6002811061414f57fe5b6001600160a01b038116811461414f57600080fd5b801515811461414f57600080fd5b6003811061414f57600080fd5b6004811061414f57600080fdfea26469706673582212201ec40c4a4738e1dd9206f7dbef6a97a907fb8d94ee88550dbda97e3e5459c62364736f6c6343000701003360c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x6D08 CODESIZE SUB DUP1 PUSH3 0x6D08 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x21A JUMP JUMPDEST DUP4 DUP4 DUP4 DUP8 DUP5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD3 SWAP2 SWAP1 PUSH3 0x318 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 ADDRESS SWAP1 DUP4 SWAP1 PUSH3 0x102 SWAP1 PUSH3 0x20C JUMP JUMPDEST PUSH3 0x110 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x33E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x12D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP5 SWAP1 SHL SWAP1 SWAP4 AND PUSH2 0x100 MSTORE POP ISZERO ISZERO PUSH1 0xF8 SHL PUSH2 0x120 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x16D JUMPI PUSH1 0x0 PUSH3 0x1E4 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E4 SWAP2 SWAP1 PUSH3 0x318 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x140 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x160 MSTORE POP PUSH3 0x3D9 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x9F6 DUP1 PUSH3 0x6312 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x232 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x23F DUP2 PUSH3 0x3C0 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x252 DUP2 PUSH3 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x265 DUP2 PUSH3 0x3C0 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD SWAP1 SWAP4 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x27B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x298 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2AC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x2BB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x2DC JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP12 LT ISZERO PUSH3 0x2F4 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH3 0x307 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x38D JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x32A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x337 DUP2 PUSH3 0x3C0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP4 MSTORE DUP1 DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x377 DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x38D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x3AA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x390 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x3BA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0xF8 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x5E8A PUSH3 0x488 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6F4 MSTORE DUP1 PUSH2 0x79D MSTORE DUP1 PUSH2 0x7C8 MSTORE DUP1 PUSH2 0xC45 MSTORE DUP1 PUSH2 0xC71 MSTORE DUP1 PUSH2 0xD14 MSTORE DUP1 PUSH2 0x3305 MSTORE DUP1 PUSH2 0x3331 MSTORE POP DUP1 PUSH2 0xC24 MSTORE DUP1 PUSH2 0xF2F MSTORE DUP1 PUSH2 0xFD3 MSTORE DUP1 PUSH2 0x33D4 MSTORE POP DUP1 PUSH2 0x7F1 MSTORE DUP1 PUSH2 0x172E MSTORE POP DUP1 PUSH2 0x12ED MSTORE DUP1 PUSH2 0x2577 MSTORE POP DUP1 PUSH2 0x3D93 MSTORE POP DUP1 PUSH2 0x2215 MSTORE POP DUP1 PUSH2 0x2315 MSTORE DUP1 PUSH2 0x266E MSTORE POP POP PUSH2 0x5E8A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AB6E03C GT PUSH2 0x184 JUMPI DUP1 PUSH4 0x959FC17A GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xD80952D5 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEFE69108 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xF4DD54B0 EQ PUSH2 0x637 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x5F1 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xB064B376 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xB064B376 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x5A5 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x5B8 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x959FC17A EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x57F JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x941E849B EQ PUSH2 0x559 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x51E JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0x837F9BCB EQ PUSH2 0x4E5 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x49D JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x3F85D390 GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x4F06A70B GT PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x611B90DD GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x477 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x4F06A70B EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x5001FE75 EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0x52B88746 EQ PUSH2 0x43E JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x44B6AC74 GT PUSH2 0x222 JUMPI DUP1 PUSH4 0x44B6AC74 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x48699D58 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x4E9D9BAB EQ PUSH2 0x405 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x433B0865 EQ PUSH2 0x3CC JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x294 JUMPI DUP1 PUSH4 0x2CBEC84E GT PUSH2 0x279 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x311C5C57 EQ PUSH2 0x3A6 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x1C982441 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x2C25EFE1 EQ PUSH2 0x36D JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x10F3AAFF GT PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x10F3AAFF EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x138FDC2C EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x347 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x2F6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F4 PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x4A74 JUMP JUMPDEST PUSH2 0x64A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F4 PUSH2 0x304 CALLDATASIZE PUSH1 0x4 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0x6E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31E PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EC JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D1 JUMP JUMPDEST PUSH2 0xC1F JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x37B CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0xD42 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x52E8 JUMP JUMPDEST PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x111A JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A2A JUMP JUMPDEST PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x508A JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x15AD JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x4916 JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1ADE JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x4FCD JUMP JUMPDEST PUSH2 0x1C69 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x503A JUMP JUMPDEST PUSH2 0x1EB0 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1FCE JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x498 CALLDATASIZE PUSH1 0x4 PUSH2 0x508A JUMP JUMPDEST PUSH2 0x2009 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x503A JUMP JUMPDEST PUSH2 0x210F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C5 PUSH2 0x2213 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4969 JUMP JUMPDEST PUSH2 0x2237 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B44 JUMP JUMPDEST PUSH2 0x233B JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x250B JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CBD JUMP JUMPDEST PUSH2 0x2547 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x52C CALLDATASIZE PUSH1 0x4 PUSH2 0x4F34 JUMP JUMPDEST PUSH2 0x25F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C5 PUSH2 0x266C JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DC9 JUMP JUMPDEST PUSH2 0x2690 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x28BA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x57A CALLDATASIZE PUSH1 0x4 PUSH2 0x4EB3 JUMP JUMPDEST PUSH2 0x2A05 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x58D CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2A82 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FA2 JUMP JUMPDEST PUSH2 0x2C78 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2CB2 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D20 JUMP JUMPDEST PUSH2 0x2D72 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x48D1 JUMP JUMPDEST PUSH2 0x3300 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x3436 JUMP JUMPDEST PUSH2 0x62A PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x3475 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x3487 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6DF JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x662 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x64E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x6EE DUP3 PUSH2 0x35B3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB0E38900 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x73E SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x76A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x78E SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x7C3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x35D9 JUMP JUMPDEST PUSH2 0x6DF PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x862 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x886 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2495A599 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FB SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x909 DUP2 DUP4 DUP7 DUP10 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9AA5D46200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9AA5D462 SWAP1 PUSH2 0x956 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x984 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4D778AD1 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0xA24 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA4D JUMPI POP ADDRESS PUSH2 0xA42 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xA72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA8C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0xAA3 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0xACE JUMPI PUSH2 0xAB1 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xABD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA75 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0xAE2 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4AB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC10 JUMPI PUSH2 0xB9D DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST PUSH2 0xC08 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBC8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC03 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xBE2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0xBF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3736 JUMP JUMPDEST PUSH2 0x3742 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB77 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC6B PUSH32 0x0 PUSH32 0x0 DUP5 DUP8 PUSH2 0x3681 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA598CB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBB SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD0D SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xDC3 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA0712D6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xA0712D68 SWAP1 PUSH2 0xE0B SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE5D SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5BCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xEC2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP8 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH2 0xF29 DUP3 PUSH2 0x35B3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7A SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFCC SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x6DF PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST CALLER PUSH2 0x1008 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1031 JUMPI POP ADDRESS PUSH2 0x1026 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x104D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x105A DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x1072 JUMPI PUSH2 0x106C DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x370B JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x107C PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10AE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C6F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x110B DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0xA0D JUMPI PUSH2 0xA0D DUP3 DUP3 PUSH2 0x3742 JUMP JUMPDEST PUSH2 0x1125 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1176 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x119A SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x11E2 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x125C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1288 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12AC SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP3 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0x1326 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5875 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1378 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x6DF DUP3 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH2 0x138D DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x139E JUMPI PUSH2 0x139B DUP4 PUSH2 0x370B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x141D JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1418 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH2 0x1490 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1490 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x14D5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x14CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x14D5 DUP7 DUP3 DUP7 PUSH2 0x37A1 JUMP JUMPDEST PUSH2 0x14E9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x1537 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5849 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1589 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x1594 DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x15A3 JUMPI PUSH2 0x15A3 DUP4 DUP3 PUSH2 0x3742 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15B8 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1609 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x162D SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDB006A7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xDB006A75 SWAP1 PUSH2 0x1675 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16C7 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO PUSH2 0x16E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x125C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x1762 JUMPI PUSH2 0x175D DUP4 DUP4 DUP4 PUSH2 0x3989 JUMP JUMPDEST PUSH2 0x176D JUMP JUMPDEST PUSH2 0x176D DUP4 DUP4 DUP4 PUSH2 0x3A3C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x177D DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F2 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1843 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1867 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x18D4 SWAP1 DUP5 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1901 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1925 SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x196F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x199B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BF SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP3 DUP8 DUP4 DUP8 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A40 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A4E DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6E553F65 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A80 SWAP3 SWAP2 SWAP1 PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AD2 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP4 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B51 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC6 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD4 DUP3 DUP3 DUP7 DUP10 PUSH2 0x3681 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFBF178DB DUP5 DUP9 DUP9 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x56FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C5C SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x15A3 DUP5 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CDC SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CEA DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE2BBB15800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x1D35 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1DAF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFF SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP9 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH2 0x1E18 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA785A5E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E9C SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x1EA8 DUP3 DUP3 PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EBB DUP5 DUP3 DUP6 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1F03 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FB8 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x3B56 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2012 DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2023 JUMPI PUSH2 0x2020 DUP4 PUSH2 0x370B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2066 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x205B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x2066 DUP6 DUP8 DUP6 PUSH2 0x37A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x20B2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2103 SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x110B DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x215E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2182 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2190 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x21DA SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x224C JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2268 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B93 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2287 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5662 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x22F6 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x561B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1EA8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x3B75 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x241B JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x235D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x23A6 JUMPI POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x238F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x23C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23D0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH2 0x23E7 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2412 JUMPI PUSH2 0x23F5 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2401 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x233E JUMP JUMPDEST POP PUSH2 0x2424 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2450 SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH2 0x249C DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST PUSH2 0x24B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST PUSH2 0x2503 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x24C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP7 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x24DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x24F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x3742 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2485 JUMP JUMPDEST PUSH2 0x2516 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xF714CE DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP3 SWAP2 SWAP1 PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x25B8 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x57AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x260A PUSH2 0x266C JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2631 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x576C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x265F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x26AF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26D6 DUP9 PUSH2 0x3BEF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x26E3 DUP4 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x26EE JUMPI PUSH1 0x0 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2733 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x275F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2783 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x2793 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3BF5 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x27A0 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27D2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x280D DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2208 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x285A SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28AA SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x25E6 DUP5 PUSH2 0xC03 DUP4 DUP6 PUSH2 0x3C7C JUMP JUMPDEST PUSH2 0x28C5 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x441A3E7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x441A3E70 SWAP1 PUSH2 0x2930 SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 ADD PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x295E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29D5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x125C SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x2A1D PUSH2 0x266C JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A46 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AD1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AF5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B03 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F4F21E2 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A80 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BA8 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB6 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2BFE SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0xEC2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH2 0x2C81 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2C92 JUMPI PUSH2 0x2C8F DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2CAE PUSH2 0x2C9D PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x383D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2CBD DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2D05 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2D91 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2DAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DF0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2E0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E36 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FA6 JUMPI PUSH2 0x2E53 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST PUSH2 0x2E6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2E80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2EE2 JUMPI PUSH2 0x2EB1 DUP2 PUSH2 0x3C92 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2EBD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0x2EEB DUP2 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x2F78 JUMPI PUSH2 0x2EF8 DUP2 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F23 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F73 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x2F84 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2E3C JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x303D JUMPI PUSH2 0x2FB9 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FE6 SWAP3 SWAP2 SWAP1 PUSH2 0x5686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3012 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x303A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C6E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x304B DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3CA2 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x3058 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3089 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x30D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3100 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x319D JUMPI PUSH2 0x3115 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3142 SWAP3 SWAP2 SWAP1 PUSH2 0x5686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x315A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3196 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x329B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3299 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x31B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x31CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x31E0 DUP2 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x326D JUMPI PUSH2 0x31ED DUP2 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3218 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3244 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3268 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x3279 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x31A0 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x265F JUMPI PUSH2 0x32F8 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x32B5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC03 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x32CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x32E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3C7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x329E JUMP JUMPDEST PUSH2 0x332B PUSH32 0x0 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDE0E9A3E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x337B SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33CD SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3441 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBA087652 DUP5 DUP7 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3480 DUP3 PUSH2 0x3D18 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3492 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3507 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5FE138B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x5FE138B SWAP1 PUSH2 0x3551 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x356B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x357F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1EA8 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5427C938 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35BE DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x35C8 JUMPI DUP2 PUSH2 0x35D1 JUMP JUMPDEST PUSH2 0x35D1 DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35E8 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3601 SWAP1 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x363E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x176D DUP2 PUSH2 0x1A4 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x3677 JUMPI PUSH2 0x3677 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x6DF DUP2 DUP4 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368E DUP6 DUP5 DUP5 PUSH2 0x3755 JUMP JUMPDEST SWAP1 POP PUSH2 0x36A4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 DUP4 PUSH2 0x383D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x36B5 DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2CAE JUMPI PUSH2 0x2CAE DUP3 DUP3 PUSH2 0x3742 JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3719 DUP5 PUSH2 0x3D18 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3726 DUP5 PUSH2 0x3D3D JUMP JUMPDEST ISZERO PUSH2 0x3480 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374D DUP4 PUSH2 0x3D84 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP4 PUSH2 0x35B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x3480 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x379A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x3480 DUP3 DUP6 DUP4 JUMPDEST DUP1 PUSH2 0x37AB JUMPI PUSH2 0x176D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DB JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3826 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD3B DUP6 DUP4 DUP4 PUSH2 0x3DE2 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x38E1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x388E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x56E0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38DE SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x396A JUMPI PUSH2 0x396A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x57F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3F30 JUMP JUMPDEST PUSH2 0x176D DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD3B JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x39A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x39B6 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E1 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A33 SWAP2 SWAP1 PUSH2 0x4CA1 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x398D JUMP JUMPDEST DUP1 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3A90 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3A7D PUSH2 0x4481 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3A75 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B22 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x3ABD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AD2 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3B0F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3A96 JUMP JUMPDEST POP PUSH2 0x3B2B PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21DA SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH2 0x176D DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3B93 SWAP2 SWAP1 PUSH2 0x55FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BD0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BD5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BE4 DUP3 DUP3 PUSH2 0x3FD0 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C05 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3C1B JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x3FFA JUMP JUMPDEST SWAP1 POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C29 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x3C40 JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C3E JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x3C56 JUMPI POP PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C54 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x3C64 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x3FFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C01 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C8C DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3D2F JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CB2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CC1 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x4037 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CCF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CDE JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x4080 JUMP JUMPDEST PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CEC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CFB JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x40C6 JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D09 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3C64 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D24 DUP4 PUSH2 0x3D84 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0x2CAE JUMPI PUSH2 0x2CAE DUP2 PUSH2 0x4125 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3D91 DUP4 PUSH2 0x4152 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3DC3 SWAP3 SWAP2 SWAP1 PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3DFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3E36 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3E23 PUSH2 0x4481 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3E1B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3ECE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3E64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3E86 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3EBB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3E3C JUMP JUMPDEST POP PUSH2 0x3ED7 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F02 SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3F4C SWAP2 SWAP1 PUSH2 0x55FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3F8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x3FA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x3FC8 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3FC8 SWAP2 SWAP1 PUSH2 0x4CA1 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3FDF JUMPI POP DUP1 PUSH2 0x3BE9 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3FEF JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3BE9 PUSH2 0x1AE PUSH2 0x4125 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4007 DUP4 PUSH2 0x4175 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4017 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 PUSH2 0x418B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4044 DUP4 PUSH2 0x41DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4054 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4063 JUMPI PUSH2 0x4026 DUP4 PUSH2 0x41F3 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4071 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x408D DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4098 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x40AC JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x430B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40D3 DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x40DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40FF DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x410A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x411E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x40AF JUMP JUMPDEST PUSH2 0x414F DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x4366 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x5178 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x4199 DUP5 PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x41A6 DUP3 PUSH2 0x43EA JUMP JUMPDEST PUSH2 0x41B0 JUMPI DUP4 PUSH2 0x36A4 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x41C6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x50F9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x4201 DUP5 PUSH2 0x4454 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x420E DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x424C JUMPI PUSH2 0x421C DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4234 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x35D4 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4263 DUP4 PUSH2 0x446B JUMP JUMPDEST SWAP1 POP PUSH2 0x426E DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x402E JUMPI PUSH2 0x427C DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4292 SWAP3 SWAP2 SWAP1 PUSH2 0x59B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x42B7 DUP6 PUSH2 0x4454 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x42C4 DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x4301 JUMPI PUSH2 0x42D2 DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP2 POP DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x42E9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3BE9 JUMP JUMPDEST DUP5 SWAP3 POP POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4318 DUP5 PUSH2 0x446B JUMP JUMPDEST SWAP1 POP PUSH2 0x4323 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x435D JUMPI PUSH2 0x4331 DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4346 SWAP3 SWAP2 SWAP1 PUSH2 0x5D58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3BE9 JUMP JUMPDEST DUP4 SWAP2 POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x43DF SWAP2 SWAP1 PUSH2 0x5194 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x444D JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4406 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x4419 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x4444 JUMPI PUSH2 0x4427 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4433 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x43EF JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x43DF SWAP2 SWAP1 PUSH2 0x5142 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3480 SWAP2 SWAP1 PUSH2 0x5115 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44CD JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44E4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x44FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4515 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4528 PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST PUSH2 0x5D86 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD PUSH2 0x455F DUP2 PUSH2 0x5E17 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x454C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x458C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x459A PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x45CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x45D5 DUP2 PUSH2 0x5D86 JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x4617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4625 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x4747 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45AB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x464E JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4665 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x44FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4690 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x469E PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x46BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x46EE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46FC PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x471D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4720 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4757 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x476D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4780 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x5D86 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E47 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3BE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47DB JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x47E5 PUSH1 0x80 PUSH2 0x5D86 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x47FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x480B DUP6 DUP4 DUP7 ADD PUSH2 0x4505 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482D DUP6 DUP4 DUP7 ADD PUSH2 0x4680 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4853 DUP5 DUP3 DUP6 ADD PUSH2 0x4747 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x4866 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x473C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4882 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3BE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3480 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x48E6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x48F1 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4901 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x492A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4935 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4950 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x495C DUP7 DUP3 DUP8 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x497E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4989 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4999 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x49B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x49C8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x49D6 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x49E7 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A0A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4A15 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A3E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4A54 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4A60 DUP7 DUP3 DUP8 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4A9C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4AA8 DUP6 DUP3 DUP7 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AC6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4ADC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x4AEC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4AFA PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x4B16 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x4B38 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x4B1A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B59 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4B70 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B83 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4B91 PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD PUSH1 0xA0 DUP14 DUP4 DUP3 DUP9 MUL DUP11 ADD ADD GT ISZERO PUSH2 0x4BB3 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP8 POP JUMPDEST DUP6 DUP9 LT ISZERO PUSH2 0x4C36 JUMPI DUP1 DUP3 DUP16 SUB SLT ISZERO PUSH2 0x4BCD JUMPI DUP10 DUP11 REVERT JUMPDEST PUSH2 0x4BD6 DUP2 PUSH2 0x5D86 JUMP JUMPDEST PUSH2 0x4BE0 DUP16 DUP5 PUSH2 0x47B0 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4BEE DUP16 DUP6 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x4C09 DUP16 PUSH1 0x60 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4C1B DUP16 PUSH1 0x80 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP6 MSTORE PUSH1 0x1 SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BB7 JUMP JUMPDEST POP SWAP2 SWAP10 POP DUP11 ADD CALLDATALOAD SWAP8 POP POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x4C55 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4C62 DUP8 DUP3 DUP9 ADD PUSH2 0x463D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C95 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36A4 DUP5 DUP3 DUP6 ADD PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CD5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4CE0 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4CF0 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4D06 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D3A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4D4C DUP2 PUSH2 0x5E47 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4D5C DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4D6C DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4D88 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4D94 DUP12 DUP4 DUP13 ADD PUSH2 0x47CA JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4DA9 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4DB6 DUP11 DUP3 DUP12 ADD PUSH2 0x463D JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4DE3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4DF5 DUP2 PUSH2 0x5E47 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4E05 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4E15 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4E30 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4E3C DUP11 DUP3 DUP12 ADD PUSH2 0x47CA JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4E70 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4E7B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4E8B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4E9B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4ECF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4EDA DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4EEA DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x4F08 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP4 POP PUSH2 0x4F17 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4F4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4F59 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4F69 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4F86 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FB4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4FBF DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4FE5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4FF0 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x5000 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x5010 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x5020 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x504F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x505A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x506A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x507A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x50A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x50AD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x50BD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x50CD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x50E4 DUP2 PUSH2 0x5E2C JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x510A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x5132 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5156 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5161 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5189 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51A8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x51B3 DUP2 PUSH2 0x5E47 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x51DB DUP7 DUP3 DUP8 ADD PUSH2 0x46DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x520D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x5217 DUP14 DUP14 PUSH2 0x47BB JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5232 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5242 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x457C JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5254 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5264 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x5276 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x4871 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5288 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5298 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x52BE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x52D0 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x463D JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5301 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5318 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x532B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5335 PUSH1 0xC0 PUSH2 0x5D86 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x5346 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x47BB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x5359 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x536B DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x538B JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x5397 DUP13 DUP3 DUP7 ADD PUSH2 0x4747 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x53B0 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x4871 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53FF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5418 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 CALLDATALOAD PUSH2 0x5458 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5445 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x548D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x54BC JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x54F6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5DCD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x554F JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x552A JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x5568 DUP2 DUP4 PUSH2 0x54A9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x5583 DUP3 DUP3 PUSH2 0x54DE JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5598 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x54D8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x55AB DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x55C7 DUP3 PUSH2 0x5E2C JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x55DE DUP3 PUSH2 0x5E17 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x55F2 DUP2 PUSH2 0x5E2C JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5611 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x562D DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x5DCD JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x56B4 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x58B8 JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x589D DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5888 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x595E JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x5907 DUP2 PUSH2 0x5E03 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x5934 DUP3 DUP9 ADD DUP3 PUSH2 0x5429 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x5949 DUP7 DUP3 ADD DUP4 PUSH2 0x5429 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58F2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x59A8 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x550A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x59BF DUP5 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x59D6 DUP6 PUSH2 0x5DF9 JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59F5 DUP6 PUSH2 0x5E03 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5A0C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x54A9 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x5A2D DUP13 PUSH2 0x5E0D JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5AD4 JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x5AC0 DUP2 DUP9 ADD DUP4 PUSH2 0x54DE JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5A54 JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5AEB DUP2 DUP11 DUP13 PUSH2 0x5436 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5AFB PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x55A0 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x5B0E DUP2 DUP7 DUP9 PUSH2 0x547E JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x756E7772617070696E67206661696C6564000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x7772617070696E67206661696C65640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x554E48414E444C45445F504F4F4C5F4B494E4400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x5C8A DUP2 PUSH2 0x5E0D JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x5CD8 PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x54DE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5CE8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x55A0 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5DC3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5DE8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DD0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6DF JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0xC4 0xC 0x4A SELFBALANCE CODESIZE 0xE1 0xDD SWAP3 MOD 0xF7 0xDB 0xEF PUSH11 0x97A907FB8D94EE88550DBD 0xA9 PUSH31 0x3E5459C62364736F6C6343000701003360C060405234801561001057600080 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9F6 CODESIZE SUB DUP1 PUSH2 0x9F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH2 0x39 DUP2 PUSH2 0x5D JUMP JUMPDEST POP POP PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x203 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x70 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x74 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC7 JUMP JUMPDEST POP PUSH2 0xEE SWAP3 SWAP2 POP PUSH2 0xF2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x126 DUP2 PUSH2 0x1EB JUMP JUMPDEST DUP1 SWAP4 POP POP PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH2 0x139 DUP2 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x155 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x168 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x176 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x1AF JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x1DC JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7C1 PUSH2 0x235 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x2F0 MSTORE POP DUP1 PUSH1 0x63 MSTORE DUP1 PUSH2 0x201 MSTORE POP PUSH2 0x7C1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"1543:660:86:-:0;;;8361:42:94;8312:91;;1875:326:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2085:6;2106;2114:21;2056:5;2063:7;2402:5:94;-1:-1:-1;;;;;2402:10:94;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:81;;;;;;;;2426:14:94;;;;;::::1;::::0;2464:50:::1;::::0;2435:5;;2499:4:::1;::::0;2506:7;;2464:50:::1;::::0;::::1;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2450:64:94::1;::::0;;;;;::::1;::::0;1593:32:98;;;;;;;;-1:-1:-1;1635:46:98;;;;;;-1:-1:-1;;;;;;1662:19:101;;:66;;1726:1;1662:66;;;1700:6;-1:-1:-1;;;;;1684:30:101;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1653:75:101;;;;;;;;1738:34;;;;;;-1:-1:-1;1543:660:86;;-1:-1:-1;;;;1543:660:86;;;;;;;;;:::o;1462:1008:-1:-;;;;;;1705:3;1693:9;1684:7;1680:23;1676:33;1673:2;;;-1:-1;;1712:12;1673:2;597:6;591:13;609:48;651:5;609:48;:::i;:::-;1890:2;1955:22;;420:13;1764:89;;-1:-1;438:48;420:13;438:48;:::i;:::-;2024:2;2097:22;;241:13;1898:89;;-1:-1;259:56;241:13;259:56;:::i;:::-;2166:2;2213:22;;80:13;2032:97;;-1:-1;5338:13;;5331:21;6790:32;;6780:2;;-1:-1;;6826:12;6780:2;2303:3;2288:19;;2282:26;2174:71;;-1:-1;;;;;;2317:30;;;2314:2;;;-1:-1;;2350:12;2314:2;2437:6;2426:9;2422:22;;;1123:3;1116:4;1108:6;1104:17;1100:27;1090:2;;-1:-1;;1131:12;1090:2;1171:6;1165:13;2328:18;4680:6;4677:30;4674:2;;;-1:-1;;4710:12;4674:2;2024;4337:9;4783;4764:17;;-1:-1;;4760:33;4369:17;;1890:2;4369:17;4429:34;;;4465:22;;;4426:62;4423:2;;;-1:-1;;4491:12;4423:2;2024;4510:22;1264:21;;;1364:16;;;1890:2;1364:16;1361:25;-1:-1;1358:2;;;-1:-1;;1389:12;1358:2;1409:39;1441:6;1890:2;1340:5;1336:16;1890:2;1306:6;1302:17;1409:39;:::i;:::-;2370:84;;;;;;;1667:803;;;;;;;;:::o;2477:291::-;;2606:2;2594:9;2585:7;2581:23;2577:32;2574:2;;;-1:-1;;2612:12;2574:2;767:6;761:13;779:47;820:5;779:47;:::i;:::-;2664:88;2568:200;-1:-1;;;2568:200::o;3712:562::-;;2328:18;;6009:42;;;;5254:5;5998:54;3288:3;3281:65;6009:42;5254:5;5998:54;4109:2;4098:9;4094:18;3146:37;;3930:2;4146;4135:9;4131:18;4124:48;3503:5;4961:12;5118:6;3930:2;3919:9;3915:18;5106:19;3597:52;3642:6;5146:14;3919:9;5146:14;4109:2;3623:5;3619:16;3597:52;:::i;:::-;4783:9;6697:14;-1:-1;;6693:28;3661:39;;;;5146:14;3661:39;;3901:373;-1:-1;;;;3901:373::o;6353:268::-;6418:1;6425:101;6439:6;6436:1;6433:13;6425:101;;;6506:11;;;6500:18;6487:11;;;6480:39;6461:2;6454:10;6425:101;;;6541:6;6538:1;6535:13;6532:2;;;6418:1;6597:6;6592:3;6588:16;6581:27;6532:2;;6402:219;;;:::o;6852:163::-;-1:-1;;;;;5998:54;;6934:58;;6924:2;;7006:1;;6996:12;6924:2;6918:97;:::o;:::-;1543:660:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14060":[{"length":32,"start":8981},{"length":32,"start":9838}],"14062":[{"length":32,"start":8725}],"14433":[{"length":32,"start":15763}],"14838":[{"length":32,"start":4845},{"length":32,"start":9591}],"14840":[{"length":32,"start":2033},{"length":32,"start":5934}],"15519":[{"length":32,"start":3108},{"length":32,"start":3887},{"length":32,"start":4051},{"length":32,"start":13268}],"15521":[{"length":32,"start":1780},{"length":32,"start":1949},{"length":32,"start":1992},{"length":32,"start":3141},{"length":32,"start":3185},{"length":32,"start":3348},{"length":32,"start":13061},{"length":32,"start":13105}]},"linkReferences":{},"object":"6080604052600436106102dc5760003560e01c80637ab6e03c11610184578063959fc17a116100d6578063d80952d51161008a578063efe6910811610064578063efe6910814610604578063f3cab68514610617578063f4dd54b014610637576102dc565b8063d80952d5146105cb578063db4c0e91146105de578063e8210e3c146105f1576102dc565b8063b064b376116100bb578063b064b37614610592578063b6d24737146105a5578063d293f290146105b8576102dc565b8063959fc17a1461056c578063abf6d3991461057f576102dc565b80638b35ac8d116101385780638d928af8116101125780638d928af8146105315780638fe4624f14610546578063941e849b14610559576102dc565b80638b35ac8d146104f85780638c57198b1461050b5780638d64cfbc1461051e576102dc565b80637fd0e5d5116101695780637fd0e5d5146104b057806380db15bd146104d2578063837f9bcb146104e5576102dc565b80637ab6e03c1461048a5780637bc008f51461049d576102dc565b80633f85d3901161023d5780634f06a70b116101f1578063611b90dd116101cb578063611b90dd1461045157806365ca4804146104645780636d307ea814610477576102dc565b80634f06a70b146104185780635001fe751461042b57806352b887461461043e576102dc565b806344b6ac741161022257806344b6ac74146103df57806348699d58146103f25780634e9d9bab14610405576102dc565b80633f85d390146103b9578063433b0865146103cc576102dc565b80631c982441116102945780632cbec84e116102795780632cbec84e146103805780632e6272ea14610393578063311c5c57146103a6576102dc565b80631c9824411461035a5780632c25efe11461036d576102dc565b806310f3aaff116102c557806310f3aaff14610309578063138fdc2c146103345780631836944614610347576102dc565b80630e248fea146102e15780631089e5e3146102f6575b600080fd5b6102f46102ef366004614a74565b61064a565b005b6102f46103043660046149f6565b6106e5565b34801561031557600080fd5b5061031e6107ef565b60405161032b919061596b565b60405180910390f35b6102f4610342366004614e59565b610813565b6102f46103553660046151ec565b610a16565b6102f46103683660046148d1565b610c1f565b6102f461037b366004614e59565b610d42565b6102f461038e3660046149f6565b610f20565b6102f46103a13660046152e8565b610ffa565b6102f46103b4366004614e59565b61111a565b6102f46103c7366004614a2a565b6112ba565b6102f46103da36600461508a565b611384565b6102f46103ed366004614e59565b6115ad565b6102f4610400366004614916565b61172c565b6102f4610413366004614e59565b611772565b6102f4610426366004614e59565b6119cd565b6102f4610439366004614e59565b611ade565b6102f461044c366004614fcd565b611c69565b6102f461045f366004614e59565b611e0d565b6102f461047236600461503a565b611eb0565b6102f4610485366004614e59565b611fce565b6102f461049836600461508a565b612009565b6102f46104ab36600461503a565b61210f565b3480156104bc57600080fd5b506104c5612213565b60405161032b919061564e565b6102f46104e0366004614969565b612237565b6102f46104f3366004614b44565b61233b565b6102f4610506366004614e59565b61250b565b6102f4610519366004614cbd565b612547565b6102f461052c366004614f34565b6125f2565b34801561053d57600080fd5b506104c561266c565b6102f4610554366004614dc9565b612690565b6102f4610567366004614e59565b6128ba565b6102f461057a366004614eb3565b612a05565b6102f461058d366004614e59565b612a82565b6102f46105a0366004614e59565b612b35565b6102f46105b3366004614fa2565b612c78565b6102f46105c6366004614e59565b612cb2565b6102f46105d9366004614d20565b612d72565b6102f46105ec3660046148d1565b613300565b6102f46105ff366004614e59565b6133fb565b6102f4610612366004614e59565b613436565b61062a6106253660046153d6565b613475565b60405161032b9190615cfa565b6102f4610645366004614e59565b613487565b8060005b818110156106df5783838281811061066257fe5b90506020020160208101906106779190614899565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106a2919061564e565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b5050505080600101905061064e565b50505050565b6106ee826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b815260040161073e9190615cfa565b60206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e91906153ee565b90506107c36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016846135d9565b6106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088691906148b5565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c357600080fd5b505afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb91906148b5565b905061090981838689613681565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109569087908990600090600401615d39565b600060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b50505050610a0d83836001600160a01b0316634d778ad1876040518263ffffffff1660e01b81526004016109b89190615cfa565b60206040518083038186803b1580156109d057600080fd5b505afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906153ee565b6136ac565b50505050505050565b33610a246020890189614899565b6001600160a01b03161480610a4d575030610a426020890189614899565b6001600160a01b0316145b610a725760405162461bcd60e51b8152600401610a6990615b5c565b60405180910390fd5b60005b8a51811015610ad75760008b8281518110610a8c57fe5b6020026020010151606001519050610aa3816136c4565b15610ace57610ab18161370b565b8c8381518110610abd57fe5b602002602001015160600181815250505b50600101610a75565b506060610ae261266c565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b1c989796959493929190615a1c565b6000604051808303818588803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b729190810190614ab4565b905060005b82811015610c1057610b9d848483818110610b8e57fe5b905060400201602001356136c4565b610bb95760405162461bcd60e51b8152600401610a6990615c38565b610c08848483818110610bc857fe5b90506040020160200135610c0384878786818110610be257fe5b9050604002016000013581518110610bf657fe5b6020026020010151613736565b613742565b600101610b77565b50505050505050505050505050565b610c6b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613681565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610cbb9190615cfa565b602060405180830381600087803b158015610cd557600080fd5b505af1158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db591906148b5565b9050610dc381878588613681565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e0b908690600401615cfa565b602060405180830381600087803b158015610e2557600080fd5b505af1158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d91906153ee565b15610e7a5760405162461bcd60e51b8152600401610a6990615bca565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610ec290309060040161564e565b60206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1291906153ee565b9050610a0d87868386613653565b610f29826135b3565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610f7a919061564e565b6020604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fcc91906153ee565b90506106df7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b336110086020870187614899565b6001600160a01b031614806110315750306110266020870187614899565b6001600160a01b0316145b61104d5760405162461bcd60e51b8152600401610a6990615b5c565b61105a86608001516136c4565b156110725761106c866080015161370b565b60808701525b600061107c61266c565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016110ae9493929190615c6f565b6020604051808303818588803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061110091906153ee565b905061110b826136c4565b15610a0d57610a0d8282613742565b611125858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561116257600080fd5b505afa158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a91906148b5565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906111e2908690600401615cfa565b600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061125c90309060040161564e565b60206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac91906153ee565b9050610a0d82868386613653565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061132690879087903390600401615875565b602060405180830381600087803b15801561134057600080fd5b505af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137891906153ee565b90506106df82826136ac565b61138d836136c4565b1561139e5761139b8361370b565b92505b60008261141d57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141891906148b5565b611490565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561145857600080fd5b505af115801561146c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149091906148b5565b90506001600160a01b03861630146114d5576001600160a01b03861633146114ca5760405162461bcd60e51b8152600401610a6990615b5c565b6114d58682866137a1565b6114e96001600160a01b038216888661383d565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611537908990899086908a90600401615849565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158991906153ee565b9050611594836136c4565b156115a3576115a38382613742565b5050505050505050565b6115b8858386613755565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f557600080fd5b505afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d91906148b5565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a7590611675908690600401615cfa565b602060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c791906153ee565b156116e45760405162461bcd60e51b8152600401610a6990615b25565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061125c90309060040161564e565b7f0000000000000000000000000000000000000000000000000000000000000000156117625761175d838383613989565b61176d565b61176d838383613a3c565b505050565b61177d858386613755565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f291906148b5565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182f57600080fd5b505afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186791906148b5565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d359906118d49084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600090600401615826565b6040805180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190615406565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a082319061196f90309060040161564e565b60206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf91906153ee565b90506115a382878387613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4091906148b5565b9050611a4e81878588613681565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611a80929190615d03565b602060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad291906153ee565b9050610a0d83826136ac565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1957600080fd5b505afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5191906148b5565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8e57600080fd5b505afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906148b5565b9050611bd482828689613681565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c0b94939291906156fa565b6040805180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190615406565b9150506115a384826136ac565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca457600080fd5b505afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc91906148b5565b9050611cea81878588613681565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d35906000908790600401615640565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611daf90309060040161564e565b60206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff91906153ee565b90506115a388868386613653565b611e18858386613755565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611e4a92919061580d565b602060405180830381600087803b158015611e6457600080fd5b505af1158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906153ee565b9050611ea882826136ac565b505050505050565b611ebb848285613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f03908490600401615cfa565b600060405180830381600087803b158015611f1d57600080fd5b505af1158015611f31573d6000803e3d6000fd5b505050506001600160a01b03821630146106df576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906148b5565b9050610d3b6001600160a01b0382168484613b56565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0857600080fd5b612012836136c4565b15612023576120208361370b565b92505b6001600160a01b0385163014612066576001600160a01b038516331461205b5760405162461bcd60e51b8152600401610a6990615b5c565b6120668587856137a1565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906120b290889088908890600401615826565b6040805180830381600087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121039190615406565b91505061110b826136c4565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561214a57600080fd5b505afa15801561215e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218291906148b5565b905061219081868487613681565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906121da9085908790600401615d03565b600060405180830381600087803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061224c575082155b6122685760405162461bcd60e51b8152600401610a6990615b93565b606063fa6e671d60e01b33868660405160240161228793929190615662565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516122f692869186910161561b565b60408051601f198184030181529190529050611ea86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613b75565b60005b845181101561241b57336001600160a01b031685828151811061235d57fe5b6020026020010151606001516001600160a01b031614806123a65750306001600160a01b031685828151811061238f57fe5b6020026020010151606001516001600160a01b0316145b6123c25760405162461bcd60e51b8152600401610a6990615b5c565b60008582815181106123d057fe5b60200260200101516040015190506123e7816136c4565b15612412576123f58161370b565b86838151811061240157fe5b602002602001015160400181815250505b5060010161233e565b5061242461266c565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b815260040161245091906158d5565b6000604051808303818588803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050505060005b81811015610d3b5761249c838383818110610b8e57fe5b6124b85760405162461bcd60e51b8152600401610a6990615c38565b6125038383838181106124c757fe5b90506040020160200135868585858181106124de57fe5b90506040020160000135815181106124f257fe5b602002602001015160400151613742565b600101612485565b612516858386613755565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611e4a929190615d03565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906125b89030908a908a908a908a908a908a906004016157ad565b600060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf8761260a61266c565b88888888886040518863ffffffff1660e01b8152600401612631979695949392919061576c565b600060405180830381600087803b15801561264b57600080fd5b505af115801561265f573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806126af57506001600160a01b03851630145b6126cb5760405162461bcd60e51b8152600401610a6990615b5c565b60006126d688613bef565b905060006126e3836136c4565b6126ee576000612783565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061273390899060040161564e565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278391906153ee565b9050612793888660400151613bf5565b60408601526127a061266c565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b81526004016127d29493929190615976565b6000604051808303818588803b1580156127eb57600080fd5b505af11580156127ff573d6000803e3d6000fd5b505050505061280d836136c4565b15612208576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a082319061285a908a9060040161564e565b60206040518083038186803b15801561287257600080fd5b505afa158015612886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128aa91906153ee565b90506125e684610c038385613c7c565b6128c5858386613755565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e7090612930906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615640565b600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b505afa1580156129b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d591906148b5565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161125c919061564e565b876001600160a01b0316638fcbaf0c88612a1d61266c565b8989898989896040518963ffffffff1660e01b8152600401612a46989796959493929190615723565b600060405180830381600087803b158015612a6057600080fd5b505af1158015612a74573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612abd57600080fd5b505afa158015612ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af591906148b5565b9050612b0381878588613681565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611a8092919061580d565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b505afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba891906148b5565b9050612bb681878588613681565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612bfe908690600401615cfa565b600060405180830381600087803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610ec290309060040161564e565b612c81816136c4565b15612c9257612c8f8161370b565b90505b612cae612c9d61266c565b6001600160a01b038416908361383d565b5050565b612cbd858386613755565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612d05908590600401615cfa565b600060405180830381600087803b158015612d1f57600080fd5b505af1158015612d33573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299d57600080fd5b6001600160a01b038516331480612d9157506001600160a01b03851630145b612dad5760405162461bcd60e51b8152600401610a6990615b5c565b60608167ffffffffffffffff81118015612dc657600080fd5b50604051908082528060200260200182016040528015612df0578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612e0c57600080fd5b50604051908082528060200260200182016040528015612e36578160200160208202803683370190505b50905060005b83811015612fa657612e53858583818110610b8e57fe5b612e6f5760405162461bcd60e51b8152600401610a6990615c38565b8551600090868684818110612e8057fe5b9050604002016000013581518110612e9457fe5b60200260200101519050866060015115612ee257612eb181613c92565b848381518110612ebd57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612f9d565b612eeb81613c95565b612f7857612ef881613c92565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612f23919061564e565b60206040518083038186803b158015612f3b57600080fd5b505afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7391906153ee565b612f84565b876001600160a01b0316315b838381518110612f9057fe5b6020026020010181815250505b50600101612e3c565b5084606001511561303d57612fb961266c565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401612fe6929190615686565b60006040518083038186803b158015612ffe57600080fd5b505afa158015613012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261303a9190810190614c6e565b90505b61304b888660400151613ca2565b604086015261305861266c565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016130899493929190615976565b600060405180830381600087803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156130d657600080fd5b50604051908082528060200260200182016040528015613100578160200160208202803683370190505b50905085606001511561319d5761311561266c565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b8152600401613142929190615686565b60006040518083038186803b15801561315a57600080fd5b505afa15801561316e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131969190810190614c6e565b905061329b565b60005b848110156132995786516000908787848181106131b957fe5b90506040020160000135815181106131cd57fe5b602002602001015190506131e081613c95565b61326d576131ed81613c92565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401613218919061564e565b60206040518083038186803b15801561323057600080fd5b505afa158015613244573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326891906153ee565b613279565b886001600160a01b0316315b83838151811061328557fe5b6020908102919091010152506001016131a0565b505b60005b8481101561265f576132f88686838181106132b557fe5b90506040020160200135610c038584815181106132ce57fe5b60200260200101518585815181106132e257fe5b6020026020010151613c7c90919063ffffffff16565b60010161329e565b61332b7f00000000000000000000000000000000000000000000000000000000000000008386613755565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161337b9190615cfa565b602060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cd91906153ee565b9050610d3b7f0000000000000000000000000000000000000000000000000000000000000000858385613653565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7057600080fd5b613441858386613755565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611e4a93929190615d1a565b600061348082613d18565b9392505050565b613492858386613755565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cf57600080fd5b505afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350791906148b5565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135519086908890600401615d03565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b50505050611ea882826001600160a01b0316635427c938866040518263ffffffff1660e01b81526004016109b89190615cfa565b60006135be826136c4565b6135c857816135d1565b6135d18261370b565b90505b919050565b6135e8814710156101a3613d2f565b6000826001600160a01b03168260405161360190613c92565b60006040518083038185875af1925050503d806000811461363e576040519150601f19603f3d011682016040523d82523d6000602084013e613643565b606091505b5050905061176d816101a4613d2f565b6001600160a01b0383163014613677576136776001600160a01b0385168484613b56565b6106df81836136ac565b600061368e858484613755565b90506136a46001600160a01b038616858361383d565b949350505050565b6136b5826136c4565b15612cae57612cae8282613742565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061371984613d18565b9150915061372684613d3d565b1561348057600082559392505050565b60ff81901d9081180390565b600061374d83613d84565b919091555050565b6000613760836135b3565b90506001600160a01b0382163014613480576001600160a01b038216331461379a5760405162461bcd60e51b8152600401610a6990615b5c565b6134808285835b806137ab5761176d565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106137db57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061382657fe5b602002602001018181525050610d3b858383613de2565b80158015906138e157506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061388e90309086906004016156e0565b60206040518083038186803b1580156138a657600080fd5b505afa1580156138ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138de91906153ee565b15155b1561396a5761396a8363095ea7b360e01b8460006040516024016139069291906157f1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f30565b61176d8363095ea7b360e01b848460405160240161390692919061580d565b8060005b81811015610d3b578383828181106139a157fe5b90506020020160208101906139b69190614899565b6001600160a01b0316634b820093866040518263ffffffff1660e01b81526004016139e1919061564e565b602060405180830381600087803b1580156139fb57600080fd5b505af1158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a339190614ca1565b5060010161398d565b8060608167ffffffffffffffff81118015613a5657600080fd5b50604051908082528060200260200182016040528015613a9057816020015b613a7d614481565b815260200190600190039081613a755790505b50905060005b82811015613b22576040805160a081019091528060038152602001868684818110613abd57fe5b9050602002016020810190613ad29190614899565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613b0f57fe5b6020908102919091010152600101613a96565b50613b2b61266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016121da91906158d5565b61176d8363a9059cbb60e01b848460405160240161390692919061580d565b606060006060846001600160a01b031684604051613b9391906155ff565b6000604051808303816000865af19150503d8060008114613bd0576040519150601f19603f3d011682016040523d82523d6000602084013e613bd5565b606091505b5091509150613be48282613fd0565b925050505b92915050565b60601c90565b60606000836003811115613c0557fe5b1415613c1b57613c1482613ffa565b9050613be9565b6001836003811115613c2957fe5b1480613c4057506002836003811115613c3e57fe5b145b80613c5657506003836003811115613c5457fe5b145b15613c6457613c1482613ffa565b60405162461bcd60e51b8152600401610a6990615c01565b6000613c8c838311156001613d2f565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613cb257fe5b1415613cc157613c1482614037565b6001836003811115613ccf57fe5b1415613cde57613c1482614080565b6002836003811115613cec57fe5b1415613cfb57613c14826140c6565b6003836003811115613d0957fe5b1415613c6457613c14826140f2565b600080613d2483613d84565b915081549050915091565b81612cae57612cae81614125565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613d9183614152565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613dc3929190615640565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613dfc57600080fd5b50604051908082528060200260200182016040528015613e3657816020015b613e23614481565b815260200190600190039081613e1b5790505b50905060005b8351811015613ece576040805160a081019091528060038152602001858381518110613e6457fe5b60200260200101516001600160a01b03168152602001848381518110613e8657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613ebb57fe5b6020908102919091010152600101613e3c565b50613ed761266c565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613f0291906158d5565b600060405180830381600087803b158015613f1c57600080fd5b505af11580156115a3573d6000803e3d6000fd5b60006060836001600160a01b031683604051613f4c91906155ff565b6000604051808303816000865af19150503d8060008114613f89576040519150601f19603f3d011682016040523d82523d6000602084013e613f8e565b606091505b50915091506000821415613fa6573d6000803e3d6000fd5b6106df815160001480613fc8575081806020019051810190613fc89190614ca1565b6101a2613d2f565b60608215613fdf575080613be9565b815115613fef5781518083602001fd5b613be96101ae614125565b6060600061400783614175565b9050600181600381111561401757fe5b141561402e576140268361418b565b9150506135d4565b829150506135d4565b60606000614044836141dd565b9050600081600281111561405457fe5b141561406357614026836141f3565b600181600281111561407157fe5b141561402e5761402683614256565b6060600061408d836141dd565b600281111561409857fe5b905060ff81166140ac5761402683826142a9565b60015b60ff168160ff16141561402e57614026838261430b565b606060006140d3836141dd565b60028111156140de57fe5b905060ff811661402e5761402683826142a9565b606060006140ff836141dd565b600281111561410a57fe5b905060ff811661411e5761402683826142a9565b60026140af565b61414f817f42414c0000000000000000000000000000000000000000000000000000000000614366565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6000818060200190518101906135d19190615178565b6060806000614199846143c7565b915091506141a6826143ea565b6141b057836136a4565b600182826040516020016141c6939291906159ea565b604051602081830303815290604052949350505050565b6000818060200190518101906135d191906150f9565b606060008061420184614454565b9150915061420e826136c4565b1561424c5761421c8261370b565b915060008282604051602001614234939291906159c9565b604051602081830303815290604052925050506135d4565b83925050506135d4565b606060006142638361446b565b905061426e816136c4565b1561402e5761427c8161370b565b90506001816040516020016142929291906159b2565b6040516020818303038152906040529150506135d4565b60606000806142b785614454565b915091506142c4826136c4565b15614301576142d28261370b565b91508382826040516020016142e993929190615d6b565b60405160208183030381529060405292505050613be9565b8492505050613be9565b606060006143188461446b565b9050614323816136c4565b1561435d576143318161370b565b90508281604051602001614346929190615d58565b604051602081830303815290604052915050613be9565b83915050613be9565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906143df9190615194565b909590945092505050565b600080805b835181101561444d57600084828151811061440657fe5b60200260200101519050614419816136c4565b15614444576144278161370b565b85838151811061443357fe5b602002602001018181525050600192505b506001016143ef565b5092915050565b600080828060200190518101906143df9190615142565b6000818060200190518101906134809190615115565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613be981615e17565b60008083601f8401126144cd578182fd5b50813567ffffffffffffffff8111156144e4578182fd5b60208301915083602080830285010111156144fe57600080fd5b9250929050565b600082601f830112614515578081fd5b813561452861452382615dad565b615d86565b81815291506020808301908481018184028601820187101561454957600080fd5b60005b8481101561457157813561455f81615e17565b8452928201929082019060010161454c565b505050505092915050565b600082601f83011261458c578081fd5b813561459a61452382615dad565b818152915060208083019084810160005b84811015614571578135870160a080601f19838c030112156145cc57600080fd5b6145d581615d86565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561461757600080fd5b6146258c8885870101614747565b908201528652505092820192908201906001016145ab565b60008083601f84011261464e578182fd5b50813567ffffffffffffffff811115614665578182fd5b6020830191508360206040830285010111156144fe57600080fd5b600082601f830112614690578081fd5b813561469e61452382615dad565b8181529150602080830190848101818402860182018710156146bf57600080fd5b60005b84811015614571578135845292820192908201906001016146c2565b600082601f8301126146ee578081fd5b81516146fc61452382615dad565b81815291506020808301908481018184028601820187101561471d57600080fd5b60005b8481101561457157815184529282019290820190600101614720565b8035613be981615e2c565b600082601f830112614757578081fd5b813567ffffffffffffffff81111561476d578182fd5b6147806020601f19601f84011601615d86565b915080825283602082850101111561479757600080fd5b8060208401602084013760009082016020015292915050565b8035613be981615e47565b803560028110613be957600080fd5b6000608082840312156147db578081fd5b6147e56080615d86565b9050813567ffffffffffffffff808211156147ff57600080fd5b61480b85838601614505565b8352602084013591508082111561482157600080fd5b61482d85838601614680565b6020840152604084013591508082111561484657600080fd5b5061485384828501614747565b604083015250614866836060840161473c565b606082015292915050565b600060808284031215614882578081fd5b50919050565b803560ff81168114613be957600080fd5b6000602082840312156148aa578081fd5b813561348081615e17565b6000602082840312156148c6578081fd5b815161348081615e17565b600080600080608085870312156148e6578283fd5b84356148f181615e17565b9350602085013561490181615e17565b93969395505050506040820135916060013590565b60008060006040848603121561492a578081fd5b833561493581615e17565b9250602084013567ffffffffffffffff811115614950578182fd5b61495c868287016144bc565b9497909650939450505050565b6000806000806060858703121561497e578182fd5b843561498981615e17565b9350602085013561499981615e2c565b9250604085013567ffffffffffffffff808211156149b5578384fd5b818701915087601f8301126149c8578384fd5b8135818111156149d6578485fd5b8860208285010111156149e7578485fd5b95989497505060200194505050565b600080600060608486031215614a0a578081fd5b8335614a1581615e17565b95602085013595506040909401359392505050565b600080600060408486031215614a3e578081fd5b833567ffffffffffffffff811115614a54578182fd5b614a60868287016144bc565b909790965060209590950135949350505050565b60008060208385031215614a86578182fd5b823567ffffffffffffffff811115614a9c578283fd5b614aa8858286016144bc565b90969095509350505050565b60006020808385031215614ac6578182fd5b825167ffffffffffffffff811115614adc578283fd5b8301601f81018513614aec578283fd5b8051614afa61452382615dad565b8181528381019083850185840285018601891015614b16578687fd5b8694505b83851015614b38578051835260019490940193918501918501614b1a565b50979650505050505050565b60008060008060608587031215614b59578182fd5b843567ffffffffffffffff80821115614b70578384fd5b818701915087601f830112614b83578384fd5b8135614b9161452382615dad565b808282526020808301925080860160a08d838288028a01011115614bb357898afd5b8997505b85881015614c365780828f031215614bcd57898afd5b614bd681615d86565b614be08f846147b0565b8152614bee8f8585016144b1565b8185015260408381013590820152614c098f606085016144b1565b6060820152614c1b8f608085016144b1565b60808201528552600197909701969382019390810190614bb7565b509199508a013597505050604088013592505080821115614c55578384fd5b50614c628782880161463d565b95989497509550505050565b600060208284031215614c7f578081fd5b815167ffffffffffffffff811115614c95578182fd5b6136a4848285016146de565b600060208284031215614cb2578081fd5b815161348081615e2c565b60008060008060008060c08789031215614cd5578384fd5b8635614ce081615e2c565b95506020870135614cf081615e17565b945060408701359350614d068860608901614888565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614d3a578485fd5b873596506020880135614d4c81615e47565b95506040880135614d5c81615e17565b94506060880135614d6c81615e17565b9350608088013567ffffffffffffffff80821115614d88578283fd5b614d948b838c016147ca565b945060a08a0135915080821115614da9578283fd5b50614db68a828b0161463d565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614de3578081fd5b873596506020880135614df581615e47565b95506040880135614e0581615e17565b94506060880135614e1581615e17565b9350608088013567ffffffffffffffff811115614e30578182fd5b614e3c8a828b016147ca565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614e70578283fd5b8535614e7b81615e17565b94506020860135614e8b81615e17565b93506040860135614e9b81615e17565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614ecf578182fd5b8835614eda81615e17565b97506020890135614eea81615e17565b965060408901359550606089013594506080890135614f0881615e2c565b9350614f178a60a08b01614888565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614f4e578081fd5b8735614f5981615e17565b96506020880135614f6981615e17565b95506040880135945060608801359350614f868960808a01614888565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614fb4578182fd5b8235614fbf81615e17565b946020939093013593505050565b60008060008060008060c08789031215614fe5578384fd5b8635614ff081615e17565b9550602087013561500081615e17565b9450604087013561501081615e17565b9350606087013561502081615e17565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561504f578182fd5b843561505a81615e17565b9350602085013561506a81615e17565b9250604085013561507a81615e17565b9396929550929360600135925050565b60008060008060008060c087890312156150a2578384fd5b86356150ad81615e17565b955060208701356150bd81615e17565b945060408701356150cd81615e17565b93506060870135925060808701356150e481615e2c565b8092505060a087013590509295509295509295565b60006020828403121561510a578081fd5b815161348081615e3a565b60008060408385031215615127578182fd5b825161513281615e3a565b6020939093015192949293505050565b600080600060608486031215615156578081fd5b835161516181615e3a565b602085015160409095015190969495509392505050565b600060208284031215615189578081fd5b815161348081615e47565b6000806000606084860312156151a8578081fd5b83516151b381615e47565b602085015190935067ffffffffffffffff8111156151cf578182fd5b6151db868287016146de565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e03121561520d578485fd5b6152178d8d6147bb565b9a5067ffffffffffffffff8060208e01351115615232578586fd5b6152428e60208f01358f0161457c565b9a508060408e01351115615254578586fd5b6152648e60408f01358f016144bc565b909a5098506152768e60608f01614871565b97508060e08e01351115615288578586fd5b6152988e60e08f01358f016144bc565b90975095506101008d013594506101208d013593506101408d01358110156152be578283fd5b506152d08d6101408e01358e0161463d565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215615301578384fd5b863567ffffffffffffffff80821115615318578586fd5b9088019060c0828b03121561532b578586fd5b61533560c0615d86565b823581526153468b602085016147bb565b6020820152604083013561535981615e17565b604082015261536b8b606085016144b1565b60608201526080830135608082015260a08301358281111561538b578788fd5b6153978c828601614747565b60a0830152508098505050506153b08860208901614871565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156153e7578081fd5b5035919050565b6000602082840312156153ff578081fd5b5051919050565b60008060408385031215615418578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561547357813561545881615e17565b6001600160a01b031687529582019590820190600101615445565b509495945050505050565b60008284526020808501945082825b858110156154735781358752958201959082019060010161548d565b6000815180845260208085019450808401835b83811015615473578151875295820195908201906001016154bc565b15159052565b600081518084526154f6816020860160208601615dcd565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561554f5783516001600160a01b03168352928401929184019160010161552a565b50508285015191508581038387015261556881836154a9565b925050506040830151848203604086015261558382826154de565b915050606083015161559860608601826154d8565b509392505050565b80356155ab81615e17565b6001600160a01b0390811683526020820135906155c782615e2c565b90151560208401526040820135906155de82615e17565b16604083015260608101356155f281615e2c565b8015156060840152505050565b60008251615611818460208701615dcd565b9190910192915050565b6000845161562d818460208901615dcd565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156156d25785518516835294830194918301916001016156b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156158b8576020833561589d81615e17565b6001600160a01b031683529283019290910190600101615888565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561595e578151805161590781615e03565b8552808701516001600160a01b031687860152858101518686015260608082015161593482880182615429565b50506080908101519061594986820183615429565b505060a09390930192908501906001016158f2565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b038086166020840152808516604084015250608060608301526159a8608083018461550a565b9695505050505050565b604081016159bf84615df9565b9281526020015290565b606081016159d685615df9565b938152602081019290925260409091015290565b60006159f585615e03565b84825260606020830152615a0c60608301856154a9565b9050826040830152949350505050565b6000610120808301615a2d8c615e0d565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615ad4578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615ac0818801836154de565b978601979650505090830190600101615a54565b505050508381036040850152615aeb818a8c615436565b915050615afb60608401886155a0565b82810360e0840152615b0e81868861547e565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615c8a81615e0d565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615cd86101a08401826154de565b915050615ce860208301866155a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615da557600080fd5b604052919050565b600067ffffffffffffffff821115615dc3578081fd5b5060209081020190565b60005b83811015615de8578181015183820152602001615dd0565b838111156106df5750506000910152565b6003811061414f57fe5b6004811061414f57fe5b6002811061414f57fe5b6001600160a01b038116811461414f57600080fd5b801515811461414f57600080fd5b6003811061414f57600080fd5b6004811061414f57600080fdfea26469706673582212201ec40c4a4738e1dd9206f7dbef6a97a907fb8d94ee88550dbda97e3e5459c62364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AB6E03C GT PUSH2 0x184 JUMPI DUP1 PUSH4 0x959FC17A GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xD80952D5 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEFE69108 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xF4DD54B0 EQ PUSH2 0x637 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x5F1 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xB064B376 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xB064B376 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x5A5 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x5B8 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x959FC17A EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x57F JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0x941E849B EQ PUSH2 0x559 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x51E JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0x837F9BCB EQ PUSH2 0x4E5 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x49D JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x3F85D390 GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x4F06A70B GT PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x611B90DD GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x477 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x4F06A70B EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x5001FE75 EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0x52B88746 EQ PUSH2 0x43E JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x44B6AC74 GT PUSH2 0x222 JUMPI DUP1 PUSH4 0x44B6AC74 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x48699D58 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x4E9D9BAB EQ PUSH2 0x405 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x433B0865 EQ PUSH2 0x3CC JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x294 JUMPI DUP1 PUSH4 0x2CBEC84E GT PUSH2 0x279 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x311C5C57 EQ PUSH2 0x3A6 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x1C982441 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0x2C25EFE1 EQ PUSH2 0x36D JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0x10F3AAFF GT PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x10F3AAFF EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x138FDC2C EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x347 JUMPI PUSH2 0x2DC JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x2F6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F4 PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x4A74 JUMP JUMPDEST PUSH2 0x64A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F4 PUSH2 0x304 CALLDATASIZE PUSH1 0x4 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0x6E5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31E PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F4 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x51EC JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x48D1 JUMP JUMPDEST PUSH2 0xC1F JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x37B CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0xD42 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x52E8 JUMP JUMPDEST PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x111A JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A2A JUMP JUMPDEST PUSH2 0x12BA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3DA CALLDATASIZE PUSH1 0x4 PUSH2 0x508A JUMP JUMPDEST PUSH2 0x1384 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x3ED CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x15AD JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x4916 JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x413 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1772 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x426 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1ADE JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x44C CALLDATASIZE PUSH1 0x4 PUSH2 0x4FCD JUMP JUMPDEST PUSH2 0x1C69 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x503A JUMP JUMPDEST PUSH2 0x1EB0 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x1FCE JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x498 CALLDATASIZE PUSH1 0x4 PUSH2 0x508A JUMP JUMPDEST PUSH2 0x2009 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x503A JUMP JUMPDEST PUSH2 0x210F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C5 PUSH2 0x2213 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4969 JUMP JUMPDEST PUSH2 0x2237 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B44 JUMP JUMPDEST PUSH2 0x233B JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x250B JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CBD JUMP JUMPDEST PUSH2 0x2547 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x52C CALLDATASIZE PUSH1 0x4 PUSH2 0x4F34 JUMP JUMPDEST PUSH2 0x25F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C5 PUSH2 0x266C JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DC9 JUMP JUMPDEST PUSH2 0x2690 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x28BA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x57A CALLDATASIZE PUSH1 0x4 PUSH2 0x4EB3 JUMP JUMPDEST PUSH2 0x2A05 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x58D CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2A82 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FA2 JUMP JUMPDEST PUSH2 0x2C78 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x2CB2 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D20 JUMP JUMPDEST PUSH2 0x2D72 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5EC CALLDATASIZE PUSH1 0x4 PUSH2 0x48D1 JUMP JUMPDEST PUSH2 0x3300 JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x5FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x3436 JUMP JUMPDEST PUSH2 0x62A PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x53D6 JUMP JUMPDEST PUSH2 0x3475 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH2 0x2F4 PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E59 JUMP JUMPDEST PUSH2 0x3487 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6DF JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x662 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x64E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x6EE DUP3 PUSH2 0x35B3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB0E38900 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x73E SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x76A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x78E SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x7C3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x35D9 JUMP JUMPDEST PUSH2 0x6DF PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x862 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x886 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2495A599 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8FB SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x909 DUP2 DUP4 DUP7 DUP10 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9AA5D46200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9AA5D462 SWAP1 PUSH2 0x956 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x984 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA0D DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4D778AD1 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0xA24 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA4D JUMPI POP ADDRESS PUSH2 0xA42 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xA72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA8C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0xAA3 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0xACE JUMPI PUSH2 0xAB1 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xABD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xA75 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0xAE2 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xB72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4AB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC10 JUMPI PUSH2 0xB9D DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST PUSH2 0xC08 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBC8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC03 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xBE2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0xBF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3736 JUMP JUMPDEST PUSH2 0x3742 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB77 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC6B PUSH32 0x0 PUSH32 0x0 DUP5 DUP8 PUSH2 0x3681 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA598CB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBB SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD0D SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD91 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xDC3 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA0712D6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xA0712D68 SWAP1 PUSH2 0xE0B SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE5D SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5BCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xEC2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEEE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP8 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH2 0xF29 DUP3 PUSH2 0x35B3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF7A SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFCC SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x6DF PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST CALLER PUSH2 0x1008 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1031 JUMPI POP ADDRESS PUSH2 0x1026 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x104D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x105A DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x1072 JUMPI PUSH2 0x106C DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x370B JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x107C PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10AE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C6F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x110B DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0xA0D JUMPI PUSH2 0xA0D DUP3 DUP3 PUSH2 0x3742 JUMP JUMPDEST PUSH2 0x1125 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1176 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x119A SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x11E2 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x125C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1288 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12AC SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP3 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0x1326 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5875 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1340 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1378 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x6DF DUP3 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH2 0x138D DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x139E JUMPI PUSH2 0x139B DUP4 PUSH2 0x370B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x141D JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1418 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH2 0x1490 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x146C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1490 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x14D5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x14CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x14D5 DUP7 DUP3 DUP7 PUSH2 0x37A1 JUMP JUMPDEST PUSH2 0x14E9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x383D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x1537 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5849 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1551 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1565 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1589 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x1594 DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x15A3 JUMPI PUSH2 0x15A3 DUP4 DUP3 PUSH2 0x3742 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15B8 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1609 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x162D SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDB006A7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xDB006A75 SWAP1 PUSH2 0x1675 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x168F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16C7 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO PUSH2 0x16E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B25 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x125C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x1762 JUMPI PUSH2 0x175D DUP4 DUP4 DUP4 PUSH2 0x3989 JUMP JUMPDEST PUSH2 0x176D JUMP JUMPDEST PUSH2 0x176D DUP4 DUP4 DUP4 PUSH2 0x3A3C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x177D DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F2 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1843 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1867 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x18D4 SWAP1 DUP5 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1901 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1925 SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x196F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x199B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19BF SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP3 DUP8 DUP4 DUP8 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A40 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A4E DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6E553F65 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A80 SWAP3 SWAP2 SWAP1 PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AD2 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xA0D DUP4 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B51 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC6 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BD4 DUP3 DUP3 DUP7 DUP10 PUSH2 0x3681 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFBF178DB DUP5 DUP9 DUP9 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C0B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x56FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C5C SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x15A3 DUP5 DUP3 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CDC SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x1CEA DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE2BBB15800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x1D35 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1DAF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DDB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFF SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x15A3 DUP9 DUP7 DUP4 DUP7 PUSH2 0x3653 JUMP JUMPDEST PUSH2 0x1E18 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA785A5E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E9C SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x1EA8 DUP3 DUP3 PUSH2 0x36AC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1EBB DUP5 DUP3 DUP6 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1F03 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FB8 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x3B56 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2012 DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2023 JUMPI PUSH2 0x2020 DUP4 PUSH2 0x370B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2066 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x205B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x2066 DUP6 DUP8 DUP6 PUSH2 0x37A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x20B2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5826 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2103 SWAP2 SWAP1 PUSH2 0x5406 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x110B DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x214A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x215E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2182 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2190 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x21DA SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x224C JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2268 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B93 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2287 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5662 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x22F6 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x561B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1EA8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x3B75 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x241B JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x235D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x23A6 JUMPI POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x238F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x23C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23D0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH2 0x23E7 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2412 JUMPI PUSH2 0x23F5 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2401 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x233E JUMP JUMPDEST POP PUSH2 0x2424 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2450 SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x247D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH2 0x249C DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST PUSH2 0x24B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST PUSH2 0x2503 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x24C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP7 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x24DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x24F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x3742 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2485 JUMP JUMPDEST PUSH2 0x2516 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xF714CE DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP3 SWAP2 SWAP1 PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x25B8 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x57AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x260A PUSH2 0x266C JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2631 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x576C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x265F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x26AF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26D6 DUP9 PUSH2 0x3BEF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x26E3 DUP4 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x26EE JUMPI PUSH1 0x0 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2733 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x275F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2783 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x2793 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3BF5 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x27A0 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27D2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x280D DUP4 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2208 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x285A SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28AA SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0x25E6 DUP5 PUSH2 0xC03 DUP4 DUP6 PUSH2 0x3C7C JUMP JUMPDEST PUSH2 0x28C5 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x441A3E7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x441A3E70 SWAP1 PUSH2 0x2930 SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 ADD PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x295E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29D5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x125C SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x2A1D PUSH2 0x266C JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A46 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2ABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AD1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AF5 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B03 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F4F21E2 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A80 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BA8 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB6 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3681 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2BFE SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0xEC2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x564E JUMP JUMPDEST PUSH2 0x2C81 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2C92 JUMPI PUSH2 0x2C8F DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2CAE PUSH2 0x2C9D PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x383D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2CBD DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2D05 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2D91 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2DAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DF0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2E0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E36 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FA6 JUMPI PUSH2 0x2E53 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB8E JUMPI INVALID JUMPDEST PUSH2 0x2E6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C38 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2E80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2EE2 JUMPI PUSH2 0x2EB1 DUP2 PUSH2 0x3C92 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2EBD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0x2EEB DUP2 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x2F78 JUMPI PUSH2 0x2EF8 DUP2 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F23 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F73 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x2F84 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2E3C JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x303D JUMPI PUSH2 0x2FB9 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FE6 SWAP3 SWAP2 SWAP1 PUSH2 0x5686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3012 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x303A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C6E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x304B DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3CA2 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x3058 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3089 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5976 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x30D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3100 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x319D JUMPI PUSH2 0x3115 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3142 SWAP3 SWAP2 SWAP1 PUSH2 0x5686 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x315A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3196 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x329B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3299 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x31B9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x31CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x31E0 DUP2 PUSH2 0x3C95 JUMP JUMPDEST PUSH2 0x326D JUMPI PUSH2 0x31ED DUP2 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3218 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3244 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3268 SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x3279 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3285 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x31A0 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x265F JUMPI PUSH2 0x32F8 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x32B5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC03 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x32CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x32E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3C7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x329E JUMP JUMPDEST PUSH2 0x332B PUSH32 0x0 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDE0E9A3E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x337B SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33CD SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 POP PUSH2 0xD3B PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3441 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBA087652 DUP5 DUP7 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E4A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3480 DUP3 PUSH2 0x3D18 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3492 DUP6 DUP4 DUP7 PUSH2 0x3755 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x34CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3507 SWAP2 SWAP1 PUSH2 0x48B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5FE138B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x5FE138B SWAP1 PUSH2 0x3551 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x356B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x357F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1EA8 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5427C938 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x5CFA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35BE DUP3 PUSH2 0x36C4 JUMP JUMPDEST PUSH2 0x35C8 JUMPI DUP2 PUSH2 0x35D1 JUMP JUMPDEST PUSH2 0x35D1 DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x35E8 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3601 SWAP1 PUSH2 0x3C92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x363E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x176D DUP2 PUSH2 0x1A4 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x3677 JUMPI PUSH2 0x3677 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3B56 JUMP JUMPDEST PUSH2 0x6DF DUP2 DUP4 PUSH2 0x36AC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368E DUP6 DUP5 DUP5 PUSH2 0x3755 JUMP JUMPDEST SWAP1 POP PUSH2 0x36A4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 DUP4 PUSH2 0x383D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x36B5 DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x2CAE JUMPI PUSH2 0x2CAE DUP3 DUP3 PUSH2 0x3742 JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3719 DUP5 PUSH2 0x3D18 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3726 DUP5 PUSH2 0x3D3D JUMP JUMPDEST ISZERO PUSH2 0x3480 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374D DUP4 PUSH2 0x3D84 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP4 PUSH2 0x35B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x3480 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x379A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5B5C JUMP JUMPDEST PUSH2 0x3480 DUP3 DUP6 DUP4 JUMPDEST DUP1 PUSH2 0x37AB JUMPI PUSH2 0x176D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DB JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3826 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD3B DUP6 DUP4 DUP4 PUSH2 0x3DE2 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x38E1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x388E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x56E0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38DE SWAP2 SWAP1 PUSH2 0x53EE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x396A JUMPI PUSH2 0x396A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x57F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3F30 JUMP JUMPDEST PUSH2 0x176D DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD3B JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x39A1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x39B6 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39E1 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A33 SWAP2 SWAP1 PUSH2 0x4CA1 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x398D JUMP JUMPDEST DUP1 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3A90 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3A7D PUSH2 0x4481 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3A75 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B22 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x3ABD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AD2 SWAP2 SWAP1 PUSH2 0x4899 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3B0F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3A96 JUMP JUMPDEST POP PUSH2 0x3B2B PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21DA SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH2 0x176D DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3906 SWAP3 SWAP2 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3B93 SWAP2 SWAP1 PUSH2 0x55FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3BD0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3BD5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3BE4 DUP3 DUP3 PUSH2 0x3FD0 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C05 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3C1B JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x3FFA JUMP JUMPDEST SWAP1 POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C29 JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x3C40 JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C3E JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x3C56 JUMPI POP PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3C54 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x3C64 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x3FFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA69 SWAP1 PUSH2 0x5C01 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C8C DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3D2F JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CB2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CC1 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x4037 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CCF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CDE JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x4080 JUMP JUMPDEST PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CEC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CFB JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x40C6 JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D09 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3C64 JUMPI PUSH2 0x3C14 DUP3 PUSH2 0x40F2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D24 DUP4 PUSH2 0x3D84 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0x2CAE JUMPI PUSH2 0x2CAE DUP2 PUSH2 0x4125 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3D91 DUP4 PUSH2 0x4152 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3DC3 SWAP3 SWAP2 SWAP1 PUSH2 0x5640 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3DFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3E36 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3E23 PUSH2 0x4481 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3E1B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3ECE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3E64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3E86 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3EBB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3E3C JUMP JUMPDEST POP PUSH2 0x3ED7 PUSH2 0x266C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F02 SWAP2 SWAP1 PUSH2 0x58D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3F1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3F4C SWAP2 SWAP1 PUSH2 0x55FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3F8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x3FA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6DF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x3FC8 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3FC8 SWAP2 SWAP1 PUSH2 0x4CA1 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3D2F JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3FDF JUMPI POP DUP1 PUSH2 0x3BE9 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3FEF JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3BE9 PUSH2 0x1AE PUSH2 0x4125 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4007 DUP4 PUSH2 0x4175 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4017 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 PUSH2 0x418B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4044 DUP4 PUSH2 0x41DD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4054 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4063 JUMPI PUSH2 0x4026 DUP4 PUSH2 0x41F3 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4071 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x408D DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4098 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x40AC JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x430B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40D3 DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x40DE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x402E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40FF DUP4 PUSH2 0x41DD JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x410A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x411E JUMPI PUSH2 0x4026 DUP4 DUP3 PUSH2 0x42A9 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x40AF JUMP JUMPDEST PUSH2 0x414F DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x4366 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x5178 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x4199 DUP5 PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x41A6 DUP3 PUSH2 0x43EA JUMP JUMPDEST PUSH2 0x41B0 JUMPI DUP4 PUSH2 0x36A4 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x41C6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59EA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x35D1 SWAP2 SWAP1 PUSH2 0x50F9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x4201 DUP5 PUSH2 0x4454 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x420E DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x424C JUMPI PUSH2 0x421C DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4234 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x59C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x35D4 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4263 DUP4 PUSH2 0x446B JUMP JUMPDEST SWAP1 POP PUSH2 0x426E DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x402E JUMPI PUSH2 0x427C DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4292 SWAP3 SWAP2 SWAP1 PUSH2 0x59B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x35D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x42B7 DUP6 PUSH2 0x4454 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x42C4 DUP3 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x4301 JUMPI PUSH2 0x42D2 DUP3 PUSH2 0x370B JUMP JUMPDEST SWAP2 POP DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x42E9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3BE9 JUMP JUMPDEST DUP5 SWAP3 POP POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4318 DUP5 PUSH2 0x446B JUMP JUMPDEST SWAP1 POP PUSH2 0x4323 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x435D JUMPI PUSH2 0x4331 DUP2 PUSH2 0x370B JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4346 SWAP3 SWAP2 SWAP1 PUSH2 0x5D58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3BE9 JUMP JUMPDEST DUP4 SWAP2 POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x43DF SWAP2 SWAP1 PUSH2 0x5194 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x444D JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4406 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x4419 DUP2 PUSH2 0x36C4 JUMP JUMPDEST ISZERO PUSH2 0x4444 JUMPI PUSH2 0x4427 DUP2 PUSH2 0x370B JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4433 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x43EF JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x43DF SWAP2 SWAP1 PUSH2 0x5142 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3480 SWAP2 SWAP1 PUSH2 0x5115 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44CD JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44E4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x44FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4515 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4528 PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST PUSH2 0x5D86 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD PUSH2 0x455F DUP2 PUSH2 0x5E17 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x454C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x458C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x459A PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x45CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x45D5 DUP2 PUSH2 0x5D86 JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x4617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4625 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x4747 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45AB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x464E JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4665 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x44FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4690 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x469E PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x46BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x46EE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46FC PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x471D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4571 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4720 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4757 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x476D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4780 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x5D86 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3BE9 DUP2 PUSH2 0x5E47 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3BE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47DB JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x47E5 PUSH1 0x80 PUSH2 0x5D86 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x47FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x480B DUP6 DUP4 DUP7 ADD PUSH2 0x4505 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482D DUP6 DUP4 DUP7 ADD PUSH2 0x4680 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4853 DUP5 DUP3 DUP6 ADD PUSH2 0x4747 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x4866 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x473C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4882 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3BE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48AA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3480 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x48E6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x48F1 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4901 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x492A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4935 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4950 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x495C DUP7 DUP3 DUP8 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x497E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4989 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4999 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x49B5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x49C8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x49D6 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x49E7 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A0A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4A15 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A3E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4A54 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4A60 DUP7 DUP3 DUP8 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4A9C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4AA8 DUP6 DUP3 DUP7 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4AC6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4ADC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x4AEC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4AFA PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x4B16 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x4B38 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x4B1A JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B59 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4B70 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B83 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4B91 PUSH2 0x4523 DUP3 PUSH2 0x5DAD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD PUSH1 0xA0 DUP14 DUP4 DUP3 DUP9 MUL DUP11 ADD ADD GT ISZERO PUSH2 0x4BB3 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP8 POP JUMPDEST DUP6 DUP9 LT ISZERO PUSH2 0x4C36 JUMPI DUP1 DUP3 DUP16 SUB SLT ISZERO PUSH2 0x4BCD JUMPI DUP10 DUP11 REVERT JUMPDEST PUSH2 0x4BD6 DUP2 PUSH2 0x5D86 JUMP JUMPDEST PUSH2 0x4BE0 DUP16 DUP5 PUSH2 0x47B0 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4BEE DUP16 DUP6 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST DUP2 DUP6 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x4C09 DUP16 PUSH1 0x60 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4C1B DUP16 PUSH1 0x80 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP6 MSTORE PUSH1 0x1 SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4BB7 JUMP JUMPDEST POP SWAP2 SWAP10 POP DUP11 ADD CALLDATALOAD SWAP8 POP POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x4C55 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4C62 DUP8 DUP3 DUP9 ADD PUSH2 0x463D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C7F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C95 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36A4 DUP5 DUP3 DUP6 ADD PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E2C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4CD5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4CE0 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4CF0 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4D06 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4D3A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4D4C DUP2 PUSH2 0x5E47 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4D5C DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4D6C DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4D88 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4D94 DUP12 DUP4 DUP13 ADD PUSH2 0x47CA JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4DA9 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4DB6 DUP11 DUP3 DUP12 ADD PUSH2 0x463D JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4DE3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4DF5 DUP2 PUSH2 0x5E47 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4E05 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4E15 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4E30 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4E3C DUP11 DUP3 DUP12 ADD PUSH2 0x47CA JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4E70 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4E7B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4E8B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4E9B DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4ECF JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4EDA DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4EEA DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x4F08 DUP2 PUSH2 0x5E2C JUMP JUMPDEST SWAP4 POP PUSH2 0x4F17 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4F4E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4F59 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4F69 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4F86 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x4888 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FB4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4FBF DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4FE5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4FF0 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x5000 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x5010 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x5020 DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x504F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x505A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x506A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x507A DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x50A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x50AD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x50BD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x50CD DUP2 PUSH2 0x5E17 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x50E4 DUP2 PUSH2 0x5E2C JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x510A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x5132 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5156 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5161 DUP2 PUSH2 0x5E3A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5189 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3480 DUP2 PUSH2 0x5E47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51A8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x51B3 DUP2 PUSH2 0x5E47 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x51CF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x51DB DUP7 DUP3 DUP8 ADD PUSH2 0x46DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x520D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x5217 DUP14 DUP14 PUSH2 0x47BB JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5232 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5242 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x457C JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5254 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5264 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x5276 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x4871 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x5288 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5298 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x44BC JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x52BE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x52D0 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x463D JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5301 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5318 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x532B JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5335 PUSH1 0xC0 PUSH2 0x5D86 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x5346 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x47BB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x5359 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x536B DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x44B1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x538B JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x5397 DUP13 DUP3 DUP7 ADD PUSH2 0x4747 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x53B0 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x4871 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53E7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53FF JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5418 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 CALLDATALOAD PUSH2 0x5458 DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5445 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x548D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5473 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x54BC JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x54F6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5DCD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x554F JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x552A JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x5568 DUP2 DUP4 PUSH2 0x54A9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x5583 DUP3 DUP3 PUSH2 0x54DE JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5598 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x54D8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x55AB DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x55C7 DUP3 PUSH2 0x5E2C JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x55DE DUP3 PUSH2 0x5E17 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x55F2 DUP2 PUSH2 0x5E2C JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5611 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x562D DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x5DCD JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x56D2 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x56B4 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x58B8 JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x589D DUP2 PUSH2 0x5E17 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5888 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x595E JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x5907 DUP2 PUSH2 0x5E03 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x5934 DUP3 DUP9 ADD DUP3 PUSH2 0x5429 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x5949 DUP7 DUP3 ADD DUP4 PUSH2 0x5429 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x58F2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x59A8 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x550A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x59BF DUP5 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x59D6 DUP6 PUSH2 0x5DF9 JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59F5 DUP6 PUSH2 0x5E03 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5A0C PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x54A9 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x5A2D DUP13 PUSH2 0x5E0D JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5AD4 JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x5AC0 DUP2 DUP9 ADD DUP4 PUSH2 0x54DE JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5A54 JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5AEB DUP2 DUP11 DUP13 PUSH2 0x5436 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5AFB PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x55A0 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x5B0E DUP2 DUP7 DUP9 PUSH2 0x547E JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x756E7772617070696E67206661696C6564000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x7772617070696E67206661696C65640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x554E48414E444C45445F504F4F4C5F4B494E4400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x5C8A DUP2 PUSH2 0x5E0D JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x5CD8 PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x54DE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5CE8 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x55A0 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5DC3 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5DE8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DD0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6DF JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x414F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x414F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E 0xC4 0xC 0x4A SELFBALANCE CODESIZE 0xE1 0xDD SWAP3 MOD 0xF7 0xDB 0xEF PUSH11 0x97A907FB8D94EE88550DBD 0xA9 PUSH31 0x3E5459C62364736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1543:660:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3741:241:98;;;;;;:::i;:::-;;:::i;:::-;;2998:930:101;;;;;;:::i;:::-;;:::i;1926:108:98:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1121:844:99;;;;;;:::i;:::-;;:::i;3603:1525:106:-;;;;;;:::i;:::-;;:::i;1785:402:101:-;;;;;;:::i;:::-;;:::i;1120:1023:95:-;;;;;;:::i;:::-;;:::i;2660:332:101:-;;;;;;:::i;:::-;;:::i;2894:703:106:-;;;;;;:::i;:::-;;:::i;1707:549:104:-;;;;;;:::i;:::-;;:::i;3204:231:98:-;;;;;;:::i;:::-;;:::i;1441:1264:92:-;;;;;;:::i;:::-;;:::i;2149:985:95:-;;;;;;:::i;:::-;;:::i;4155:291:98:-;;;;;;:::i;:::-;;:::i;2010:1000:103:-;;;;;;:::i;:::-;;:::i;1112:518:108:-;;;;;;:::i;:::-;;:::i;1185:819:103:-;;;;;;:::i;:::-;;:::i;1234:710:97:-;;;;;;:::i;:::-;;:::i;2650:421:105:-;;;;;;:::i;:::-;;:::i;2483:715:98:-;;;;;;:::i;:::-;;:::i;1113:482:96:-;;;;;;:::i;:::-;;:::i;2711:1004:92:-;;;;;;:::i;:::-;;:::i;2040:437:98:-;;;;;;:::i;:::-;;:::i;2621:101:94:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2836:466::-;;;;;;:::i;:::-;;:::i;5134:1008:106:-;;;;;;:::i;:::-;;:::i;1636:422:108:-;;;;;;:::i;:::-;;:::i;3441:294:98:-;;;;;;:::i;:::-;;:::i;1328:280:107:-;;;;;;:::i;:::-;;:::i;2527:88:94:-;;;;;;;;;;;;;:::i;6236:1496:106:-;;;;;;:::i;:::-;;:::i;1950:968:97:-;;;;;;:::i;:::-;;:::i;1614:315:107:-;;;;;;:::i;:::-;;:::i;1828:524:105:-;;;;;;:::i;:::-;;:::i;1108:593:104:-;;;;;;:::i;:::-;;:::i;3480:287:94:-;;;;;;:::i;:::-;;:::i;1164:703:102:-;;;;;;:::i;:::-;;:::i;11707:2544:106:-;;;;;;:::i;:::-;;:::i;2193:461:101:-;;;;;;:::i;:::-;;:::i;1873:693:102:-;;;;;;:::i;:::-;;:::i;1601:404:96:-;;;;;;:::i;:::-;;:::i;4175:158:94:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1971:764:99:-;;;;;;:::i;:::-;;:::i;3741:241:98:-;3857:6;3837:17;3880:96;3900:9;3896:1;:13;3880:96;;;3930:6;;3937:1;3930:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3930:23:98;;3954:10;3930:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:3;;;;;3880:96;;;;3741:241;;;:::o;2998:930:101:-;3149:22;3164:6;3149:14;:22::i;:::-;3140:31;;3292:14;3309:7;-1:-1:-1;;;;;3309:24:101;;3334:6;3309:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3292:49;-1:-1:-1;3791:43:101;-1:-1:-1;;;;;3807:7:101;3791:35;3827:6;3791:35;:43::i;:::-;3845:76;3877:7;3886:9;3897:6;3905:15;3845:31;:76::i;1926:108:98:-;2005:22;1926:108;:::o;1121:844:99:-;1329:26;1372:12;-1:-1:-1;;;;;1372:18:99;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1329:64;;1403:17;1430:12;-1:-1:-1;;;;;1430:28:99;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1403:58;;1600:95;1641:10;1661:12;1676:10;1688:6;1600:40;:95::i;:::-;1824:51;;;;;1587:108;;-1:-1:-1;;;;;;1824:25:99;;;;;:51;;1587:108;;1862:9;;1873:1;;1824:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:72;1907:15;1924:12;-1:-1:-1;;;;;1924:21:99;;1946:10;1924:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1886:20;:72::i;:::-;1121:844;;;;;;;:::o;3603:1525:106:-;3970:10;3954:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3954:26:106;;:59;;;-1:-1:-1;4008:4:106;3984:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3984:29:106;;3954:59;3946:88;;;;-1:-1:-1;;;3946:88:106;;;;;;;:::i;:::-;;;;;;;;;4050:9;4045:230;4069:5;:12;4065:1;:16;4045:230;;;4102:14;4119:5;4125:1;4119:8;;;;;;;;;;;;;;:15;;;4102:32;;4152:27;4172:6;4152:19;:27::i;:::-;4148:117;;;4217:33;4243:6;4217:25;:33::i;:::-;4199:5;4205:1;4199:8;;;;;;;;;;;;;;:15;;:51;;;;;4148:117;-1:-1:-1;4083:3:106;;4045:230;;;;4285:23;4311:10;:8;:10::i;:::-;-1:-1:-1;;;;;4311:20:106;;4340:5;4348:4;4354:5;4361:6;;4369:5;4376:6;;4384:8;4311:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4311:82:106;;;;;;;;;;;;:::i;:::-;4285:108;;4409:9;4404:718;4424:27;;;4404:718;;;4480:44;4500:16;;4517:1;4500:19;;;;;;;;;;;;:23;;;4480:19;:44::i;:::-;4472:82;;;;-1:-1:-1;;;4472:82:106;;;;;;;:::i;:::-;5015:96;5041:16;;5058:1;5041:19;;;;;;;;;;;;:23;;;5066:44;5075:7;5083:16;;5100:1;5083:19;;;;;;;;;;;;:25;;;5075:34;;;;;;;;;;;;;;5066:8;:44::i;:::-;5015:25;:96::i;:::-;4453:3;;4404:718;;;;3603:1525;;;;;;;;;;;;:::o;1785:402:101:-;1954:82;1995:6;2011:7;2021:6;2029;1954:40;:82::i;:::-;1945:91;;2047:14;2072:7;-1:-1:-1;;;;;2064:21:101;;2086:6;2064:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2047:46;;2104:76;2136:7;2145:9;2156:6;2164:15;2104:31;:76::i;:::-;1785:402;;;;;:::o;1120:1023:95:-;1315:16;1341:12;-1:-1:-1;;;;;1341:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1315:52;;1386:90;1427:9;1446:12;1461:6;1469;1386:40;:90::i;:::-;1899:25;;;;;1377:99;;-1:-1:-1;;;;;;1899:17:95;;;;;:25;;1377:99;;1899:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;1891:58;;;;-1:-1:-1;;;1891:58:95;;;;;;;:::i;:::-;1992:37;;;;;1960:29;;-1:-1:-1;;;;;1992:22:95;;;;;:37;;2023:4;;1992:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:69;;2040:96;2072:12;2086:9;2097:21;2120:15;2040:31;:96::i;2660:332:101:-;2804:22;2819:6;2804:14;:22::i;:::-;2795:31;;2837:14;2854:6;-1:-1:-1;;;;;2854:13:101;;2876:6;2893:4;2854:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2837:62;;2910:75;2942:6;2950:9;2961:6;2969:15;2910:31;:75::i;2894:703:106:-;3161:10;3145:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3145:26:106;;:59;;;-1:-1:-1;3199:4:106;3175:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3175:29:106;;3145:59;3137:88;;;;-1:-1:-1;;;3137:88:106;;;;;;;:::i;:::-;3240:38;3260:10;:17;;;3240:19;:38::i;:::-;3236:133;;;3314:44;3340:10;:17;;;3314:25;:44::i;:::-;3294:17;;;:64;3236:133;3379:14;3396:10;:8;:10::i;:::-;-1:-1:-1;;;;;3396:15:106;;3420:5;3428:10;3440:5;3447;3454:8;3396:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3379:84;;3478:36;3498:15;3478:19;:36::i;:::-;3474:117;;;3530:50;3556:15;3573:6;3530:25;:50::i;1707:549:104:-;1915:56;1942:12;1956:6;1964;1915:26;:56::i;:::-;1906:65;;1982:16;2008:12;-1:-1:-1;;;;;2008:23:104;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:29;;;;;1982:52;;-1:-1:-1;;;;;;2044:21:104;;;;;:29;;2066:6;;2044:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2113:34:104;;;;;2083:27;;-1:-1:-1;;;;;;2113:19:104;;;-1:-1:-1;2113:19:104;;:34;;2141:4;;2113:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:64;;2158:91;2190:9;2201;2212:19;2233:15;2158:31;:91::i;3204:231:98:-;3322:47;;;;;3302:17;;-1:-1:-1;;;;;3322:15:98;:27;;;;:47;;3350:6;;;;3358:10;;3322:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3302:67;;3380:48;3401:15;3418:9;3380:20;:48::i;1441:1264:92:-;1682:27;1702:6;1682:19;:27::i;:::-;1678:100;;;1734:33;1760:6;1734:25;:33::i;:::-;1725:42;;1678:100;1960:19;1982:14;:59;;2021:11;-1:-1:-1;;;;;2021:18:92;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:59;;;1999:11;-1:-1:-1;;;;;1999:17:92;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:81;-1:-1:-1;;;;;;2231:23:92;;2249:4;2231:23;2227:157;;-1:-1:-1;;;;;2278:20:92;;2288:10;2278:20;2270:49;;;;-1:-1:-1;;;2270:49:92;;;;;;;:::i;:::-;2333:40;2344:6;2352:12;2366:6;2333:10;:40::i;:::-;2394:54;-1:-1:-1;;;;;2394:24:92;;2427:11;2441:6;2394:24;:54::i;:::-;2514:57;;;;;2497:14;;-1:-1:-1;;;;;2514:19:92;;;;;:57;;2534:9;;2545:6;;2497:14;;2556;;2514:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2497:74;;2586:36;2606:15;2586:19;:36::i;:::-;2582:117;;;2638:50;2664:15;2681:6;2638:25;:50::i;:::-;1441:1264;;;;;;;;:::o;2149:985:95:-;2355:56;2382:12;2396:6;2404;2355:26;:56::i;:::-;2346:65;;2422:16;2448:12;-1:-1:-1;;;;;2448:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2896:27;;;;;2422:52;;-1:-1:-1;;;;;;2896:19:95;;;;;:27;;2916:6;;2896:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;2888:62;;;;-1:-1:-1;;;2888:62:95;;;;;;;:::i;:::-;2991:34;;;;;2961:27;;-1:-1:-1;;;;;2991:19:95;;;;;:34;;3019:4;;2991:34;;;:::i;4155:291:98:-;4267:22;4263:177;;;4305:48;4340:4;4346:6;;4305:34;:48::i;:::-;4263:177;;;4384:45;4416:4;4422:6;;4384:31;:45::i;:::-;4155:291;;;:::o;2010:1000:103:-;2220:56;2247:12;2261:6;2269;2220:26;:56::i;:::-;2211:65;;2349:10;2362:12;-1:-1:-1;;;;;2362:17:103;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2349:32;;2391:22;2423:12;-1:-1:-1;;;;;2423:18:103;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2775:65;;;;;2391:53;;-1:-1:-1;;;;;;2775:13:103;;;;;:65;;2391:53;;2815:17;;2834:5;;2775:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2868:40:103;;;;;2851:14;;-1:-1:-1;;;;;2868:25:103;;;;;:40;;2902:4;;2868:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2851:57;;2919:84;2951:15;2968:9;2979:6;2987:15;2919:31;:84::i;1112:518:108:-;1311:17;1338:12;-1:-1:-1;;;;;1338:18:108;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1311:48;;1379:91;1420:10;1440:12;1455:6;1463;1379:40;:91::i;:::-;1370:100;;1481:29;1513:12;-1:-1:-1;;;;;1513:20:108;;1534:6;1542:9;1513:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1481:71;;1563:60;1584:15;1601:21;1563:20;:60::i;1185:819:103:-;1469:22;1501:12;-1:-1:-1;;;;;1501:18:103;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1469:53;;1594:10;1607:12;-1:-1:-1;;;;;1607:17:103;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1594:32;;1646:88;1687:15;1712:4;1719:6;1727;1646:40;:88::i;:::-;1637:97;;1856:14;1874:4;-1:-1:-1;;;;;1874:15:103;;1898;1916:9;1927:6;1935:5;1874:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1853:88;;;1952:45;1973:15;1990:6;1952:20;:45::i;1234:710:97:-;1459:17;1486:12;-1:-1:-1;;;;;1486:28:97;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1459:58;;1537:83;1578:10;1590:13;1605:6;1613;1537:40;:83::i;:::-;1719:31;;;;;1528:92;;-1:-1:-1;;;;;;1719:20:97;;;;;:31;;1740:1;;1528:92;;1719:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1793:37:97;;;;;1761:29;;-1:-1:-1;;;;;;1793:22:97;;;-1:-1:-1;1793:22:97;;:37;;1824:4;;1793:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1761:69;;1841:96;1873:12;1887:9;1898:21;1921:15;1841:31;:96::i;2650:421:105:-;2866:56;2893:12;2907:6;2915;2866:26;:56::i;:::-;2857:65;;2933:24;2960:12;-1:-1:-1;;;;;2960:19:105;;2980:9;2991:6;2960:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2933:65;;3009:55;3030:15;3047:16;3009:20;:55::i;:::-;2650:421;;;;;;:::o;2483:715:98:-;2661:49;2688:5;2695:6;2703;2661:26;:49::i;:::-;2828:22;;;;;2652:58;;-1:-1:-1;;;;;;2828:14:98;;;;;:22;;2652:58;;2828:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3050:26:98;;3071:4;3050:26;3046:146;;3092:15;3110:5;-1:-1:-1;;;;;3110:14:98;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3092:34;-1:-1:-1;3141:40:98;-1:-1:-1;;;;;3141:21:98;;3163:9;3174:6;3141:21;:40::i;1113:482:96:-;1306:17;1333:12;-1:-1:-1;;;;;1333:18:96;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2711:1004:92;2951:27;2971:6;2951:19;:27::i;:::-;2947:100;;;3003:33;3029:6;3003:25;:33::i;:::-;2994:42;;2947:100;-1:-1:-1;;;;;3238:23:92;;3256:4;3238:23;3234:156;;-1:-1:-1;;;;;3285:20:92;;3295:10;3285:20;3277:49;;;;-1:-1:-1;;;3277:49:92;;;;;;;:::i;:::-;3340:39;3351:6;3359:11;3372:6;3340:10;:39::i;:::-;3528:53;;;;;3510:14;;-1:-1:-1;;;;;3528:20:92;;;;;:53;;3549:9;;3560:6;;3568:12;;3528:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:74;;;3596:36;3616:15;3596:19;:36::i;2040:437:98:-;2291:15;2309:5;-1:-1:-1;;;;;2309:14:98;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2291:34;;2345:82;2386:8;2404:5;2412:6;2420;2345:40;:82::i;:::-;2438:32;;;;;2336:91;;-1:-1:-1;;;;;;2438:13:98;;;;;:32;;2336:91;;2460:9;;2438:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:437;;;;;:::o;2621:101:94:-;2704:11;2621:101;:::o;2836:466::-;-1:-1:-1;;;;;2991:24:94;;3010:4;2991:24;;:37;;;3020:8;3019:9;2991:37;2983:81;;;;-1:-1:-1;;;2983:81:94;;;;;;;:::i;:::-;3074:17;3147:34;;;3183:10;3195:7;3204:8;3124:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3124:89:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:156;;;3227:13;;;;3094:156;;:::i;:::-;;;;-1:-1:-1;;3094:156:94;;;;;;;;;;-1:-1:-1;3261:34:94;-1:-1:-1;;;;;3269:6:94;3261:28;3094:156;3261:28;:34::i;5134:1008:106:-;5318:9;5313:329;5337:3;:10;5333:1;:14;5313:329;;;5393:10;-1:-1:-1;;;;;5376:27:106;:3;5380:1;5376:6;;;;;;;;;;;;;;:13;;;-1:-1:-1;;;;;5376:27:106;;:61;;;;5432:4;-1:-1:-1;;;;;5407:30:106;:3;5411:1;5407:6;;;;;;;;;;;;;;:13;;;-1:-1:-1;;;;;5407:30:106;;5376:61;5368:90;;;;-1:-1:-1;;;5368:90:106;;;;;;;:::i;:::-;5473:14;5490:3;5494:1;5490:6;;;;;;;;;;;;;;:13;;;5473:30;;5521:27;5541:6;5521:19;:27::i;:::-;5517:115;;;5584:33;5610:6;5584:25;:33::i;:::-;5568:3;5572:1;5568:6;;;;;;;;;;;;;;:13;;:49;;;;;5517:115;-1:-1:-1;5349:3:106;;5313:329;;;;5652:10;:8;:10::i;:::-;-1:-1:-1;;;;;5652:28:106;;5689:5;5697:3;5652:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5876:9;5871:265;5891:27;;;5871:265;;;5947:44;5967:16;;5984:1;5967:19;;;;;;5947:44;5939:82;;;;-1:-1:-1;;;5939:82:106;;;;;;;:::i;:::-;6036:89;6062:16;;6079:1;6062:19;;;;;;;;;;;;:23;;;6087:3;6091:16;;6108:1;6091:19;;;;;;;;;;;;:25;;;6087:30;;;;;;;;;;;;;;:37;;;6036:25;:89::i;:::-;5920:3;;5871:265;;1636:422:108;1846:73;1888:12;1904:6;1912;1846:26;:73::i;:::-;1837:82;;1930:18;1951:12;-1:-1:-1;;;;;1951:21:108;;1973:6;1981:9;1951:40;;;;;;;;;;;;;;;;:::i;3441:294:98:-;3632:96;;;;;-1:-1:-1;;;;;3632:15:98;:46;;;;:96;;3687:4;;3694:8;;3704:4;;3710:8;;3720:1;;3723;;3726;;3632:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3441:294;;;;;;:::o;1328:280:107:-;1535:5;-1:-1:-1;;;;;1535:12:107;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2527:88:94:-;2602:6;2527:88;:::o;6236:1496:106:-;-1:-1:-1;;;;;6496:20:106;;6506:10;6496:20;;:47;;-1:-1:-1;;;;;;6520:23:106;;6538:4;6520:23;6496:47;6488:76;;;;-1:-1:-1;;;6488:76:106;;;;;;;:::i;:::-;6885:10;6905:34;6932:6;6905:26;:34::i;:::-;6885:55;;6950:32;6985:36;7005:15;6985:19;:36::i;:::-;:67;;7051:1;6985:67;;;7024:24;;;;;-1:-1:-1;;;;;7024:13:106;;;;;:24;;7038:9;;7024:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6950:102;;7082:63;7122:4;7128:7;:16;;;7082:39;:63::i;:::-;7063:16;;;:82;7156:10;:8;:10::i;:::-;-1:-1:-1;;;;;7156:19:106;;7184:5;7192:6;7200;7208:9;7219:7;7156:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7242:36;7262:15;7242:19;:36::i;:::-;7238:488;;;7586:24;;;;;7558:25;;-1:-1:-1;;;;;7586:13:106;;;;;:24;;7600:9;;7586:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7558:52;-1:-1:-1;7624:91:106;7650:15;7667:47;7558:52;7689:24;7667:21;:47::i;1950:968:97:-;2155:56;2182:12;2196:6;2204;2155:26;:56::i;:::-;2600:37;;;;;2146:65;;-1:-1:-1;;;;;;2600:21:97;;;;;:37;;2622:1;;1210:17;;2600:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:16;2704:12;-1:-1:-1;;;;;2704:28:97;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2678:57;;2745:27;2775:9;-1:-1:-1;;;;;2775:19:97;;2803:4;2775:34;;;;;;;;;;;;;;;:::i;1614:315:107:-;1848:5;-1:-1:-1;;;;;1848:12:107;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;1828:524:105:-;2034:22;2066:12;-1:-1:-1;;;;;2066:23:105;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2034:58;;2113:97;2154:15;2179:12;2194:7;2203:6;2113:40;:97::i;:::-;2103:107;;2221:18;2242:12;-1:-1:-1;;;;;2242:23:105;;2266:9;2277:7;2242:43;;;;;;;;;;;;;;;;:::i;1108:593:104:-;1305:17;1332:12;-1:-1:-1;;;;;1332:23:104;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:53;;1378:91;1419:10;1439:12;1454:6;1462;1378:40;:91::i;:::-;1480:28;;;;;1369:100;;-1:-1:-1;;;;;;1480:20:104;;;;;:28;;1369:100;;1480:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1550:37:104;;;;;1518:29;;-1:-1:-1;;;;;;1550:22:104;;;-1:-1:-1;1550:22:104;;:37;;1581:4;;1550:37;;;:::i;3480:287:94:-;3572:27;3592:6;3572:19;:27::i;:::-;3568:100;;;3624:33;3650:6;3624:25;:33::i;:::-;3615:42;;3568:100;3714:46;3740:10;:8;:10::i;:::-;-1:-1:-1;;;;;3714:17:94;;;3753:6;3714:17;:46::i;:::-;3480:287;;:::o;1164:703:102:-;1384:54;1411:10;1423:6;1431;1384:26;:54::i;:::-;1513:27;;;;;1375:63;;-1:-1:-1;;;;;;1513:19:102;;;;;:27;;1375:63;;1513:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:22;1583:10;-1:-1:-1;;;;;1583:16:102;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11707:2544:106;-1:-1:-1;;;;;11972:20:106;;11982:10;11972:20;;:47;;-1:-1:-1;;;;;;11996:23:106;;12014:4;11996:23;11972:47;11964:76;;;;-1:-1:-1;;;11964:76:106;;;;;;;:::i;:::-;12218:29;12263:16;12250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12250:37:106;-1:-1:-1;12218:69:106;-1:-1:-1;12386:41:106;12444:16;12430:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12430:38:106;;12386:82;;12483:9;12478:486;12498:27;;;12478:486;;;12554:44;12574:16;;12591:1;12574:19;;;;;;12554:44;12546:82;;;;-1:-1:-1;;;12546:82:106;;;;;;;:::i;:::-;12658:14;;12643:12;;12673:16;;12690:1;12673:19;;;;;;;;;;;;:25;;;12658:41;;;;;;;;;;;;;;12643:56;;12717:7;:25;;;12713:241;;;12781:16;12791:5;12781:9;:16::i;:::-;12762:13;12776:1;12762:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;12762:35:106;;;-1:-1:-1;;;;;12762:35:106;;;;;12713:241;;;12866:13;12873:5;12866:6;:13::i;:::-;:73;;12902:16;12912:5;12902:9;:16::i;:::-;-1:-1:-1;;;;;12902:26:106;;12929:9;12902:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12866:73;;;12882:9;-1:-1:-1;;;;;12882:17:106;;12866:73;12836:24;12861:1;12836:27;;;;;;;;;;;;;:103;;;;;12713:241;-1:-1:-1;12527:3:106;;12478:486;;;;12977:7;:25;;;12973:138;;;13045:10;:8;:10::i;:::-;-1:-1:-1;;;;;13045:29:106;;13075:9;13086:13;13045:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13045:55:106;;;;;;;;;;;;:::i;:::-;13018:82;;12973:138;13165:63;13205:4;13211:7;:16;;;13165:39;:63::i;:::-;13146:16;;;:82;13238:10;:8;:10::i;:::-;-1:-1:-1;;;;;13238:19:106;;13258:6;13266;13274:9;13285:7;13238:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13363:44:106;;-1:-1:-1;13424:16:106;;-1:-1:-1;;13410:38:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13410:38:106;;13363:85;;13462:7;:25;;;13458:478;;;13533:10;:8;:10::i;:::-;-1:-1:-1;;;;;13533:29:106;;13563:9;13574:13;13533:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13533:55:106;;;;;;;;;;;;:::i;:::-;13503:85;;13458:478;;;13624:9;13619:307;13639:27;;;13619:307;;;13706:14;;13691:12;;13721:16;;13738:1;13721:19;;;;;;;;;;;;:25;;;13706:41;;;;;;;;;;;;;;13691:56;;13798:13;13805:5;13798:6;:13::i;:::-;:113;;13874:16;13884:5;13874:9;:16::i;:::-;-1:-1:-1;;;;;13874:26:106;;13901:9;13874:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13798:113;;;13834:9;-1:-1:-1;;;;;13834:17:106;;13798:113;13765:27;13793:1;13765:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;13668:3:106;;13619:307;;;;13458:478;14010:9;14005:240;14025:27;;;14005:240;;;14073:161;14116:16;;14133:1;14116:19;;;;;;;;;;;;:23;;;14157:63;14192:24;14217:1;14192:27;;;;;;;;;;;;;;14157;14185:1;14157:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;14073:161::-;14054:3;;14005:240;;2193:461:101;2365:51;2392:7;2401:6;2409;2365:26;:51::i;:::-;2356:60;;2522:14;2539:7;-1:-1:-1;;;;;2539:14:101;;2554:6;2539:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2522:39;;2572:75;2604:6;2612:9;2623:6;2631:15;2572:31;:75::i;1873:693:102:-;2082:22;2114:10;-1:-1:-1;;;;;2114:16:102;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:404:96;1805:56;1832:12;1846:6;1854;1805:26;:56::i;:::-;1796:65;;1872:14;1889:12;-1:-1:-1;;;;;1889:19:96;;1909:6;1917:9;1936:4;1889:53;;;;;;;;;;;;;;;;;:::i;4175:158:94:-;4258:13;4295:31;4322:3;4295:26;:31::i;:::-;4283:43;4175:158;-1:-1:-1;;;4175:158:94:o;1971:764:99:-;2198:79;2240:12;2256;2270:6;2198:26;:79::i;:::-;2183:94;;2514:26;2557:12;-1:-1:-1;;;;;2557:18:99;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2588:53;;;;;2514:64;;-1:-1:-1;;;;;;2588:28:99;;;;;:53;;2617:12;;2631:9;;2588:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2652:76;2673:15;2690:12;-1:-1:-1;;;;;2690:23:99;;2714:12;2690:37;;;;;;;;;;;;;;;:::i;3518:163:100:-;3576:7;3602:27;3622:6;3602:19;:27::i;:::-;:72;;3668:6;3602:72;;;3632:33;3658:6;3632:25;:33::i;:::-;3595:79;;3518:163;;;;:::o;2421:369:69:-;2502:78;2536:6;2511:21;:31;;11425:3:12;2502:8:69;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:69;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:12;2732:8:69;:51::i;3883:328:100:-;-1:-1:-1;;;;;4059:26:100;;4080:4;4059:26;4055:94;;4101:37;-1:-1:-1;;;;;4101:18:100;;4120:9;4131:6;4101:18;:37::i;:::-;4159:45;4180:15;4197:6;4159:20;:45::i;2337:329::-;2506:22;2557:49;2584:5;2591:6;2599;2557:26;:49::i;:::-;2540:66;-1:-1:-1;2617:42:100;-1:-1:-1;;;;;2617:17:100;;2635:7;2540:66;2617:17;:42::i;:::-;2337:329;;;;;;:::o;4395:213::-;4489:36;4509:15;4489:19;:36::i;:::-;4485:117;;;4541:50;4567:15;4584:6;4541:25;:50::i;5451:358:94:-;5653:66;5644:75;5736:66;5643:159;;5451:358::o;7281:375::-;7356:7;7376:12;7390:13;7407:31;7434:3;7407:26;:31::i;:::-;7375:63;;;;7453:33;7482:3;7453:28;:33::i;:::-;7449:179;;;7602:1;7596:4;7589:15;7644:5;7281:375;-1:-1:-1;;;7281:375:94:o;428:250:68:-;615:3;611:11;;;649:9;;;645:17;;588:84::o;6533:392:94:-;6624:12;6639:20;6655:3;6639:15;:20::i;:::-;6890:19;;;;-1:-1:-1;;6876:43:94:o;2810:553:100:-;2940:22;2991;3006:6;2991:14;:22::i;:::-;2974:39;-1:-1:-1;;;;;;3203:23:100;;3221:4;3203:23;3199:158;;-1:-1:-1;;;;;3250:20:100;;3260:10;3250:20;3242:49;;;;-1:-1:-1;;;3242:49:100;;;;;;;:::i;:::-;3305:41;3316:6;3324:5;3331:14;4339:360:94;4467:11;4463:24;;4480:7;;4463:24;4521:15;;;4534:1;4521:15;;;;;;;;;4496:22;;4521:15;;;;;;;;;;;-1:-1:-1;4521:15:94;4496:40;;4558:5;4546:6;4553:1;4546:9;;;;;;;;-1:-1:-1;;;;;4546:17:94;;;;:9;;;;;;;;;;;:17;4600:16;;;4614:1;4600:16;;;;;;;;;4573:24;;4600:16;;;;;;;;;;;;-1:-1:-1;4600:16:94;4573:43;;4639:6;4626:7;4634:1;4626:10;;;;;;;;;;;;;:19;;;;;4656:36;4668:6;4676;4684:7;4656:11;:36::i;1001:507:77:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:77;;;;;-1:-1:-1;;;;;1232:15:77;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1332:53:77;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;4452:376:98:-;4591:6;4571:17;4726:96;4750:9;4746:1;:13;4726:96;;;4780:6;;4787:1;4780:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4780:25:98;;4806:4;4780:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4761:3:98;;4726:96;;4834:1453;4970:6;4993:33;4970:6;5029:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4993:73;;5777:9;5772:419;5796:9;5792:1;:13;5772:419;;;5919:261;;;;;;;;;;6123:42;5919:261;;;;5980:6;;5987:1;5980:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5919:261:98;;;;;6017:1;5919:261;;;;6044:4;-1:-1:-1;;;;;5919:261:98;;;;;6093:4;-1:-1:-1;;;;;5919:261:98;;;;5910:3;5914:1;5910:6;;;;;;;;;;;;;;;;;:270;5807:3;;5772:419;;;;6247:10;:8;:10::i;:::-;-1:-1:-1;;;;;6247:28:98;;6276:3;6247:33;;;;;;;;;;;;;;;:::i;1514:214:77:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;3494:278:69:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:69;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;896:312:64:-;1193:6;1173:27;;896:312::o;7900:580:106:-;8020:12;8060:17;8052:4;:25;;;;;;;;;8048:426;;;8100:53;8144:8;8100:43;:53::i;:::-;8093:60;;;;8048:426;8195:22;8187:4;:30;;;;;;;;;:80;;;-1:-1:-1;8241:26:106;8233:4;:34;;;;;;;;;8187:80;:133;;;-1:-1:-1;8291:29:106;8283:4;:37;;;;;;;;;8187:133;8170:304;;;8352:51;8394:8;8352:41;:51::i;8170:304::-;8434:29;;-1:-1:-1;;;8434:29:106;;;;;;;:::i;1375:166:68:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:12;1452:8:68;:37::i;:::-;-1:-1:-1;1511:5:68;;;1375:166::o;2762:110:81:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:81;;;1705:105::o;14420:800:106:-;14540:12;14580:17;14572:4;:25;;;;;;;;;14568:646;;;14620:53;14664:8;14620:43;:53::i;14568:646::-;14716:22;14708:4;:30;;;;;;;;;14704:500;;;14765:57;14813:8;14765:47;:57::i;14704:500::-;14855:26;14847:4;:34;;;;;;;;;14843:361;;;14908:61;14960:8;14908:51;:61::i;14843:361::-;15002:29;14994:4;:37;;;;;;;;;14990:214;;;15058:63;15112:8;15058:53;:63::i;7850:404:94:-;7921:12;7935:13;7967:20;7983:3;7967:15;:20::i;:::-;7960:27;;8233:4;8227:11;8218:20;;8204:44;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5926:505:94:-;6275:66;6266:75;6358:66;6265:159;;5926:505::o;8410:595::-;8470:7;8996:1;8941:27;8964:3;8941:22;:27::i;:::-;8970:20;8924:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8924:67:94;;;;;;8914:78;;8924:67;8914:78;;;;8906:91;;8410:595;-1:-1:-1;;8410:595:94:o;4705:628::-;4850:33;4913:6;:13;4886:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4850:77;;4942:9;4937:346;4957:6;:13;4953:1;:17;4937:346;;;5000:272;;;;;;;;;;5215:42;5000:272;;;;5061:6;5068:1;5061:9;;;;;;;;;;;;;;-1:-1:-1;;;;;5000:272:94;;;;;5098:7;5106:1;5098:10;;;;;;;;;;;;;;5000:272;;;;5134:6;-1:-1:-1;;;;;5000:272:94;;;;;5185:4;-1:-1:-1;;;;;5000:272:94;;;;4991:3;4995:1;4991:6;;;;;;;;;;;;;;;;;:281;4972:3;;4937:346;;;;5293:10;:8;:10::i;:::-;-1:-1:-1;;;;;5293:28:94;;5322:3;5293:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2324:914:77;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:77;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;5057:714:69:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:69;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:12;5703:7:69;:37::i;8486:557:106:-;8579:12;8603:34;8640:39;8670:8;8640:29;:39::i;:::-;8603:76;-1:-1:-1;8702:57:106;8694:4;:65;;;;;;;;;8690:347;;;8782:55;8828:8;8782:45;:55::i;:::-;8775:62;;;;;8690:347;9018:8;9011:15;;;;;15226:728;15319:12;15343:34;15380:39;15410:8;15380:29;:39::i;:::-;15343:76;-1:-1:-1;15442:60:106;15434:4;:68;;;;;;;;;15430:518;;;15525:57;15573:8;15525:47;:57::i;15430:518::-;15611:57;15603:4;:65;;;;;;;;;15599:349;;;15691:55;15737:8;15691:45;:55::i;17991:763::-;18088:12;18112:14;18135:37;18163:8;18135:27;:37::i;:::-;18129:44;;;;;;;;18112:61;-1:-1:-1;18188:83:106;;;18184:564;;18294:65;18340:8;18350;18294:45;:65::i;18184:564::-;18398:61;18392:68;18380:80;;:8;:80;;;18376:372;;;18483:63;18527:8;18537;18483:43;:63::i;18816:584::-;18917:12;18941:14;18964:37;18992:8;18964:27;:37::i;:::-;18958:44;;;;;;;;18941:61;-1:-1:-1;19017:87:106;;;19013:381;;19127:65;19173:8;19183;19127:45;:65::i;19448:781::-;19567:12;19595:14;19618:37;19646:8;19618:27;:37::i;:::-;19612:44;;;;;;;;19595:61;-1:-1:-1;19671:77:106;;;19667:556;;19771:65;19817:8;19827;19771:45;:65::i;19667:556::-;19875:59;19869:66;;1459:126:12;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;9196:174:94:-;9296:66;9290:72;;9196:174::o;1159:122:11:-;1219:8;1257:4;1246:28;;;;;;;;;;;;:::i;9049:523:106:-;9144:12;9169:26;9197:23;9224:53;9268:8;9224:43;:53::i;:::-;9168:109;;;;9395:27;9412:9;9395:16;:27::i;:::-;:170;;9557:8;9395:170;;;9452:57;9511:9;9522:15;9441:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9376:189;9049:523;-1:-1:-1;;;;9049:523:106:o;1287:122:11:-;1347:8;1385:4;1374:28;;;;;;;;;;;;:::i;15960:605:106:-;16057:12;16082:19;16103:18;16125:52;16168:8;16125:42;:52::i;:::-;16081:96;;;;16192:32;16212:11;16192:19;:32::i;:::-;16188:371;;;16254:38;16280:11;16254:25;:38::i;:::-;16240:52;;16324:60;16386:11;16399:10;16313:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16306:104;;;;;;16188:371;16540:8;16533:15;;;;;;16571:567;16666:12;16690:19;16712:53;16756:8;16712:43;:53::i;:::-;16690:75;;16780:32;16800:11;16780:19;:32::i;:::-;16776:356;;;16842:38;16868:11;16842:25;:38::i;:::-;16828:52;;16912:57;16971:11;16901:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16894:89;;;;;20636:585;20763:12;20792:19;20813:18;20835:50;20876:8;20835:40;:50::i;:::-;20791:94;;;;20900:32;20920:11;20900:19;:32::i;:::-;20896:319;;;20962:38;20988:11;20962:25;:38::i;:::-;20948:52;;21032:8;21042:11;21055:10;21021:45;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21014:52;;;;;;20896:319;21196:8;21189:15;;;;;;21227:550;21352:12;21380:19;21402:51;21444:8;21402:41;:51::i;:::-;21380:73;;21468:32;21488:11;21468:19;:32::i;:::-;21464:307;;;21530:38;21556:11;21530:25;:38::i;:::-;21516:52;;21600:8;21610:11;21589:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21582:40;;;;;21464:307;21752:8;21745:15;;;;;1692:3378:12;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1603:253:11;1701:26;1729:23;1812:4;1801:48;;;;;;;;;;;;:::i;:::-;1768:81;;;;-1:-1:-1;1603:253:11;-1:-1:-1;;;1603:253:11:o;11265:436:106:-;11336:4;;;11392:269;11416:9;:16;11412:1;:20;11392:269;;;11453:14;11470:9;11480:1;11470:12;;;;;;;;;;;;;;11453:29;;11500:27;11520:6;11500:19;:27::i;:::-;11496:155;;;11562:33;11588:6;11562:25;:33::i;:::-;11547:9;11557:1;11547:12;;;;;;;;;;;;;:48;;;;;11632:4;11613:23;;11496:155;-1:-1:-1;11434:3:106;;11392:269;;;-1:-1:-1;11678:16:106;11265:436;-1:-1:-1;;11265:436:106:o;2269:207:11:-;2342:19;2363:18;2434:4;2423:46;;;;;;;;;;;;:::i;2482:167::-;2556:19;2616:4;2605:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8444:6;8431:20;8456:48;8498:5;8456:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;12997:4;;-1:-1;;4175:30;12980:3;12976:19;;12972:30;12969:2;;;4107:1;;13005:12;12969:2;13033:20;12997:4;13033:20;:::i;:::-;3999:4;4175:30;;7472:20;13119:16;13112:75;13310:22;;4175:30;13310:22;18755:20;3999:4;13275:5;13271:16;13264:75;13463:22;;4175:30;13463:22;18755:20;13310:22;13428:5;13424:16;13417:75;13609:22;;;;4175:30;13609:22;18755:20;13463:22;13574:5;13570:16;13563:75;;12997:4;4175:30;13716:19;13703:33;13689:47;;13756:18;13748:6;13745:30;13742:2;;;4107:1;;13778:12;13742:2;13823:58;13877:3;3999:4;13868:6;4175:30;13853:22;;13823:58;:::i;:::-;13805:16;;;13798:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5676:707;;5793:3;5786:4;5778:6;5774:17;5770:27;5760:2;;-1:-1;;5801:12;5760:2;5848:6;5835:20;5870:80;5885:64;5942:6;5885:64;:::i;5870:80::-;5978:21;;;5861:89;-1:-1;6022:4;6035:14;;;;6010:17;;;6124;;;6115:27;;;;6112:36;-1:-1;6109:2;;;6161:1;;6151:12;6109:2;6186:1;6171:206;6196:6;6193:1;6190:13;6171:206;;;18755:20;;6264:50;;6328:14;;;;6356;;;;6218:1;6211:9;6171:206;;6409:722;;6537:3;6530:4;6522:6;6518:17;6514:27;6504:2;;-1:-1;;6545:12;6504:2;6585:6;6579:13;6607:80;6622:64;6679:6;6622:64;:::i;6607:80::-;6715:21;;;6598:89;-1:-1;6759:4;6772:14;;;;6747:17;;;6861;;;6852:27;;;;6849:36;-1:-1;6846:2;;;6898:1;;6888:12;6846:2;6923:1;6908:217;6933:6;6930:1;6927:13;6908:217;;;18903:13;;7001:61;;7076:14;;;;7104;;;;6955:1;6948:9;6908:217;;7139:124;7203:20;;7228:30;7203:20;7228:30;:::i;7901:440::-;;8002:3;7995:4;7987:6;7983:17;7979:27;7969:2;;-1:-1;;8010:12;7969:2;8057:6;8044:20;96499:18;96491:6;96488:30;96485:2;;;-1:-1;;96521:12;96485:2;8079:64;96662:4;-1:-1;;7995:4;96579:6;96575:17;96571:33;96652:15;8079:64;:::i;:::-;8070:73;;8163:6;8156:5;8149:21;8267:3;96662:4;8258:6;8191;8249:16;;8246:25;8243:2;;;8284:1;;8274:12;8243:2;108610:6;96662:4;8191:6;8187:17;96662:4;8225:5;8221:16;108587:30;108666:1;108648:16;;;96662:4;108648:16;108641:27;8225:5;7962:379;-1:-1;;7962:379::o;12060:158::-;12141:20;;12166:47;12141:20;12166:47;:::i;12225:156::-;12305:20;;113610:1;113600:12;;113590:2;;113626:1;;113616:12;13946:1120;;14068:4;14056:9;14051:3;14047:19;14043:30;14040:2;;;-1:-1;;14076:12;14040:2;14104:20;14068:4;14104:20;:::i;:::-;14095:29;;14189:17;14176:31;14227:18;;14219:6;14216:30;14213:2;;;14204:1;;14249:12;14213:2;14294:89;14379:3;14370:6;14359:9;14355:22;14294:89;:::i;:::-;14276:16;14269:115;14482:2;14471:9;14467:18;14454:32;14440:46;;14227:18;14498:6;14495:30;14492:2;;;14204:1;;14528:12;14492:2;14573:74;14643:3;14634:6;14623:9;14619:22;14573:74;:::i;:::-;14482:2;14559:5;14555:16;14548:100;14741:2;14730:9;14726:18;14713:32;14699:46;;14227:18;14757:6;14754:30;14751:2;;;14204:1;;14787:12;14751:2;;14832:58;14886:3;14877:6;14866:9;14862:22;14832:58;:::i;:::-;14741:2;14818:5;14814:16;14807:84;;14998:46;15040:3;14965:2;15020:9;15016:22;14998:46;:::i;:::-;14965:2;14984:5;14980:16;14973:72;14034:1032;;;;:::o;15110:166::-;;15228:3;15219:6;15214:3;15210:16;15206:26;15203:2;;;-1:-1;;15235:12;15203:2;-1:-1;15255:15;15196:80;-1:-1;15196:80::o;18966:126::-;19031:20;;105880:4;105869:16;;114068:33;;114058:2;;114115:1;;114105:12;19099:241;;19203:2;19191:9;19182:7;19178:23;19174:32;19171:2;;;-1:-1;;19209:12;19171:2;85:6;72:20;97:33;124:5;97:33;:::i;19347:263::-;;19462:2;19450:9;19441:7;19437:23;19433:32;19430:2;;;-1:-1;;19468:12;19430:2;226:6;220:13;238:33;265:5;238:33;:::i;19617:617::-;;;;;19772:3;19760:9;19751:7;19747:23;19743:33;19740:2;;;-1:-1;;19779:12;19740:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;19831:63;-1:-1;19931:2;19970:22;;72:20;97:33;72:20;97:33;:::i;:::-;19734:500;;19939:63;;-1:-1;;;;20039:2;20078:22;;18755:20;;20147:2;20186:22;18755:20;;19734:500::o;20241:582::-;;;;20427:2;20415:9;20406:7;20402:23;20398:32;20395:2;;;-1:-1;;20433:12;20395:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;20485:63;-1:-1;20613:2;20598:18;;20585:32;20637:18;20626:30;;20623:2;;;-1:-1;;20659:12;20623:2;20697:110;20799:7;20790:6;20779:9;20775:22;20697:110;:::i;:::-;20389:434;;20679:128;;-1:-1;20679:128;;-1:-1;;;;20389:434::o;20830:609::-;;;;;20984:2;20972:9;20963:7;20959:23;20955:32;20952:2;;;-1:-1;;20990:12;20952:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;21042:63;-1:-1;21142:2;21178:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;21150:60;-1:-1;21275:2;21260:18;;21247:32;21299:18;21288:30;;;21285:2;;;-1:-1;;21321:12;21285:2;21406:6;21395:9;21391:22;;;7670:3;7663:4;7655:6;7651:17;7647:27;7637:2;;-1:-1;;7678:12;7637:2;7721:6;7708:20;21299:18;7740:6;7737:30;7734:2;;;-1:-1;;7770:12;7734:2;7865:3;21142:2;7845:17;7806:6;7831:32;;7828:41;7825:2;;;-1:-1;;7872:12;7825:2;20946:493;;;;-1:-1;;21142:2;7802:17;;-1:-1;;;20946:493::o;21446:491::-;;;;21584:2;21572:9;21563:7;21559:23;21555:32;21552:2;;;-1:-1;;21590:12;21552:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;21642:63;21742:2;21781:22;;18755:20;;-1:-1;21850:2;21889:22;;;18755:20;;21546:391;-1:-1;;;21546:391::o;21944:522::-;;;;22100:2;22088:9;22079:7;22075:23;22071:32;22068:2;;;-1:-1;;22106:12;22068:2;22164:17;22151:31;22202:18;22194:6;22191:30;22188:2;;;-1:-1;;22224:12;22188:2;22262:80;22334:7;22325:6;22314:9;22310:22;22262:80;:::i;:::-;22244:98;;;;-1:-1;22379:2;22418:22;;;;18755:20;;22062:404;-1:-1;;;;22062:404::o;22473:457::-;;;22642:2;22630:9;22621:7;22617:23;22613:32;22610:2;;;-1:-1;;22648:12;22610:2;22706:17;22693:31;22744:18;22736:6;22733:30;22730:2;;;-1:-1;;22766:12;22730:2;22804:110;22906:7;22897:6;22886:9;22882:22;22804:110;:::i;:::-;22786:128;;;;-1:-1;22604:326;-1:-1;;;;22604:326::o;22937:390::-;;23076:2;;23064:9;23055:7;23051:23;23047:32;23044:2;;;-1:-1;;23082:12;23044:2;23133:17;23127:24;23171:18;23163:6;23160:30;23157:2;;;-1:-1;;23193:12;23157:2;23279:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;12781:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;23213:98;23038:289;-1:-1;;;;;;;23038:289::o;23334:917::-;;;;;23599:2;23587:9;23578:7;23574:23;23570:32;23567:2;;;-1:-1;;23605:12;23567:2;23663:17;23650:31;23701:18;;23693:6;23690:30;23687:2;;;-1:-1;;23723:12;23687:2;23845:6;23834:9;23830:22;;;4998:3;4991:4;4983:6;4979:17;4975:27;4965:2;;-1:-1;;5006:12;4965:2;5053:6;5040:20;5075:111;5090:95;5178:6;5090:95;:::i;5075:111::-;5192:16;5228:6;5221:5;5214:21;5258:4;;5275:3;5271:14;5264:21;;5258:4;5250:6;5246:17;5372:4;5380:3;5258:4;5372;5364:6;5360:17;5250:6;5351:27;;5348:36;5345:2;;;-1:-1;;5387:12;5345:2;-1:-1;5413:10;;5407:237;5432:6;5429:1;5426:13;5407:237;;;5372:4;17828:9;17823:3;17819:19;17815:30;17812:2;;;-1:-1;;17848:12;17812:2;17876:20;5372:4;17876:20;:::i;:::-;17978:71;18045:3;18021:22;17978:71;:::i;:::-;17960:16;17953:97;18145:64;18205:3;5258:4;18185:9;18181:22;18145:64;:::i;:::-;18127:16;;;18120:90;18273:2;18327:22;;;18755:20;18288:16;;;18281:75;18452:49;18497:3;23599:2;18473:22;;18452:49;:::i;:::-;23599:2;18438:5;18434:16;18427:75;18602:57;18655:3;18568;18635:9;18631:22;18602:57;:::i;:::-;18568:3;18584:16;;18577:83;5500:81;;5454:1;5447:9;;;;;5595:14;;;;5623;;;;5407:237;;;-1:-1;23743:119;;-1:-1;23938:22;;18755:20;;-1:-1;;;18273:2;24020:18;;24007:32;;-1:-1;;24048:30;;;24045:2;;;-1:-1;;24081:12;24045:2;;24119:116;24227:7;24218:6;24207:9;24203:22;24119:116;:::i;:::-;23561:690;;;;-1:-1;24101:134;-1:-1;;;;23561:690::o;24258:392::-;;24398:2;24386:9;24377:7;24373:23;24369:32;24366:2;;;-1:-1;;24404:12;24366:2;24455:17;24449:24;24493:18;24485:6;24482:30;24479:2;;;-1:-1;;24515:12;24479:2;24545:89;24626:7;24617:6;24606:9;24602:22;24545:89;:::i;24657:257::-;;24769:2;24757:9;24748:7;24744:23;24740:32;24737:2;;;-1:-1;;24775:12;24737:2;7351:6;7345:13;7363:30;7387:5;7363:30;:::i;24921:859::-;;;;;;;25105:3;25093:9;25084:7;25080:23;25076:33;25073:2;;;-1:-1;;25112:12;25073:2;7216:6;7203:20;7228:30;7252:5;7228:30;:::i;:::-;25164:60;-1:-1;25261:2;25300:22;;72:20;97:33;72:20;97:33;:::i;:::-;25269:63;-1:-1;25369:2;25408:22;;18755:20;;-1:-1;25495:51;25538:7;25477:2;25514:22;;25495:51;:::i;:::-;25485:61;;25583:3;25627:9;25623:22;7472:20;25592:63;;25692:3;25736:9;25732:22;7472:20;25701:63;;25067:713;;;;;;;;:::o;25787:1293::-;;;;;;;;26102:3;26090:9;26081:7;26077:23;26073:33;26070:2;;;-1:-1;;26109:12;26070:2;7485:6;7472:20;26161:63;;26261:2;26318:9;26314:22;12141:20;12166:47;12207:5;12166:47;:::i;:::-;26269:77;-1:-1;26383:2;26422:22;;72:20;97:33;72:20;97:33;:::i;:::-;26391:63;-1:-1;26491:2;26538:22;;358:20;383:41;358:20;383:41;:::i;:::-;26499:71;-1:-1;26635:3;26620:19;;26607:33;26660:18;26649:30;;;26646:2;;;-1:-1;;26682:12;26646:2;26712:86;26790:7;26781:6;26770:9;26766:22;26712:86;:::i;:::-;26702:96;;26863:3;26852:9;26848:19;26835:33;26821:47;;26660:18;26880:6;26877:30;26874:2;;;-1:-1;;26910:12;26874:2;;26948:116;27056:7;27047:6;27036:9;27032:22;26948:116;:::i;:::-;26064:1016;;;;-1:-1;26064:1016;;-1:-1;26064:1016;;;;26930:134;;-1:-1;;;26064:1016::o;27087:1175::-;;;;;;;;27340:3;27328:9;27319:7;27315:23;27311:33;27308:2;;;-1:-1;;27347:12;27308:2;7485:6;7472:20;27399:63;;27499:2;27556:9;27552:22;12141:20;12166:47;12207:5;12166:47;:::i;:::-;27507:77;-1:-1;27621:2;27660:22;;72:20;97:33;72:20;97:33;:::i;:::-;27629:63;-1:-1;27729:2;27768:22;;72:20;97:33;72:20;97:33;:::i;:::-;27737:63;-1:-1;27865:3;27850:19;;27837:33;27890:18;27879:30;;27876:2;;;-1:-1;;27912:12;27876:2;27942:86;28020:7;28011:6;28000:9;27996:22;27942:86;:::i;:::-;27932:96;;;28065:3;28109:9;28105:22;18755:20;28074:63;;28174:3;28218:9;28214:22;18755:20;28183:63;;27302:960;;;;;;;;;;:::o;28269:775::-;;;;;;28457:3;28445:9;28436:7;28432:23;28428:33;28425:2;;;-1:-1;;28464:12;28425:2;8612:6;8599:20;8624:49;8667:5;8624:49;:::i;:::-;28516:79;-1:-1;28632:2;28671:22;;72:20;97:33;72:20;97:33;:::i;:::-;28640:63;-1:-1;28740:2;28779:22;;72:20;97:33;72:20;97:33;:::i;:::-;28419:625;;;;-1:-1;28748:63;;28848:2;28887:22;;18755:20;;-1:-1;28956:3;28996:22;18755:20;;28419:625;-1:-1;;28419:625::o;29051:1159::-;;;;;;;;;29293:3;29281:9;29272:7;29268:23;29264:33;29261:2;;;-1:-1;;29300:12;29261:2;8789:6;8776:20;8801:57;8852:5;8801:57;:::i;:::-;29352:87;-1:-1;29476:2;29515:22;;72:20;97:33;72:20;97:33;:::i;:::-;29484:63;-1:-1;29584:2;29623:22;;18755:20;;-1:-1;29692:2;29731:22;;18755:20;;-1:-1;29800:3;29837:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;29809:60;-1:-1;29925:51;29968:7;29906:3;29944:22;;29925:51;:::i;:::-;29915:61;;30013:3;30057:9;30053:22;7472:20;30022:63;;30122:3;30166:9;30162:22;7472:20;30131:63;;29255:955;;;;;;;;;;;:::o;30217:1033::-;;;;;;;;30442:3;30430:9;30421:7;30417:23;30413:33;30410:2;;;-1:-1;;30449:12;30410:2;8971:6;8958:20;8983:54;9031:5;8983:54;:::i;:::-;30501:84;-1:-1;30622:2;30661:22;;72:20;97:33;72:20;97:33;:::i;:::-;30630:63;-1:-1;30730:2;30769:22;;18755:20;;-1:-1;30838:2;30877:22;;18755:20;;-1:-1;30965:51;31008:7;30946:3;30984:22;;30965:51;:::i;:::-;30955:61;;31053:3;31097:9;31093:22;7472:20;31062:63;;31162:3;31206:9;31202:22;7472:20;31171:63;;30404:846;;;;;;;;;;:::o;31557:396::-;;;31693:2;31681:9;31672:7;31668:23;31664:32;31661:2;;;-1:-1;;31699:12;31661:2;9144:6;9131:20;9156:48;9198:5;9156:48;:::i;:::-;31751:78;31866:2;31905:22;;;;18755:20;;-1:-1;;;31655:298::o;32744:909::-;;;;;;;32953:3;32941:9;32932:7;32928:23;32924:33;32921:2;;;-1:-1;;32960:12;32921:2;9658:6;9645:20;9670:53;9717:5;9670:53;:::i;:::-;33012:83;-1:-1;33132:2;33171:22;;72:20;97:33;72:20;97:33;:::i;:::-;33140:63;-1:-1;33240:2;33279:22;;72:20;97:33;72:20;97:33;:::i;:::-;33248:63;-1:-1;33348:2;33387:22;;72:20;97:33;72:20;97:33;:::i;:::-;32915:738;;;;-1:-1;32915:738;;33456:3;33496:22;;18755:20;;33565:3;33605:22;;;18755:20;;-1:-1;32915:738;-1:-1;;32915:738::o;37454:677::-;;;;;37639:3;37627:9;37618:7;37614:23;37610:33;37607:2;;;-1:-1;;37646:12;37607:2;10573:6;10560:20;10585:63;10642:5;10585:63;:::i;:::-;37698:93;-1:-1;37828:2;37867:22;;72:20;97:33;72:20;97:33;:::i;:::-;37836:63;-1:-1;37936:2;37975:22;;72:20;97:33;72:20;97:33;:::i;:::-;37601:530;;;;-1:-1;37944:63;;38044:2;38083:22;18755:20;;-1:-1;;37601:530::o;38138:911::-;;;;;;;38348:3;38336:9;38327:7;38323:23;38319:33;38316:2;;;-1:-1;;38355:12;38316:2;10764:6;10751:20;10776:57;10827:5;10776:57;:::i;:::-;38407:87;-1:-1;38531:2;38570:22;;72:20;97:33;72:20;97:33;:::i;:::-;38539:63;-1:-1;38639:2;38678:22;;72:20;97:33;72:20;97:33;:::i;:::-;38647:63;-1:-1;38747:2;38786:22;;18755:20;;-1:-1;38855:3;38892:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;38864:60;;;;38961:3;39005:9;39001:22;18755:20;38970:63;;38310:739;;;;;;;;:::o;41450:287::-;;41577:2;41565:9;41556:7;41552:23;41548:32;41545:2;;;-1:-1;;41583:12;41545:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;41744:423::-;;;41888:2;41876:9;41867:7;41863:23;41859:32;41856:2;;;-1:-1;;41894:12;41856:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;:::-;42069:2;42119:22;;;;18903:13;41946:86;;18903:13;;-1:-1;;;41850:317::o;42174:559::-;;;;42335:2;42323:9;42314:7;42310:23;42306:32;42303:2;;;-1:-1;;42341:12;42303:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;:::-;42516:2;42566:22;;18903:13;42635:2;42685:22;;;18903:13;42393:86;;18903:13;;-1:-1;18903:13;42297:436;-1:-1;;;42297:436::o;44030:287::-;;44157:2;44145:9;44136:7;44132:23;44128:32;44125:2;;;-1:-1;;44163:12;44125:2;11826:6;11820:13;11838:45;11877:5;11838:45;:::i;44324:688::-;;;;44510:2;44498:9;44489:7;44485:23;44481:32;44478:2;;;-1:-1;;44516:12;44478:2;11826:6;11820:13;11838:45;11877:5;11838:45;:::i;:::-;44712:2;44697:18;;44691:25;44568:86;;-1:-1;44736:18;44725:30;;44722:2;;;-1:-1;;44758:12;44722:2;44788:89;44869:7;44860:6;44849:9;44845:22;44788:89;:::i;:::-;44778:99;;;44914:2;44968:9;44964:22;18903:13;44922:74;;44472:540;;;;;:::o;46008:1983::-;;;;;;;;;;;;46490:3;46478:9;46469:7;46465:23;46461:33;46458:2;;;-1:-1;;46497:12;46458:2;46559:66;46617:7;46593:22;46559:66;:::i;:::-;46549:76;;46714:18;;46690:2;46679:9;46675:18;46662:32;46703:30;46700:2;;;-1:-1;;46736:12;46700:2;46766:109;46867:7;46690:2;46679:9;46675:18;46662:32;46847:9;46843:22;46766:109;:::i;:::-;46756:119;;46714:18;46940:2;46929:9;46925:18;46912:32;46953:30;46950:2;;;-1:-1;;46986:12;46950:2;47024:95;47111:7;46940:2;46929:9;46925:18;46912:32;47091:9;47087:22;47024:95;:::i;:::-;47006:113;;-1:-1;47006:113;-1:-1;47174:87;47253:7;47156:2;47229:22;;47174:87;:::i;:::-;47164:97;;46714:18;47326:3;47315:9;47311:19;47298:33;47340:30;47337:2;;;-1:-1;;47373:12;47337:2;47411:79;47482:7;47326:3;47315:9;47311:19;47298:33;47462:9;47458:22;47411:79;:::i;:::-;47393:97;;-1:-1;47393:97;-1:-1;47527:3;47567:22;;18755:20;;-1:-1;47636:3;47676:22;;18755:20;;-1:-1;47773:3;47758:19;;47745:33;47787:30;-1:-1;47784:2;;;-1:-1;;47820:12;47784:2;;47859:116;47967:7;47773:3;47762:9;47758:19;47745:33;47947:9;47943:22;47859:116;:::i;:::-;47840:135;;;;;;;;46452:1539;;;;;;;;;;;;;;:::o;47998:1081::-;;;;;;;48249:3;48237:9;48228:7;48224:23;48220:33;48217:2;;;-1:-1;;48256:12;48217:2;48314:17;48301:31;48352:18;;48344:6;48341:30;48338:2;;;-1:-1;;48374:12;48338:2;48453:22;;;;16595:4;16574:19;;;16570:30;16567:2;;;-1:-1;;16603:12;16567:2;16631:20;16595:4;16631:20;:::i;:::-;7485:6;7472:20;16717:16;16710:75;16879:62;16937:3;16846:2;16917:9;16913:22;16879:62;:::i;:::-;16846:2;16865:5;16861:16;16854:88;17006:2;17079:9;17075:22;8431:20;8456:48;8498:5;8456:48;:::i;:::-;17006:2;17021:16;;17014:90;17202:64;17262:3;17169:2;17238:22;;17202:64;:::i;:::-;17169:2;17188:5;17184:16;17177:90;17330:3;17389:9;17385:22;18755:20;17330:3;17350:5;17346:16;17339:75;17507:3;17496:9;17492:19;17479:33;48352:18;17524:6;17521:30;17518:2;;;-1:-1;;17554:12;17518:2;17599:58;17653:3;17644:6;17633:9;17629:22;17599:58;:::i;:::-;17507:3;17585:5;17581:16;17574:84;;48394:91;;;;;;48540:87;48619:7;16846:2;48599:9;48595:22;48540:87;:::i;:::-;48211:868;;48530:97;;-1:-1;;;;17507:3;48704:22;;18755:20;;16595:4;48813:22;;18755:20;;48882:3;48922:22;;18755:20;;-1:-1;48991:3;49031:22;;;18755:20;;-1:-1;48211:868::o;49086:241::-;;49190:2;49178:9;49169:7;49165:23;49161:32;49158:2;;;-1:-1;;49196:12;49158:2;-1:-1;18755:20;;49152:175;-1:-1;49152:175::o;49334:263::-;;49449:2;49437:9;49428:7;49424:23;49420:32;49417:2;;;-1:-1;;49455:12;49417:2;-1:-1;18903:13;;49411:186;-1:-1;49411:186::o;49604:399::-;;;49736:2;49724:9;49715:7;49711:23;49707:32;49704:2;;;-1:-1;;49742:12;49704:2;-1:-1;;18903:13;;49905:2;49955:22;;;18903:13;;;;;-1:-1;49698:305::o;51717:127::-;-1:-1;;;;;105664:54;51794:45;;51788:56::o;52968:740::-;;100048:6;100043:3;100036:19;100085:4;;100080:3;100076:14;53130:93;;53323:21;-1:-1;53350:336;53375:6;53372:1;53369:13;53350:336;;;8444:6;8431:20;8456:48;8498:5;8456:48;:::i;:::-;-1:-1;;;;;105664:54;61355:65;;50376:14;;;;102288:12;;;;53397:1;53390:9;53350:336;;;-1:-1;53692:10;;53117:591;-1:-1;;;;;53117:591::o;55349:657::-;;100048:6;100043:3;100036:19;100085:4;;100080:3;100076:14;55494:92;;55670:21;-1:-1;55697:287;55722:6;55719:1;55716:13;55697:287;;;12635:20;;59917:37;;50766:14;;;;102414:12;;;;55744:1;55737:9;55697:287;;58237:670;;58420:5;98073:12;100048:6;100043:3;100036:19;100085:4;;100080:3;100076:14;58432:83;;100085:4;58586:5;97079:14;-1:-1;58625:260;58650:6;58647:1;58644:13;58625:260;;;58711:13;;59917:37;;51540:14;;;;98986;;;;58672:1;58665:9;58625:260;;59644:94;102711:13;102704:21;59699:34;;59693:45::o;60586:323::-;;60718:5;98073:12;100048:6;100043:3;100036:19;60801:52;60846:6;100085:4;100080:3;100076:14;100085:4;60827:5;60823:16;60801:52;:::i;:::-;109209:2;109189:14;-1:-1;;109185:28;60865:39;;;;100085:4;60865:39;;60666:243;-1:-1;;60666:243::o;66882:1142::-;67117:23;;67049:4;67153:38;;;98073:12;;67040:14;;;100036:19;;;66882:1142;;100085:4;;97079:14;;;;100076;;;;66882:1142;54188:290;54213:6;54210:1;54207:13;54188:290;;;54274:13;;-1:-1;;;;;105664:54;61355:65;;98986:14;;;;50376;;;;54235:1;54228:9;54188:290;;;54192:14;;100085:4;67411:5;67407:16;67401:23;67381:43;;67470:3;67464:4;67460:14;100085:4;67448:3;67444:14;67437:38;67490:103;67588:4;67574:12;67490:103;:::i;:::-;67482:111;;;;67682:4;67675:5;67671:16;67665:23;67734:3;67728:4;67724:14;67682:4;67712:3;67708:14;67701:38;67754:71;67820:4;67806:12;67754:71;:::i;:::-;67746:79;;;67923:4;67916:5;67912:16;67906:23;67935:57;67923:4;67981:3;67977:14;67963:12;67935:57;:::i;:::-;-1:-1;68008:11;67022:1002;-1:-1;;;67022:1002::o;68098:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;105664:54;;;51794:45;;101873:2;101864:12;;7203:20;;7228:30;7203:20;7228:30;:::i;:::-;102711:13;;102704:21;101873:2;68616:14;;59699:34;102130:12;;;72:20;;97:33;72:20;97:33;:::i;:::-;105664:54;102130:12;68826:14;;51794:45;102008:12;;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;59726:5;102711:13;102704:21;102008:12;69015:3;69011:14;59699:34;;68230:817;;:::o;73162:271::-;;61076:5;98073:12;61187:52;61232:6;61227:3;61220:4;61213:5;61209:16;61187:52;:::i;:::-;61251:16;;;;;73296:137;-1:-1;;73296:137::o;73440:448::-;;61076:5;98073:12;61187:52;61232:6;61227:3;61220:4;61213:5;61209:16;61187:52;:::i;:::-;61251:16;;108610:6;108605:3;61251:16;108587:30;108648:16;;;108641:27;;;-1:-1;108648:16;73630:258;-1:-1;;73630:258::o;74281:392::-;59917:37;;;74534:2;74525:12;;59917:37;74636:12;;;74425:248::o;74680:222::-;-1:-1;;;;;105664:54;;;;51794:45;;74807:2;74792:18;;74778:124::o;75154:464::-;-1:-1;;;;;105664:54;;;51794:45;;105664:54;;;;75527:2;75512:18;;51794:45;102711:13;;102704:21;75604:2;75589:18;;59699:34;75347:2;75332:18;;75318:300::o;75625:527::-;;75853:2;75842:9;75838:18;-1:-1;;;;;105675:42;102521:5;105664:54;51654:3;51647:58;75979:2;75853;75979;75968:9;75964:18;75957:48;76019:123;54770:5;98073:12;100048:6;100043:3;100036:19;100076:14;75842:9;100076:14;54782:93;;75979:2;54961:5;97079:14;54973:21;;-1:-1;55000:290;55025:6;55022:1;55019:13;55000:290;;;55086:13;;105664:54;;61355:65;;98986:14;;;;50588;;;;55047:1;55040:9;55000:290;;;-1:-1;76011:131;;75824:328;-1:-1;;;;;;;;75824:328::o;76159:333::-;-1:-1;;;;;105664:54;;;51794:45;;105664:54;;76478:2;76463:18;;51794:45;76314:2;76299:18;;76285:207::o;76499:544::-;-1:-1;;;;;105664:54;;;51794:45;;105664:54;;;;76869:2;76854:18;;51794:45;76952:2;76937:18;;59917:37;102711:13;;102704:21;77029:2;77014:18;;59699:34;76704:3;76689:19;;76675:368::o;77050:984::-;-1:-1;;;;;105664:54;;;51794:45;;105664:54;;;;77528:2;77513:18;;51794:45;77611:2;77596:18;;59917:37;;;;77694:2;77679:18;;59917:37;;;;102711:13;102704:21;77771:3;77756:19;;59699:34;105880:4;105869:16;77851:3;77836:19;;73115:35;77935:3;77920:19;;59917:37;78019:3;78004:19;;59917:37;;;;77363:3;77348:19;;77334:700::o;78041:884::-;-1:-1;;;;;105664:54;;;51794:45;;105664:54;;;;78497:2;78482:18;;51794:45;78580:2;78565:18;;59917:37;;;;78663:2;78648:18;;59917:37;;;;105880:4;105869:16;78742:3;78727:19;;73115:35;78826:3;78811:19;;59917:37;78910:3;78895:19;;59917:37;;;;78332:3;78317:19;;78303:622::o;78932:872::-;-1:-1;;;;;105664:54;;;51794:45;;102711:13;;102704:21;79376:2;79361:18;;59699:34;105664:54;;;;79459:2;79444:18;;51794:45;79542:2;79527:18;;59917:37;;;;105880:4;105869:16;79621:3;79606:19;;73115:35;79705:3;79690:19;;59917:37;;;;79789:3;79774:19;;59917:37;;;;79217:3;79202:19;;79188:616::o;79811:345::-;-1:-1;;;;;105664:54;;;;51794:45;;105880:4;105869:16;80142:2;80127:18;;63333:56;79972:2;79957:18;;79943:213::o;80163:333::-;-1:-1;;;;;105664:54;;;;51794:45;;80482:2;80467:18;;59917:37;80318:2;80303:18;;80289:207::o;80503:432::-;-1:-1;;;;;105664:54;;;;51794:45;;80844:2;80829:18;;59917:37;;;;102711:13;102704:21;80921:2;80906:18;;59699:34;80680:2;80665:18;;80651:284::o;80942:558::-;-1:-1;;;;;105664:54;;;;51794:45;;81319:2;81304:18;;59917:37;;;;105583:6;105572:18;81409:2;81394:18;;63038:57;102711:13;102704:21;81486:2;81471:18;;59699:34;81154:3;81139:19;;81125:375::o;81507:517::-;81730:2;81744:47;;;81715:18;;100036:19;;;81507:517;52581:21;100076:14;;;81507:517;52608:291;52633:6;52630:1;52627:13;52608:291;;;100085:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;105664:54;51794:45;;101864:12;;;;50164:14;;;;52655:1;52648:9;52608:291;;;52612:14;81797:126;;;;;-1:-1;;;;;102521:5;105664:54;100085:4;81999:9;81995:18;51647:58;81701:323;;;;;;:::o;82031:494::-;82270:2;82284:47;;;98073:12;;82255:18;;;100036:19;;;82031:494;;82270:2;100076:14;;;;;;97079;;;82031:494;57823:353;57848:6;57845:1;57842:13;57823:353;;;57915:6;57909:13;71868:16;71862:23;104943:45;104982:5;104943:45;:::i;:::-;62771:70;;72043:16;;;72037:23;-1:-1;;;;;105664:54;72129:14;;;51794:45;72214:16;;;72208:23;72285:14;;;59917:37;72381:4;72370:16;;;72364:23;72393:63;72441:14;;;72364:23;72393:63;:::i;:::-;-1:-1;;72540:4;72529:16;;;72523:23;;72552:79;72616:14;;;72523:23;72552:79;:::i;:::-;-1:-1;;51367:4;51358:14;;;;;98986;;;;57870:1;57863:9;57823:353;;;-1:-1;82337:178;;82241:284;-1:-1;;;;;;;82241:284::o;82532:210::-;102711:13;;102704:21;59699:34;;82653:2;82638:18;;82624:118::o;82749:768::-;;59947:5;59924:3;59917:37;-1:-1;;;;;105675:42;102521:5;105664:54;83207:2;83196:9;83192:18;51794:45;105675:42;102521:5;105664:54;83306:2;83295:9;83291:18;51794:45;;83042:3;83343:2;83332:9;83328:18;83321:48;83383:124;83042:3;83031:9;83027:19;83493:6;83383:124;:::i;:::-;83375:132;83013:504;-1:-1;;;;;;83013:504::o;84805:353::-;84970:2;84955:18;;104806:45;104845:5;104806:45;:::i;:::-;62012:60;;;85144:2;85129:18;59917:37;84941:217;:::o;85165:464::-;85358:2;85343:18;;104806:45;104845:5;104806:45;:::i;:::-;62012:60;;;85532:2;85517:18;;59917:37;;;;85615:2;85600:18;;;59917:37;85329:300;:::o;85636:612::-;;104943:45;104982:5;104943:45;:::i;:::-;107441:36;62172:3;62165:60;85879:2;86007;85996:9;85992:18;85985:48;86047:108;85879:2;85868:9;85864:18;86141:6;86047:108;:::i;:::-;86039:116;;59947:5;86234:2;86223:9;86219:18;59917:37;85850:398;;;;;;:::o;86874:1568::-;;87463:3;;87452:9;87448:19;105218:46;105258:5;105218:46;:::i;:::-;62462:61;;;87593:2;87578:18;;;87571:48;;;;98073:12;;100036:19;;;;100076:14;;;;;56560:17;;;56551:27;;;;;;97079:14;;;-1:-1;56719:423;56744:6;56741:1;56738:13;56719:423;;;56796:20;;;;;56784:33;;56845:13;;65969:23;;59917:37;;66137:16;;;66131:23;66208:14;;;59917:37;66311:4;66300:16;;;66294:23;66371:14;;;59917:37;66467:4;66456:16;;;66450:23;66527:14;;;59917:37;66625:4;66614:16;;;66608:23;65901:4;66651:14;;;66644:38;;;66608:23;66697:71;65892:14;;;66608:23;66697:71;:::i;:::-;57121:14;;;;56865:134;-1:-1;;;98986:14;;;;56766:1;56759:9;56719:423;;;56723:14;;;;87851:9;87845:4;87841:20;66311:4;87825:9;87821:18;87814:48;87876:133;88004:4;87995:6;87987;87876:133;:::i;:::-;87868:141;;;88020:138;66467:4;88143:9;88139:18;88130:6;88020:138;:::i;:::-;88207:9;88201:4;88197:20;88191:3;88180:9;88176:19;88169:49;88232:116;88343:4;88334:6;88326;88232:116;:::i;:::-;88224:124;;;59947:5;88427:3;88416:9;88412:19;59917:37;87434:1008;;;;;;;;;;;:::o;88805:416::-;89005:2;89019:47;;;63626:2;88990:18;;;100036:19;63662;100076:14;;;63642:40;63701:12;;;88976:245::o;89228:416::-;89428:2;89442:47;;;63952:2;89413:18;;;100036:19;63988:18;100076:14;;;63968:39;64026:12;;;89399:245::o;89651:416::-;89851:2;89865:47;;;64277:2;89836:18;;;100036:19;64313:33;100076:14;;;64293:54;64366:12;;;89822:245::o;90074:416::-;90274:2;90288:47;;;64617:2;90259:18;;;100036:19;64653:17;100076:14;;;64633:38;64690:12;;;90245:245::o;90497:416::-;90697:2;90711:47;;;64941:2;90682:18;;;100036:19;64977:21;100076:14;;;64957:42;65018:12;;;90668:245::o;90920:416::-;91120:2;91134:47;;;65574:2;91105:18;;;100036:19;65610:27;100076:14;;;65590:48;65657:12;;;91091:245::o;91343:850::-;;91676:3;91698:17;91691:47;70563:16;70557:23;91676:3;91665:9;91661:19;59917:37;70728:4;70721:5;70717:16;70711:23;105218:46;105258:5;105218:46;:::i;:::-;70799:14;;;62462:61;70896:4;70885:16;;70879:23;-1:-1;;;;;105664:54;;;70971:14;;;61355:65;71069:4;71058:16;;71052:23;105664:54;71144:14;;;61355:65;71240:4;71229:16;;71223:23;71300:14;;;59917:37;71398:4;71387:16;;71381:23;70489:4;71424:14;;;71417:38;71470:71;70480:14;;;71381:23;71470:71;:::i;:::-;91744:122;;;91877:138;70728:4;92000:9;91996:18;91987:6;91877:138;:::i;:::-;71398:4;92079:19;;59917:37;;;;70489:4;92163:19;59917:37;91647:546;;-1:-1;;91647:546::o;92200:222::-;59917:37;;;92327:2;92312:18;;92298:124::o;92429:333::-;59917:37;;;-1:-1;;;;;105664:54;92748:2;92733:18;;51794:45;92584:2;92569:18;;92555:207::o;92769:444::-;59917:37;;;-1:-1;;;;;105664:54;;;93116:2;93101:18;;51794:45;105664:54;93199:2;93184:18;;51794:45;92952:2;92937:18;;92923:290::o;93220:460::-;59917:37;;;-1:-1;;;;;105664:54;;;;93575:2;93560:18;;51794:45;93666:2;93651:18;;63186:58;93411:2;93396:18;;93382:298::o;93687:325::-;105880:4;105869:16;;;;73115:35;;93998:2;93983:18;;59917:37;93838:2;93823:18;;93809:203::o;94019:436::-;105880:4;105869:16;;;;73115:35;;94358:2;94343:18;;59917:37;;;;94441:2;94426:18;;59917:37;94198:2;94183:18;;94169:286::o;94462:256::-;94524:2;94518:9;94550:17;;;94625:18;94610:34;;94646:22;;;94607:62;94604:2;;;94682:1;;94672:12;94604:2;94524;94691:22;94502:216;;-1:-1;94502:216::o;94725:319::-;;94899:18;94891:6;94888:30;94885:2;;;-1:-1;;94921:12;94885:2;-1:-1;94966:4;94954:17;;;95019:15;;94822:222::o;108683:268::-;108748:1;108755:101;108769:6;108766:1;108763:13;108755:101;;;108836:11;;;108830:18;108817:11;;;108810:39;108791:2;108784:10;108755:101;;;108871:6;108868:1;108865:13;108862:2;;;-1:-1;;108748:1;108918:16;;108911:27;108732:219::o;109226:103::-;109307:1;109300:5;109297:12;109287:2;;109313:9;109336:103;109417:1;109410:5;109407:12;109397:2;;109423:9;109556:104;109638:1;109631:5;109628:12;109618:2;;109644:9;109787:117;-1:-1;;;;;109874:5;105664:54;109849:5;109846:35;109836:2;;109895:1;;109885:12;110051:111;110132:5;102711:13;102704:21;110110:5;110107:32;110097:2;;110153:1;;110143:12;112961:106;113042:1;113035:5;113032:12;113022:2;;113058:1;;113048:12;113187:106;113268:1;113261:5;113258:12;113248:2;;113284:1;;113274:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","canCallUserCheckpoint()":"10f3aaff","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeCheckpoint(address,address[])":"48699d58","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256,(uint256,uint256)[])":"837f9bcb","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapCompoundV2(address,address,address,uint256,uint256)":"44b6ac74","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapEuler(address,address,address,uint256,uint256)":"941e849b","unwrapGearbox(address,address,address,uint256,uint256)":"f4dd54b0","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapShareToken(address,address,address,uint256,uint256)":"4e9d9bab","unwrapTetu(address,address,address,uint256,uint256)":"311c5c57","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","unwrapYearn(address,address,address,uint256,uint256)":"8b35ac8d","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapCompoundV2(address,address,address,uint256,uint256)":"2c25efe1","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapEuler(address,address,address,address,uint256,uint256)":"52b88746","wrapGearbox(address,address,address,uint256,uint256)":"138fdc2c","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapShareToken(address,address,address,uint256,uint256)":"5001fe75","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapTetu(address,address,address,uint256,uint256)":"b064b376","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399","wrapYearn(address,address,address,uint256,uint256)":"4f06a70b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"canCallUserCheckpoint\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"canCallUserCheckpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeCheckpoint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"dieselAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"eulerProtocol\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"canCallUserCheckpoint()\":{\"details\":\"This method is not expected to be called inside `multicall` so it is not marked as `payable`.\"},\"gaugeCheckpoint(address,address[])\":{\"details\":\"Both mainnet and child chain gauges are supported.\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary). This function does not alter the state in any way. It is not marked as view because it has to be `payable` in order to be used in a batch transaction. Use a static call to read the state off-chain.\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"Batch Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"canCallUserCheckpoint()\":{\"notice\":\"Returns true if the relayer is configured to checkpoint gauges directly via `user_checkpoint`.\"},\"gaugeCheckpoint(address,address[])\":{\"notice\":\"Perform a user checkpoint for the given user on the given set of gauges.\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"This contract is not a relayer by itself and calls into it directly will fail. The associated relayer can be found by calling `getEntrypoint` on this contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BatchRelayerLibrary.sol\":\"BatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":{\"keccak256\":\"0x0a32eeae183b04333cee772022b0c084e6a0f676842731055dd63daddf6aa387\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3786f317c3dcbff798b2b461be6743a7c209da4cd88a2bea737daceba6ad5f41\",\"dweb:/ipfs/QmcbHLg2PZWWyqtGzM6CQCvhEA7fQ1r3WNh3A3GDxqDii3\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":{\"keccak256\":\"0x1831b7e182413889843464b9a0f8840ac8037fa2d6dae5f2d662682d3c08b3c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3dbde681f0d84d00c22aced367701fe6568c143575ec20ac146948664008433d\",\"dweb:/ipfs/QmSzNhMp1umzDJ97xFZAcitXKFefHCJc4SKVKKczxTfqNg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":{\"keccak256\":\"0x8a30751d1411b686dc598147ae15677c935e468b46c10998bc713ab26f4cf433\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49d59beba049d9ec36289d0ff86a1eae34bc11b13052c68bc1604b86ff91d6c3\",\"dweb:/ipfs/QmXjX1eJWQGtpqknMaqJxejy8v8HJv6NrCn7ZhoozvQroD\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0x3484dfca85640613673f4e0d9eab0e479b0a8441ae871fe5bc396a5115611a16\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://44387d71bce29dc17e3bd090804d90d783b1afb6a947ab967a17d63f0d399db4\",\"dweb:/ipfs/QmbBYKDTqFWogyLfQX8LNVqz9ndbrY8cV8NMVCuMFGGJDo\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0x90f015009b9eb5ef856d5bbdebcaf90ab53c0e4ddb26a289f81156fef607c5ac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://793d728e420243ea1940e517b18bdc8043b0aaa778af63fe334bce4c2cd815ba\",\"dweb:/ipfs/Qmdb1PqtyT6UnKDUCphasSmAj4nXn6YVwmUzuSveAgQzNn\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x39fa4329e480fdfd025ca692937d3d7857359eaf27faba07191dae56d374c75d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3c361b8e24e59c3fa6c79f058506e8484649b3082ca49974387d217ee0f0a3e8\",\"dweb:/ipfs/QmX53HeJGcEac72TRZyYppncdTpWRJjqGoXPCofmWgs56Q\"]},\"contracts/relayer/CompoundV2Wrapping.sol\":{\"keccak256\":\"0x4b471ef2176bc032c70522abb0dd140e70e43d527f06e4d886d63370b0bd1887\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c6da47a5f3b95da8bacb92c92b9761dc4434a44b4b82a94f586b20a71bc52dc6\",\"dweb:/ipfs/QmXBqprKiCbV4ojJtvP2T2ZDdgB9feeEJjKRhPoG9QvR6x\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0xcdf9a0800b63570a3a722a7e7a9d7d723d5620973f4214bb22d14e83d8c636b9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c760aacaa8c5b103fafefb33ded3f79a5b7a223a689363732d1fc7fb3340fc5\",\"dweb:/ipfs/QmcReLmzgcrfAHP4EkHQaaXX48yUMTqwgTLpSDMSCnB1GB\"]},\"contracts/relayer/EulerWrapping.sol\":{\"keccak256\":\"0xcb420fd6500ca664776deac14c4838b027b3979248c744abbbe1f1721d500c32\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3afd0d940806798c0a4d34eff0719e1173148d62ac5b904fd7b0227522607cdf\",\"dweb:/ipfs/QmbDH3wd8f51bMmjA1R9CrE5EcPxsRxeY6LKCfhgrSX5PR\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x0bd0b02deb9cc842216d099acbce84754b3afbad86c20c0438157d04bc1f392b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ae4102b6779215962b1606267d650ad3c9f22deb8f59efa6d190503283cee92\",\"dweb:/ipfs/QmdkmsACedQSDuZY26RZTGLb3rMsqPC65jyjPGA91jcpnB\"]},\"contracts/relayer/GearboxWrapping.sol\":{\"keccak256\":\"0x4a4abac13dc35fdced712313edafadaed81fba33f826b8d2689f4746020d88af\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://17e86ab04b28d7f5e2e76b6884958bc9a58d72400fd5f543b66e858d2bf07cd1\",\"dweb:/ipfs/Qma3fcYSSF2Y6kmR7jU687Qt9RswCxG4o5WPbthbc5fFEq\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xd75043c8439f56d8793e46177a0a66edf8bed0cb0857b449478a8233d9366649\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb284393086201aa4b7dcba1aa32e33a3c8662933146c6aac347a86755830ad2\",\"dweb:/ipfs/QmQbdhsqcVgvwQQ2mfU1m1pVGWtuTagiGPcJaAtEG8qS5p\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0x25f094d195f4fa07875934cb11dc08834ea26298079390a5413f8f4026f42711\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50745092953571536881ac3769653e7a6b8c1db1a403ae7b0525c7b6a500a1d7\",\"dweb:/ipfs/QmYmxhBjGdJmj7HFXq3SKK5trtcKWCzEmUXhq2LzjpCgvr\"]},\"contracts/relayer/SiloWrapping.sol\":{\"keccak256\":\"0xc770962419ab2a6297829b478a2783696adb21dbe62debb5a35de70ca6e3ef59\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://363f9ef6c8cee4611ef2a518e1f8ead048a8d79429cdbc68cb95a777e89da84e\",\"dweb:/ipfs/QmVRe3tZreoLYBYGTAVCPNC9qron9ner1VoAMCD2Cueq6t\"]},\"contracts/relayer/TetuWrapping.sol\":{\"keccak256\":\"0xd29edcc986e994878c002c9d547f3dc5690969088b4f26f789e800727963e02d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c25461292d80dc63e234c75c9e23439f1d28ffe074983f27ca158a5d01f37a62\",\"dweb:/ipfs/QmTHW88dF66g6zLouvXZazpqrDddhFk3aaLKnYvHqzW2g1\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x6139f4c5c2dad2f0ffc79f25b792cc4fb480bc7df61556adad23d02963bdd1eb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://482c99db9e677a88d472a85b9c0dc55a3912f803d3c09794677f98064cd8d3f9\",\"dweb:/ipfs/QmWNdMwkLJyyT7b6qjJndNFrDKwmQmMRm7xyUj2KyYz9bR\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x3d9190caf099bab66218fd0be5e3d06dc7860ba6cc8ebb9fad02a327cfa3d65e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5307c048dd8b02a23e860f8c5364d0b3dd1efbc1e0cf9920077eecece56fa8cc\",\"dweb:/ipfs/QmdPCdYeN9oVLJnqPijvX9Z8W12VFRNLYuXHLaxKRmG915\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]},\"contracts/relayer/YearnWrapping.sol\":{\"keccak256\":\"0x2704851099c3f0951b70ac4f2a4312dfb1b1407d0732e1f20eab359c3fc9690c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4e46ef856ff43710b0730201a6d4fc474d5c5ba2dde21083b1a0c8f67d26c0e\",\"dweb:/ipfs/QmWjDtpweMHcBb848SAGMyAH8nfcot9mTXJF6mGdn42Znq\"]}},\"version\":1}"}},"contracts/PoolRecoveryHelper.sol":{"PoolRecoveryHelper":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address[]","name":"initialFactories","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"addPoolFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getFactoryAtIndex","outputs":[{"internalType":"contract IBasePoolFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFactoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromKnownFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"removePoolFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200112e3803806200112e833981016040819052620000349162000157565b306080526001600160601b0319606083901b1660a05260005b8151811015620000b757620000868282815181106200006857fe5b60200260200101516000620000c060201b620006981790919060201c565b620000ae5760405162461bcd60e51b8152600401620000a59062000225565b60405180910390fd5b6001016200004d565b5050506200029c565b6000620000ce838362000129565b6200011f57508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b0386169081179091558554908252828601909352604090209190915562000123565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b8051620001238162000283565b600080604083850312156200016a578182fd5b8251620001778162000283565b602084810151919350906001600160401b038082111562000196578384fd5b818601915086601f830112620001aa578384fd5b815181811115620001b9578485fd5b8381029150620001cb8483016200025c565b8181528481019084860184860187018b1015620001e6578788fd5b8795505b838610156200021457620001ff8b826200014a565b835260019590950194918601918601620001ea565b508096505050505050509250929050565b60208082526019908201527f4475706c696361746520696e697469616c20666163746f727900000000000000604082015260600190565b6040518181016001600160401b03811182821017156200027b57600080fd5b604052919050565b6001600160a01b03811681146200029957600080fd5b50565b60805160a05160601c610e6b620002c3600039806102fe5250806102ae5250610e6b6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a587bbe111610076578063d10474341161005b578063d104743414610136578063dc3f574e1461013e578063dc867b7914610151576100a3565b8063a587bbe11461011b578063aaabadc51461012e576100a3565b806326e54479146100a85780633a987dfa146100bd578063851c1bb3146100e65780638d928af814610106575b600080fd5b6100bb6100b6366004610ae6565b610164565b005b6100d06100cb366004610ae6565b6101b9565b6040516100dd9190610caa565b60405180910390f35b6100f96100f4366004610bcd565b6102aa565b6040516100dd9190610cb5565b61010e6102fc565b6040516100dd9190610c89565b61010e610129366004610c29565b610320565b61010e610332565b6100f96103be565b6100bb61014c366004610ae6565b6103ca565b6100bb61015f366004610ae6565b61064f565b61016c610721565b610177600082610767565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d21565b60405180910390fd5b50565b6000806101c66000610915565b905060005b8181101561029e5760006101df8183610919565b6040517f6634b75300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690636634b75390610234908890600401610c89565b60206040518083038186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610bad565b1561029557600193505050506102a5565b506001016101cb565b5060009150505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102df929190610c59565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032c8183610953565b92915050565b600061033c6102fc565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610c0d565b905090565b60006103b96000610915565b6103d3816101b9565b610409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610cea565b60608173ffffffffffffffffffffffffffffffffffffffff1663238a2d596040518163ffffffff1660e01b815260040160006040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190610b02565b905060005b815181101561061c57600073ffffffffffffffffffffffffffffffffffffffff168282815181106104dd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146106145781818151811061050c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055957600080fd5b505afa9250505080156105a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105a491810190610c41565b60015b610612578273ffffffffffffffffffffffffffffffffffffffff166354a844ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b5050505050506101b6565b505b6001016104b0565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d8f565b610657610721565b610662600082610698565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d58565b60006106a48383610976565b61071857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558554908252828601909352604090209190915561032c565b50600092915050565b60006107506000357fffffffff00000000000000000000000000000000000000000000000000000000166102aa565b90506101b661075f82336109a4565b610191610a3a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054801561090b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146108705760008660000182815481106107d557fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061080b57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061087b57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061032c92505050565b600091505061032c565b5490565b600082600001828154811061092a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b81546000906109659083106064610a3a565b61096f8383610919565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006109ae610332565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016109ea93929190610cbe565b60206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610bad565b81610a4857610a4881610a4c565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101b6917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b805161032c81610e13565b600060208284031215610af7578081fd5b813561096f81610e13565b60006020808385031215610b14578182fd5b825167ffffffffffffffff80821115610b2b578384fd5b818501915085601f830112610b3e578384fd5b815181811115610b4c578485fd5b8381029150610b5c848301610dec565b8181528481019084860184860187018a1015610b76578788fd5b8795505b83861015610ba057610b8c8a82610adb565b835260019590950194918601918601610b7a565b5098975050505050505050565b600060208284031215610bbe578081fd5b8151801515811461096f578182fd5b600060208284031215610bde578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096f578182fd5b600060208284031215610c1e578081fd5b815161096f81610e13565b600060208284031215610c3a578081fd5b5035919050565b600060208284031215610c52578081fd5b5051919050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6020808252601e908201527f506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f72790000604082015260600190565b60208082526014908201527f4e6f6e2d6578697374656e7420666163746f7279000000000000000000000000604082015260600190565b60208082526011908201527f4475706c696361746520666163746f7279000000000000000000000000000000604082015260600190565b60208082526023908201527f506f6f6c277320726174652070726f76696465727320646f206e6f742072657660408201527f6572740000000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715610e0b57600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146101b657600080fdfea26469706673582212201b60c2b5e3d134d2ce8fc237fea463452b7c3b0db9a1dadae9da6e1f5d65597c64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x112E CODESIZE SUB DUP1 PUSH3 0x112E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x157 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH3 0x86 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x68 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH3 0xC0 PUSH1 0x20 SHL PUSH3 0x698 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xAE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x225 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH3 0x4D JUMP JUMPDEST POP POP POP PUSH3 0x29C JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP4 DUP4 PUSH3 0x129 JUMP JUMPDEST PUSH3 0x11F JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x123 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x123 DUP2 PUSH3 0x283 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x16A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x177 DUP2 PUSH3 0x283 JUMP JUMPDEST PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP2 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x196 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1AA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1B9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH3 0x1CB DUP5 DUP4 ADD PUSH3 0x25C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP12 LT ISZERO PUSH3 0x1E6 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH3 0x214 JUMPI PUSH3 0x1FF DUP12 DUP3 PUSH3 0x14A JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH3 0x1EA JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520696E697469616C20666163746F727900000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xE6B PUSH3 0x2C3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FE MSTORE POP DUP1 PUSH2 0x2AE MSTORE POP PUSH2 0xE6B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA587BBE1 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xD1047434 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD1047434 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0xDC867B79 EQ PUSH2 0x151 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA587BBE1 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x26E54479 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3A987DFA EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD0 PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x1B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x332 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x3BE JUMP JUMPDEST PUSH2 0xBB PUSH2 0x14C CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0xBB PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x16C PUSH2 0x721 JUMP JUMPDEST PUSH2 0x177 PUSH1 0x0 DUP3 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C6 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 PUSH2 0x1DF DUP2 DUP4 PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6634B75300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6634B753 SWAP1 PUSH2 0x234 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST ISZERO PUSH2 0x295 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x2A5 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1CB JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DF SWAP3 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32C DUP2 DUP4 PUSH2 0x953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C PUSH2 0x2FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0xC0D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST PUSH2 0x3D3 DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xCEA JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x238A2D59 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x614 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x50C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x5A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0xC41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x612 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x54A844BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x1B6 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4B0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x657 PUSH2 0x721 JUMP JUMPDEST PUSH2 0x662 PUSH1 0x0 DUP3 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A4 DUP4 DUP4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x718 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x32C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B6 PUSH2 0x75F DUP3 CALLER PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xA3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x90B JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x870 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x80B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x87B JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x32C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x32C JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x965 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x96F DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AE PUSH2 0x332 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96F SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST DUP2 PUSH2 0xA48 JUMPI PUSH2 0xA48 DUP2 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x1B6 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x32C DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB14 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB2B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB3E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xB4C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0xB5C DUP5 DUP4 ADD PUSH2 0xDEC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0xB76 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xBA0 JUMPI PUSH2 0xB8C DUP11 DUP3 PUSH2 0xADB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0xB7A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBBE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C206973206E6F742066726F6D206B6E6F776E20666163746F72790000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E7420666163746F7279000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520666163746F7279000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C277320726174652070726F76696465727320646F206E6F7420726576 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6572740000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL PUSH1 0xC2 0xB5 0xE3 0xD1 CALLVALUE 0xD2 0xCE DUP16 0xC2 CALLDATACOPY INVALID LOG4 PUSH4 0x452B7C3B 0xD 0xB9 LOG1 0xDA 0xDA 0xE9 0xDA PUSH15 0x1F5D65597C64736F6C634300070100 CALLER ","sourceMap":"1522:3892:87:-:0;;;1688:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:62;2049:46:56;;-1:-1:-1;;;;;;1073:14:62::1;::::0;;;;::::1;::::0;1030:31;1790:152:87::1;1814:16;:23;1810:1;:27;1790:152;;;1866:35;1881:16;1898:1;1881:19;;;;;;;;;;;;;;1866:10;:14;;;;;;:35;;;;:::i;:::-;1858:73;;;;-1:-1:-1::0;;;1858:73:87::1;;;;;;;:::i;:::-;;;;;;;;;1839:3;;1790:152;;;;1688:260:::0;;1522:3892;;1851:410:74;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:74;;;;;;;;-1:-1:-1;1978:23:74;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:74;-1:-1:-1;;;;;1978:23:74;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:74;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:74;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;5::-1:-;83:13;;101:33;83:13;101:33;:::i;1065:558::-;;;1237:2;1225:9;1216:7;1212:23;1208:32;1205:2;;;-1:-1;;1243:12;1205:2;993:6;987:13;1005:48;1047:5;1005:48;:::i;:::-;1442:2;1427:18;;;1421:25;1295:89;;-1:-1;1442:2;-1:-1;;;;;1455:30;;;1452:2;;;-1:-1;;1488:12;1452:2;1590:6;1579:9;1575:22;;;292:3;285:4;277:6;273:17;269:27;259:2;;-1:-1;;300:12;259:2;340:6;334:13;1466:18;2801:6;2798:30;2795:2;;;-1:-1;;2831:12;2795:2;1442;2868:6;2864:17;;;362:80;1442:2;2864:17;2929:15;362:80;:::i;:::-;470:21;;;527:14;;;;502:17;;;607:27;;;;;604:36;-1:-1;601:2;;;-1:-1;;643:12;601:2;-1:-1;669:10;;663:217;688:6;685:1;682:13;663:217;;;768:48;812:3;800:10;768:48;:::i;:::-;756:61;;710:1;703:9;;;;;831:14;;;;859;;663:217;;;667:14;1508:99;;;;;;;;;1199:424;;;;;:::o;1964:416::-;2164:2;2178:47;;;1855:2;2149:18;;;3065:19;1891:27;3105:14;;;1871:48;1938:12;;;2135:245::o;2387:256::-;2449:2;2443:9;2475:17;;;-1:-1;;;;;2535:34;;2571:22;;;2532:62;2529:2;;;2607:1;;2597:12;2529:2;2449;2616:22;2427:216;;-1:-1;2427:216::o;3472:117::-;-1:-1;;;;;3406:54;;3531:35;;3521:2;;3580:1;;3570:12;3521:2;3515:74;:::o;:::-;1522:3892:87;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":686}],"5180":[{"length":32,"start":766}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a587bbe111610076578063d10474341161005b578063d104743414610136578063dc3f574e1461013e578063dc867b7914610151576100a3565b8063a587bbe11461011b578063aaabadc51461012e576100a3565b806326e54479146100a85780633a987dfa146100bd578063851c1bb3146100e65780638d928af814610106575b600080fd5b6100bb6100b6366004610ae6565b610164565b005b6100d06100cb366004610ae6565b6101b9565b6040516100dd9190610caa565b60405180910390f35b6100f96100f4366004610bcd565b6102aa565b6040516100dd9190610cb5565b61010e6102fc565b6040516100dd9190610c89565b61010e610129366004610c29565b610320565b61010e610332565b6100f96103be565b6100bb61014c366004610ae6565b6103ca565b6100bb61015f366004610ae6565b61064f565b61016c610721565b610177600082610767565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d21565b60405180910390fd5b50565b6000806101c66000610915565b905060005b8181101561029e5760006101df8183610919565b6040517f6634b75300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690636634b75390610234908890600401610c89565b60206040518083038186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610bad565b1561029557600193505050506102a5565b506001016101cb565b5060009150505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102df929190610c59565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032c8183610953565b92915050565b600061033c6102fc565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610c0d565b905090565b60006103b96000610915565b6103d3816101b9565b610409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610cea565b60608173ffffffffffffffffffffffffffffffffffffffff1663238a2d596040518163ffffffff1660e01b815260040160006040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190610b02565b905060005b815181101561061c57600073ffffffffffffffffffffffffffffffffffffffff168282815181106104dd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146106145781818151811061050c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055957600080fd5b505afa9250505080156105a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105a491810190610c41565b60015b610612578273ffffffffffffffffffffffffffffffffffffffff166354a844ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b5050505050506101b6565b505b6001016104b0565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d8f565b610657610721565b610662600082610698565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d58565b60006106a48383610976565b61071857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558554908252828601909352604090209190915561032c565b50600092915050565b60006107506000357fffffffff00000000000000000000000000000000000000000000000000000000166102aa565b90506101b661075f82336109a4565b610191610a3a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054801561090b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146108705760008660000182815481106107d557fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061080b57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061087b57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061032c92505050565b600091505061032c565b5490565b600082600001828154811061092a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b81546000906109659083106064610a3a565b61096f8383610919565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006109ae610332565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016109ea93929190610cbe565b60206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610bad565b81610a4857610a4881610a4c565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101b6917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b805161032c81610e13565b600060208284031215610af7578081fd5b813561096f81610e13565b60006020808385031215610b14578182fd5b825167ffffffffffffffff80821115610b2b578384fd5b818501915085601f830112610b3e578384fd5b815181811115610b4c578485fd5b8381029150610b5c848301610dec565b8181528481019084860184860187018a1015610b76578788fd5b8795505b83861015610ba057610b8c8a82610adb565b835260019590950194918601918601610b7a565b5098975050505050505050565b600060208284031215610bbe578081fd5b8151801515811461096f578182fd5b600060208284031215610bde578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096f578182fd5b600060208284031215610c1e578081fd5b815161096f81610e13565b600060208284031215610c3a578081fd5b5035919050565b600060208284031215610c52578081fd5b5051919050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6020808252601e908201527f506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f72790000604082015260600190565b60208082526014908201527f4e6f6e2d6578697374656e7420666163746f7279000000000000000000000000604082015260600190565b60208082526011908201527f4475706c696361746520666163746f7279000000000000000000000000000000604082015260600190565b60208082526023908201527f506f6f6c277320726174652070726f76696465727320646f206e6f742072657660408201527f6572740000000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715610e0b57600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146101b657600080fdfea26469706673582212201b60c2b5e3d134d2ce8fc237fea463452b7c3b0db9a1dadae9da6e1f5d65597c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA587BBE1 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xD1047434 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD1047434 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0xDC867B79 EQ PUSH2 0x151 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA587BBE1 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x26E54479 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3A987DFA EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD0 PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x1B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x332 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x3BE JUMP JUMPDEST PUSH2 0xBB PUSH2 0x14C CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0xBB PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x16C PUSH2 0x721 JUMP JUMPDEST PUSH2 0x177 PUSH1 0x0 DUP3 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C6 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 PUSH2 0x1DF DUP2 DUP4 PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6634B75300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6634B753 SWAP1 PUSH2 0x234 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST ISZERO PUSH2 0x295 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x2A5 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1CB JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DF SWAP3 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32C DUP2 DUP4 PUSH2 0x953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C PUSH2 0x2FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0xC0D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST PUSH2 0x3D3 DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xCEA JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x238A2D59 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x614 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x50C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x5A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0xC41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x612 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x54A844BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x1B6 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4B0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x657 PUSH2 0x721 JUMP JUMPDEST PUSH2 0x662 PUSH1 0x0 DUP3 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A4 DUP4 DUP4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x718 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x32C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B6 PUSH2 0x75F DUP3 CALLER PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xA3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x90B JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x870 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x80B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x87B JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x32C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x32C JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x965 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x96F DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AE PUSH2 0x332 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96F SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST DUP2 PUSH2 0xA48 JUMPI PUSH2 0xA48 DUP2 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x1B6 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x32C DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB14 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB2B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB3E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xB4C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0xB5C DUP5 DUP4 ADD PUSH2 0xDEC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0xB76 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xBA0 JUMPI PUSH2 0xB8C DUP11 DUP3 PUSH2 0xADB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0xB7A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBBE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C206973206E6F742066726F6D206B6E6F776E20666163746F72790000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E7420666163746F7279000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520666163746F7279000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C277320726174652070726F76696465727320646F206E6F7420726576 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6572740000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL PUSH1 0xC2 0xB5 0xE3 0xD1 CALLVALUE 0xD2 0xCE DUP16 0xC2 CALLDATACOPY INVALID LOG4 PUSH4 0x452B7C3B 0xD 0xB9 LOG1 0xDA 0xDA 0xE9 0xDA PUSH15 0x1F5D65597C64736F6C634300070100 CALLER ","sourceMap":"1522:3892:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2336:142;;;;;;:::i;:::-;;:::i;:::-;;3049:402;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2607:430:56;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:62:-;;;:::i;:::-;;;;;;;:::i;2803:145:87:-;;;;;;:::i;:::-;;:::i;1297:109:62:-;;;:::i;2559:102:87:-;;;:::i;4141:1271::-;;;;;;:::i;:::-;;:::i;2126:133::-;;;;;;:::i;:::-;;:::i;2336:142::-;2276:21:56;:19;:21::i;:::-;2420:26:87::1;:10;2438:7:::0;2420:17:::1;:26::i;:::-;2412:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2336:142:::0;:::o;3049:402::-;3116:4;3132:22;3157:19;:10;:17;:19::i;:::-;3132:44;;3191:9;3186:236;3210:14;3206:1;:18;3186:236;;;3245:24;3289:26;3245:24;3313:1;3289:23;:26::i;:::-;3335:31;;;;;3245:71;;-1:-1:-1;3335:25:87;;;;;;:31;;3361:4;;3335:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3331:81;;;3393:4;3386:11;;;;;;;3331:81;-1:-1:-1;3226:3:87;;3186:236;;;;3439:5;3432:12;;;3049:402;;;;:::o;2607:430:56:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:62:-;1224:6;1158:79;:::o;2803:145:87:-;2868:16;2920:20;2868:16;2934:5;2920:13;:20::i;:::-;2896:45;2803:145;-1:-1:-1;;2803:145:87:o;1297:109:62:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2559:102:87:-;2609:7;2635:19;:10;:17;:19::i;4141:1271::-;4485:28;4508:4;4485:22;:28::i;:::-;4477:71;;;;;;;;;;;;:::i;:::-;4649:36;4706:4;4688:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4649:81;;4745:9;4740:422;4764:13;:20;4760:1;:24;4740:422;;;4843:1;4809:36;;:13;4823:1;4809:16;;;;;;;;;;;;;;:36;;;4805:347;;4869:13;4883:1;4869:16;;;;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4869:26:87;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4865:273;;5065:4;5051:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5113:7;;;;4865:273;;;4786:3;;4740:422;;;;5360:45;;;;;;;;;;:::i;2126:133::-;2276:21:56;:19;:21::i;:::-;2207:23:87::1;:10;2222:7:::0;2207:14:::1;:23::i;:::-;2199:53;;;;;;;;;;;;:::i;1851:410:74:-:0;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:74;;;;;;;;-1:-1:-1;1978:23:74;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:74;1851:410;;;;:::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;2429:1467:74:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:74;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:74;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:74;;-1:-1:-1;;;3825:11:74;2669:1221;3874:5;3867:12;;;;;4192:114;4281:18;;4192:114::o;5212:135::-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:74:o;4648:199::-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:12;4741:8:74;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:74:o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;1419:176:-1;1518:13;;1536:54;1518:13;1536:54;:::i;1880:241::-;;1984:2;1972:9;1963:7;1959:23;1955:32;1952:2;;;-1:-1;;1990:12;1952:2;85:6;72:20;97:33;124:5;97:33;:::i;2128:434::-;;2289:2;;2277:9;2268:7;2264:23;2260:32;2257:2;;;-1:-1;;2295:12;2257:2;2346:17;2340:24;2384:18;;2376:6;2373:30;2370:2;;;-1:-1;;2406:12;2370:2;2529:6;2518:9;2514:22;;;324:3;317:4;309:6;305:17;301:27;291:2;;-1:-1;;332:12;291:2;372:6;366:13;2384:18;11265:6;11262:30;11259:2;;;-1:-1;;11295:12;11259:2;2289;11332:6;11328:17;;;394:101;2289:2;11328:17;11393:15;394:101;:::i;:::-;523:21;;;580:14;;;;555:17;;;660:27;;;;;657:36;-1:-1;654:2;;;-1:-1;;696:12;654:2;-1:-1;722:10;;716:238;741:6;738:1;735:13;716:238;;;821:69;886:3;874:10;821:69;:::i;:::-;809:82;;763:1;756:9;;;;;905:14;;;;933;;716:238;;;-1:-1;2426:120;2251:311;-1:-1;;;;;;;;2251:311::o;2569:257::-;;2681:2;2669:9;2660:7;2656:23;2652:32;2649:2;;;-1:-1;;2687:12;2649:2;1049:6;1043:13;13733:5;11761:13;11754:21;13711:5;13708:32;13698:2;;-1:-1;;13744:12;2833:239;;2936:2;2924:9;2915:7;2911:23;2907:32;2904:2;;;-1:-1;;2942:12;2904:2;1182:6;1169:20;11938:66;13855:5;11927:78;13831:5;13828:34;13818:2;;-1:-1;;13866:12;3079:303;;3214:2;3202:9;3193:7;3189:23;3185:32;3182:2;;;-1:-1;;3220:12;3182:2;1342:6;1336:13;1354:53;1401:5;1354:53;:::i;3389:241::-;;3493:2;3481:9;3472:7;3468:23;3464:32;3461:2;;;-1:-1;;3499:12;3461:2;-1:-1;1669:20;;3455:175;-1:-1;3455:175::o;3637:263::-;;3752:2;3740:9;3731:7;3727:23;3723:32;3720:2;;;-1:-1;;3758:12;3720:2;-1:-1;1817:13;;3714:186;-1:-1;3714:186::o;6584:387::-;4209:37;;;11938:66;11927:78;6835:2;6826:12;;4504:56;6935:11;;;6726:245::o;6978:222::-;12327:42;12316:54;;;;3978:37;;7105:2;7090:18;;7076:124::o;7207:210::-;11761:13;;11754:21;4092:34;;7328:2;7313:18;;7299:118::o;7424:222::-;4209:37;;;7551:2;7536:18;;7522:124::o;7653:444::-;4209:37;;;12327:42;12316:54;;;8000:2;7985:18;;3978:37;12316:54;8083:2;8068:18;;3978:37;7836:2;7821:18;;7807:290::o;8909:416::-;9109:2;9123:47;;;5314:2;9094:18;;;11529:19;5350:32;11569:14;;;5330:53;5402:12;;;9080:245::o;9332:416::-;9532:2;9546:47;;;5653:2;9517:18;;;11529:19;5689:22;11569:14;;;5669:43;5731:12;;;9503:245::o;9755:416::-;9955:2;9969:47;;;5982:2;9940:18;;;11529:19;6018;11569:14;;;5998:40;6057:12;;;9926:245::o;10178:416::-;10378:2;10392:47;;;6308:2;10363:18;;;11529:19;6344:34;11569:14;;;6324:55;6413:5;6399:12;;;6392:27;6438:12;;;10349:245::o;10830:256::-;10892:2;10886:9;10918:17;;;10993:18;10978:34;;11014:22;;;10975:62;10972:2;;;11050:1;;11040:12;10972:2;10892;11059:22;10870:216;;-1:-1;10870:216::o;13528:117::-;12327:42;13615:5;12316:54;13590:5;13587:35;13577:2;;13636:1;;13626:12"},"methodIdentifiers":{"addPoolFactory(address)":"dc867b79","enableRecoveryMode(address)":"dc3f574e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getFactoryAtIndex(uint256)":"a587bbe1","getFactoryCount()":"d1047434","getVault()":"8d928af8","isPoolFromKnownFactory(address)":"3a987dfa","removePoolFactory(address)":"26e54479"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialFactories\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"addPoolFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getFactoryAtIndex\",\"outputs\":[{\"internalType\":\"contract IBasePoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactoryCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromKnownFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"removePoolFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms identify failed pools and prevent further traffic from being routed to them (since in this state swap operations would fail).\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addPoolFactory(address)\":{\"notice\":\"Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be passed to `enableRecoveryMode()`.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()` reverts). Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex computations and does not call into any external contracts, which makes it a very dependable way to retrieve the underlying tokens. However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees accrued before enabling Recovery Mode will be forfeited. The Pool must have been created via a known Pool Factory contract.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getFactoryAtIndex(uint256)\":{\"notice\":\"Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`.\"},\"getFactoryCount()\":{\"notice\":\"Returns the total number of Pool Factories.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isPoolFromKnownFactory(address)\":{\"notice\":\"Returns true if the Pool has been created from a known factory.\"},\"removePoolFactory(address)\":{\"notice\":\"Removes a Pool Factory from the helper.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PoolRecoveryHelper.sol\":\"PoolRecoveryHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/PoolRecoveryHelper.sol\":{\"keccak256\":\"0xb7b4bfa0ce8f2037d6e772f2a44289737cac58ee21a20fe1a5744aa79530ec38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://819d2ccb8671877c0b2e03bba3160e59cf59ee0acce6cf93286efbe434b9f61a\",\"dweb:/ipfs/QmeJt2pZw5HsLVLjRfHTSzwwRpUkzrrouZRT1kWz7WRtGq\"]}},\"version\":1}"}},"contracts/ProtocolFeePercentagesProvider.sol":{"ProtocolFeePercentagesProvider":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint256","name":"maxYieldValue","type":"uint256"},{"internalType":"uint256","name":"maxAUMValue","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001887380380620018878339810160408190526200003491620005a0565b306080526001600160601b0319606084901b1660a0526040805163d2946c2b60e01b815290516000916001600160a01b0386169163d2946c2b91600480820192602092909190829003018186803b1580156200008f57600080fd5b505afa158015620000a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ca91906200057a565b6001600160601b0319606082901b1660c052604080518082019091526005815264165a595b1960da1b60208201529091506200010c9060029085600062000277565b6200015760036040518060400160405280601781526020017f41737365747320556e646572204d616e6167656d656e740000000000000000008152508460006200027760201b60201c565b7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5805460ff60801b1916600160801b1790556040805180820190915260048152630537761760e41b6020828101918252600080805290529051620001dd917fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb691620004e8565b507fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d805460ff60801b1916600160801b17905560408051808201909152600a815269233630b9b4102637b0b760b11b602082810191825260016000908152905290516200026c917fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7e91620004e8565b5050505050620006c4565b600082118015620002905750670de0b6b3a76400008211155b620002b85760405162461bcd60e51b8152600401620002af906200066e565b60405180910390fd5b81811115620002db5760405162461bcd60e51b8152600401620002af9062000637565b6040518060800160405280620002fc836200043f60201b620009031760201c565b6001600160401b0316815260200162000320846200043f60201b620009031760201c565b6001600160401b03908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515600160801b0260ff60801b199787166801000000000000000002600160401b600160801b0319939097166001600160401b03199092169190911791909116949094179490941692909217835560608401518051620003bf93928501929190910190620004e8565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051620003f7929190620005d9565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051620004319190620006a5565b60405180910390a250505050565b6000620004596001600160401b038311156101ba6200045d565b5090565b816200046e576200046e8162000472565b5050565b62000484816210905360ea1b62000487565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200052b57805160ff19168380011785556200055b565b828001600101855582156200055b579182015b828111156200055b5782518255916020019190600101906200053e565b50620004599291505b8082111562000459576000815560010162000564565b6000602082840312156200058c578081fd5b81516200059981620006ae565b9392505050565b600080600060608486031215620005b5578182fd5b8351620005c281620006ae565b602085015160409095015190969495509392505050565b6000604082528351806040840152815b81811015620006085760208187018101516060868401015201620005e9565b818111156200061a5782606083860101525b50602083019390935250601f91909101601f191601606001919050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b90815260200190565b6001600160a01b03811681146200048457600080fd5b60805160a05160601c60c05160601c61118162000706600039806101fc52806102aa52806103fa52806104ac5250806107525250806106d952506111816000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea264697066735822122023b0975520135f5b25793fc4bcae564541c83b9025586ff96f17f1f6eb637e4764736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1887 CODESIZE SUB DUP1 PUSH3 0x1887 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x5A0 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xD2946C2B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCA SWAP2 SWAP1 PUSH3 0x57A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x165A595B19 PUSH1 0xDA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH3 0x10C SWAP1 PUSH1 0x2 SWAP1 DUP6 PUSH1 0x0 PUSH3 0x277 JUMP JUMPDEST PUSH3 0x157 PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x41737365747320556E646572204D616E6167656D656E74000000000000000000 DUP2 MSTORE POP DUP5 PUSH1 0x0 PUSH3 0x277 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB5 DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x5377617 PUSH1 0xE4 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP1 DUP1 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x1DD SWAP2 PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB6 SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x233630B9B4102637B0B7 PUSH1 0xB1 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x26C SWAP2 PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7E SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH3 0x290 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH3 0x2B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x66E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x637 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH3 0x2FC DUP4 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x320 DUP5 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH1 0xFF PUSH1 0x80 SHL NOT SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP4 SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH3 0x3BF SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x4E8 JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x3F7 SWAP3 SWAP2 SWAP1 PUSH3 0x5D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x431 SWAP2 SWAP1 PUSH3 0x6A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x459 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x1BA PUSH3 0x45D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 PUSH3 0x46E JUMPI PUSH3 0x46E DUP2 PUSH3 0x472 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x484 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x487 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x52B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x55B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x55B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x55B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x53E JUMP JUMPDEST POP PUSH3 0x459 SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x459 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x564 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x599 DUP2 PUSH3 0x6AE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x5C2 DUP2 PUSH3 0x6AE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x608 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0x5E9 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x61A JUMPI DUP3 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1181 PUSH3 0x706 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FC MSTORE DUP1 PUSH2 0x2AA MSTORE DUP1 PUSH2 0x3FA MSTORE DUP1 PUSH2 0x4AC MSTORE POP DUP1 PUSH2 0x752 MSTORE POP DUP1 PUSH2 0x6D9 MSTORE POP PUSH2 0x1181 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 0xB0 SWAP8 SSTORE KECCAK256 SGT 0x5F JUMPDEST 0x25 PUSH26 0x3FC4BCAE564541C83B9025586FF96F17F1F6EB637E4764736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1101:5324:88:-:0;;;1880:1232;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:62;2049:46:56;;-1:-1:-1;;;;;;1073:14:62::1;::::0;;;;::::1;::::0;2067:32:88::1;::::0;;-1:-1:-1;;;2067:32:88;;;;1030:31:62;;-1:-1:-1;;;;;1073:14:62;::::1;::::0;2067:30:88::1;::::0;:32:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;1073:14:62;2067:32:88;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2109:45:88::1;::::0;;;;::::1;::::0;2329:66:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2329:66:88::1;::::0;::::1;::::0;2021:78;;-1:-1:-1;2329:66:88::1;::::0;4454:1:31::1;::::0;2378:13:88;-1:-1:-1;2329:16:88::1;:66::i;:::-;2405:80;4493:1:31;2405:80:88;;;;;;;;;;;;;;;;::::0;2470:11:::1;2483:1;2405:16;;;:80;;:::i;:::-;2856:34:::0;:52;;-1:-1:-1;;;;2856:52:88::1;-1:-1:-1::0;;;2856:52:88::1;::::0;;:34;2918:48;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2856:34:88::1;2918:48:::0;;::::1;::::0;;;2856:12:::1;2918:34:::0;;;;;:48;;::::1;::::0;:39;;:48:::1;:::i;:::-;-1:-1:-1::0;2977:40:88;:58;;-1:-1:-1;;;;2977:58:88::1;-1:-1:-1::0;;;2977:58:88::1;::::0;;:40;3045:60;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2977:40:88::1;3045:60:::0;;::::1;::::0;;;3031:4:::1;2977:12;3045:40:::0;;;;;:60;;::::1;::::0;:45;;:60:::1;:::i;:::-;;1880:1232;::::0;;;1101:5324;;3592:696;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;-1:-1:-1;;;3755:111:88;;;;;;;:::i;:::-;;;;;;;;;3900:12;3884;:28;;3876:67;;;;-1:-1:-1;;;3876:67:88;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:88;;;;;4067:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:88;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;-1:-1:-1;;;3954:191:88;-1:-1:-1;;;;3954:191:88;;;;;-1:-1:-1;;;;;;;;3954:191:88;;;;-1:-1:-1;;;;;;3954:191:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;1410:186:76:-;1466:6;1484:75;-1:-1:-1;;;;;1493:25:76;;;12782:3:12;1484:8:76;:75::i;:::-;-1:-1:-1;1583:5:76;1410:186::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:12;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1101:5324:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1101:5324:88;;;-1:-1:-1;1101:5324:88;;;;;;;;;;;;;;520:325:-1;;666:2;654:9;645:7;641:23;637:32;634:2;;;-1:-1;;672:12;634:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;724:105;628:217;-1:-1;;;628:217::o;852:565::-;;;;1016:2;1004:9;995:7;991:23;987:32;984:2;;;-1:-1;;1022:12;984:2;307:6;301:13;319:48;361:5;319:48;:::i;:::-;1200:2;1250:22;;457:13;1319:2;1369:22;;;457:13;1074:89;;457:13;;-1:-1;457:13;978:439;-1:-1;;;978:439::o;2572:421::-;;2747:2;2768:17;2761:47;1569:5;4163:12;4320:6;2747:2;2736:9;2732:18;4308:19;-1:-1;4996:101;5010:6;5007:1;5004:13;4996:101;;;4357:4;5077:11;;;;;5071:18;4348:14;5058:11;;;;5051:39;5025:10;4996:101;;;5112:6;5109:1;5106:13;5103:2;;;-1:-1;4348:14;5168:6;2736:9;5159:16;;5152:27;5103:2;-1:-1;4357:4;2964:18;;2523:37;;;;-1:-1;5284:7;5268:14;;;;-1:-1;;5264:28;1727:39;4348:14;1727:39;;2718:275;-1:-1;2718:275::o;3000:416::-;3200:2;3214:47;;;2003:2;3185:18;;;4308:19;2039:28;4348:14;;;2019:49;2087:12;;;3171:245::o;3423:416::-;3623:2;3637:47;;;2338:2;3608:18;;;4308:19;2374:32;4348:14;;;2354:53;2426:12;;;3594:245::o;3846:222::-;2523:37;;;3973:2;3958:18;;3944:124::o;5305:179::-;-1:-1;;;;;4778:54;;5395:66;;5385:2;;5475:1;;5465:12;5379:105;1101:5324:88;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":1753}],"5180":[{"length":32,"start":1874}],"12258":[{"length":32,"start":508},{"length":32,"start":682},{"length":32,"start":1018},{"length":32,"start":1196}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea264697066735822122023b0975520135f5b25793fc4bcae564541c83b9025586ff96f17f1f6eb637e4764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 0xB0 SWAP8 SSTORE KECCAK256 SGT 0x5F JUMPDEST 0x25 PUSH26 0x3FC4BCAE564541C83B9025586FF96F17F1F6EB637E4764736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"1101:5324:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:440;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:653;;;;;;:::i;:::-;;:::i;:::-;;5785:468;;;;;;:::i;:::-;;:::i;3252:334::-;;;;;;:::i;:::-;;:::i;4433:241::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2607:430:56:-;;;;;;:::i;:::-;;:::i;4294:133:88:-;;;;;;:::i;:::-;;:::i;1158:79:62:-;;;:::i;:::-;;;;;;;:::i;1297:109::-;;;:::i;6259:164:88:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5339:440::-;5444:7;5426;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5467:31;5463:310:::1;;5521:22;:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5514:52;;;;5463:310;4413:1:31;5587:7:88;:37;5583:190;;;5647:22;:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;5583:190;5735:12;:21:::0;;;::::1;::::0;;;;;;:27;::::1;;::::0;-1:-1:-1;5583:190:88::1;5339:440:::0;;;;:::o;4680:653::-;4804:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;2276:21:56::1;:19;:21::i;:::-;4856:43:88::2;4881:7;4890:8;4856:24;:43::i;:::-;4848:78;;;;;;;;;;;;:::i;:::-;4941:31:::0;4937:327:::2;;4988:53;::::0;;;;:43:::2;:22;:43;::::0;::::2;::::0;:53:::2;::::0;5032:8;;4988:53:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4937:327;;;4413:1:31;5062:7:88;:37;5058:206;;;5115:58;::::0;;;;:48:::2;:22;:48;::::0;::::2;::::0;:58:::2;::::0;5164:8;;5115:58:::2;;;:::i;5058:206::-;5234:19;:8;:17;:19::i;:::-;5204:12;:21:::0;;;::::2;::::0;;;;;;:49;;;::::2;;::::0;;;::::2;::::0;;;::::2;::::0;;5058:206:::2;5308:7;5279:47;5317:8;5279:47;;;;;;:::i;:::-;;;;;;;;4680:653:::0;;;:::o;5785:468::-;5935:7;5909;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;5962:31;5958:289:::1;;1778:5;6009:40;;;;5958:289;4413:1:31;6070:7:88;:37;6066:181;;;1863:4;6123:46;;;;6066:181;6207:12;:21:::0;;;::::1;::::0;;;;;;:29;;;::::1;;;::::0;-1:-1:-1;6200:36:88::1;;3252:334:::0;2276:21:56;:19;:21::i;:::-;3446:12:88::1;:21:::0;;;::::1;::::0;;;;;;:32;;;::::1;;;3445:33;3437:73;;;;;;;;;;;;:::i;:::-;3520:59;3537:7;3546:4;3552:12;3566;3520:16;:59::i;:::-;3252:334:::0;;;;:::o;4433:241::-;4595:4;4569:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;4631:36:::1;4659:7;4631:27;:36::i;:::-;4622:45:::0;;::::1;;::::0;4433:241;-1:-1:-1;;;4433:241:88:o;2607:430:56:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;4294:133:88:-;4365:4;4388:21;;;;;;;;;;:32;;;;;;;4294:133::o;1158:79:62:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;6259:164:88:-;6358:13;6340:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;6390:12:::1;:21:::0;;;::::1;::::0;;;;;;;;:26:::1;::::0;;::::1;6383:33:::0;;;;::::1;::::0;;::::1;;;;::::0;;;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;6390:26;;6383:33;::::1;6390:26:::0;6383:33;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6259:164:::0;;;;:::o;1410:186:76:-;1466:6;1484:75;1502:16;1493:25;;;12782:3:12;1484:8:76;:75::i;:::-;-1:-1:-1;1583:5:76;1410:186::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;:::-;2420:181;:::o;3592:696:88:-;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;;;;;;;;;:::i;:::-;3900:12;3884;:28;;3876:67;;;;;;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;:23::i;:::-;3978:167;;;;;;4067:23;:12;:21;:23::i;:::-;3978:167;;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:62:o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:257;;1297:2;1285:9;1276:7;1272:23;1268:32;1265:2;;;-1:-1;;1303:12;1265:2;86:6;80:13;14687:5;12737:13;12730:21;14665:5;14662:32;14652:2;;-1:-1;;14698:12;1449:239;;1552:2;1540:9;1531:7;1527:23;1523:32;1520:2;;;-1:-1;;1558:12;1520:2;219:6;206:20;12914:66;14809:5;12903:78;14785:5;14782:34;14772:2;;-1:-1;;14820:12;1695:303;;1830:2;1818:9;1809:7;1805:23;1801:32;1798:2;;;-1:-1;;1836:12;1798:2;379:6;373:13;13184:42;14973:5;13173:54;14928:5;14925:55;14915:2;;-1:-1;;14984:12;2005:241;;2109:2;2097:9;2088:7;2084:23;2080:32;2077:2;;;-1:-1;;2115:12;2077:2;-1:-1;974:20;;2071:175;-1:-1;2071:175::o;2253:263::-;;2368:2;2356:9;2347:7;2343:23;2339:32;2336:2;;;-1:-1;;2374:12;2336:2;-1:-1;1122:13;;2330:186;-1:-1;2330:186::o;2523:723::-;;;;;2688:3;2676:9;2667:7;2663:23;2659:33;2656:2;;;-1:-1;;2695:12;2656:2;987:6;974:20;2747:63;;2875:2;;2864:9;2860:18;2847:32;2899:18;;2891:6;2888:30;2885:2;;;-1:-1;;2921:12;2885:2;2997:6;2986:9;2982:22;;;559:3;552:4;544:6;540:17;536:27;526:2;;-1:-1;;567:12;526:2;614:6;601:20;2899:18;12079:6;12076:30;12073:2;;;-1:-1;;12109:12;12073:2;11742;11736:9;2875:2;12182:9;552:4;12167:6;12163:17;12159:33;11772:6;11768:17;;11879:6;11867:10;11864:22;2899:18;11831:10;11828:34;11825:62;11822:2;;;-1:-1;;11890:12;11822:2;11742;11909:22;707:21;;;807:16;;;;;804:25;-1:-1;801:2;;;-1:-1;;832:12;801:2;13991:6;2875:2;749:6;745:17;2875:2;783:5;779:16;13968:30;14029:16;;;;;;14022:27;;;;-1:-1;2650:596;;783:5;;-1:-1;;;;11742:2;3090:22;;974:20;;3159:2;3198:22;974:20;;2650:596::o;3253:366::-;;;3374:2;3362:9;3353:7;3349:23;3345:32;3342:2;;;-1:-1;;3380:12;3342:2;-1:-1;;974:20;;;3532:2;3571:22;;;974:20;;-1:-1;3336:283::o;4627:347::-;;4772:5;12360:12;12517:6;12512:3;12505:19;-1:-1;14136:101;14150:6;14147:1;14144:13;14136:101;;;12554:4;14217:11;;;;;14211:18;14198:11;;;;;14191:39;14165:10;14136:101;;;14252:6;14249:1;14246:13;14243:2;;;-1:-1;12554:4;14308:6;12549:3;14299:16;;14292:27;14243:2;-1:-1;14589:2;14569:14;14585:7;14565:28;4930:39;;;;12554:4;4930:39;;4719:255;-1:-1;;4719:255::o;6772:387::-;3928:37;;;12914:66;12903:78;7023:2;7014:12;;4223:56;7123:11;;;6914:245::o;7166:210::-;12737:13;;12730:21;3811:34;;7287:2;7272:18;;7258:118::o;7383:222::-;3928:37;;;7510:2;7495:18;;7481:124::o;7612:444::-;3928:37;;;13184:42;13173:54;;;7959:2;7944:18;;3697:37;13173:54;8042:2;8027:18;;3697:37;7795:2;7780:18;;7766:290::o;8063:262::-;13184:42;13173:54;;;;4382:70;;8210:2;8195:18;;8181:144::o;8591:310::-;;8738:2;8759:17;8752:47;8813:78;8738:2;8727:9;8723:18;8877:6;8813:78;:::i;8908:421::-;;9083:2;9104:17;9097:47;9158:78;9083:2;9072:9;9068:18;9222:6;9158:78;:::i;:::-;9150:86;;3958:5;9315:2;9304:9;9300:18;3928:37;9054:275;;;;;:::o;9336:416::-;9536:2;9550:47;;;5206:2;9521:18;;;12505:19;5242:28;12545:14;;;5222:49;5290:12;;;9507:245::o;9759:416::-;9959:2;9973:47;;;5541:2;9944:18;;;12505:19;5577:29;12545:14;;;5557:50;5626:12;;;9930:245::o;10182:416::-;10382:2;10396:47;;;5877:2;10367:18;;;12505:19;5913:32;12545:14;;;5893:53;5965:12;;;10353:245::o;10605:416::-;10805:2;10819:47;;;6216:2;10790:18;;;12505:19;6252:23;12545:14;;;6232:44;6295:12;;;10776:245::o;11028:416::-;11228:2;11242:47;;;6546:2;11213:18;;;12505:19;6582:24;12545:14;;;6562:45;6626:12;;;11199:245::o"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","getVault()":"8d928af8","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxYieldValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAUMValue\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeePercentagesProvider.sol\":\"ProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]},\"contracts/ProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7222bf213cd467658150c021177a7941ad27f724d44998c89015345313a743d5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1aa0e05ff305b8de694a87b6c65ba091e499dce6e818cd6d769fbd5393f4387a\",\"dweb:/ipfs/QmQ9PuDt1crwUMJDuuhkuXZwid2t2yKfB8xm5uZdgkgdrQ\"]}},\"version\":1}"}},"contracts/ProtocolFeeSplitter.sol":{"Pool":{"abi":[{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getOwner()":"893d20e8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeeSplitter.sol\":\"Pool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0x3709eb8e9b59571f6f9f73390fa8b152028e01ab5cc43867f5e075c0b825d57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cb4044b468363f2bc9eeb5a07f7690720f4608c32d12b34352ff3e3e5c9e8709\",\"dweb:/ipfs/QmQeZWec9sPYtnAKXhkYnpxrJSAT5vbk3Gp3ny4jnCSU8x\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/ProtocolFeeSplitter.sol\":{\"keccak256\":\"0x56c3d454fb8f055cda190cf6861f1d15256aa39ad22ae3ec78f4e398bf77227f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://77abd9f6c5dcb94ec0c37561feee9f8111589e921dd3ed6540e43895dd7457aa\",\"dweb:/ipfs/QmVXvvkcMTo2TjeYCgHpUVw3yw5FHUYS5bN7sdcayw4wvv\"]}},\"version\":1}"},"ProtocolFeeSplitter":{"abi":[{"inputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"protocolFeesWithdrawer","type":"address"},{"internalType":"address","name":"daoFundsRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newDaoFundsRecipient","type":"address"}],"name":"DAOFundsRecipientChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"DefaultRevenueSharePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolEarned","type":"uint256"},{"indexed":true,"internalType":"address","name":"daoFundsRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"daoEarned","type":"uint256"}],"name":"FeesCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"PoolBeneficiaryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"PoolRevenueShareChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"PoolRevenueShareCleared","type":"event"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"clearRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"collectFees","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"daoAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getAmounts","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"daoAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDaoFundsRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultRevenueSharePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesWithdrawer","outputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getRevenueShareSettings","outputs":[{"internalType":"uint256","name":"revenueSharePercentageOverride","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"bool","name":"overrideSet","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDaoFundsRecipient","type":"address"}],"name":"setDaoFundsRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"defaultRevenueSharePercentage","type":"uint256"}],"name":"setDefaultRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"setPoolBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"setRevenueSharePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516113973803806113978339818101604052604081101561003357600080fd5b5080516020918201516040805163d2946c2b60e01b81529051929391926001600160a01b0385169263d2946c2b9260048082019391829003018186803b15801561007c57600080fd5b505afa158015610090573d6000803e3d6000fd5b505050506040513d60208110156100a657600080fd5b50516040805163fbfa77cf60e01b815290516001600160a01b039092169163fbfa77cf91600480820192602092909190829003018186803b1580156100ea57600080fd5b505afa1580156100fe573d6000803e3d6000fd5b505050506040513d602081101561011457600080fd5b5051306080819052606082811b6001600160601b031990811660a0529085901b1660c052600080546001600160a01b0319166001600160a01b039485161781559093918316929091169061120c9061018b9039806104ca5280610c565280610eba5250806108f752508061086e525061120c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063851c1bb31161008c57806392b2b1f61161006657806392b2b1f61461026d5780639d8669d31461028a578063aaabadc5146102a7578063d6c9cd58146102af576100ea565b8063851c1bb31461021e57806389ee2f261461025d5780638d928af814610265576100ea565b80634f4f4bc7116100c85780634f4f4bc714610164578063644b3f1b146101955780637ab74be4146101af578063817db73b146101e8576100ea565b80631cb594fc146100ef5780633b0cf663146101145780634ca760eb14610131575b600080fd5b6101126004803603604081101561010557600080fd5b5080359060200135610301565b005b6101126004803603602081101561012a57600080fd5b50356103e2565b6101126004803603602081101561014757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610447565b61016c6104c8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d6104ec565b60408051918252519081900360200190f35b610112600480360360408110156101c557600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166104f2565b610205600480360360208110156101fe57600080fd5b5035610703565b6040805192835260208301919091528051918290030190f35b61019d6004803603602081101561023457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610868565b61016c6108d9565b61016c6108f5565b6101126004803603602081101561028357600080fd5b5035610919565b610205600480360360208110156102a057600080fd5b5035610973565b61016c610a13565b6102cc600480360360208110156102c557600080fd5b5035610a93565b6040805193845273ffffffffffffffffffffffffffffffffffffffff9092166020840152151582820152519081900360600190f35b610309610b33565b6103206706f05b59d3b200008211156102bc610b74565b60008281526002602090815260409182902080547f01000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffff00000000000000000000009091166affffffffffffffffffffff8616177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff161790558151838152915184927f351d078d378f4b620d746f0652a508c25d9c47976faf18fa2effff8c7b2f92d792908290030190a25050565b6103ea610b33565b60008181526002602052604080822080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555182917feb38a0068c73c40208bc11bcae0ce98b58a5f422aef6dd1c38380cb8feec69ed91a250565b61044f610b33565b6000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f1df61f1f2a3e1213878b7b52bc8526b262948087505f0060af8cadae8bcc10309181900360200190a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b60015490565b60006104fc6108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b505050506040513d604081101561057557600080fd5b5051604080517f893d20e800000000000000000000000000000000000000000000000000000000815290519192506106689173ffffffffffffffffffffffffffffffffffffffff84169163893d20e8916004808301926020929190829003018186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331480610660575061066061065a7f7ab74be400000000000000000000000000000000000000000000000000000000610868565b33610b86565b610191610b74565b60008381526002602090815260409182902080547fff0000000000000000000000000000000000000000ffffffffffffffffffffff166b01000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716908102919091179091558251908152915185927fe465e96a44286b329b8c54cccf70d1d6274e8efaea722886b9859f2fe72e434c92908290030190a2505050565b60008060006107106108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561075f57600080fd5b505afa158015610773573d6000803e3d6000fd5b505050506040513d604081101561078957600080fd5b505160008581526002602052604090205490915081906b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166107ce8287610c4f565b90955093506107de828683610e1a565b600054610804908390869073ffffffffffffffffffffffffffffffffffffffff16610e1a565b6000546040805187815260208101879052815173ffffffffffffffffffffffffffffffffffffffff938416938516928a927f5e6a5d32e254e9a9ada84103f092032c1e3a9882a3a838d3fbe3a3d7e443d997929081900390910190a4505050915091565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b610921610b33565b6109386706f05b59d3b200008211156102bc610b74565b60018190556040805182815290517f23f865882575e5485ec12a672dffa26f3ee0470c2434333b8fde4cc38b48c58c9181900360200190a150565b60008060006109806108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d60408110156109f957600080fd5b5051905080610a088186610c4f565b935093505050915091565b6000610a1d6108f5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d6020811015610a8c57600080fd5b5051905090565b6000806000610aa06111b6565b50505060009182525060026020908152604091829020825160608101845290546affffffffffffffffffffff81168083526b010000000000000000000000820473ffffffffffffffffffffffffffffffffffffffff169383018490527f010000000000000000000000000000000000000000000000000000000000000090910460ff161515919093018190529192909190565b6000610b626000357fffffffff0000000000000000000000000000000000000000000000000000000016610868565b9050610b716106608233610b86565b50565b81610b8257610b8281610fed565b5050565b6000610b90610a13565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c1c57600080fd5b505afa158015610c30573d6000803e3d6000fd5b505050506040513d6020811015610c4657600080fd5b50519392505050565b60008060007f0000000000000000000000000000000000000000000000000000000000000000905060008573ffffffffffffffffffffffffffffffffffffffff166370a082318373ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdb57600080fd5b505afa158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152516024808301926020929190829003018186803b158015610d7157600080fd5b505afa158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b5051905080610db257600080935093505050610e13565b6000858152600260205260409020546b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1680610df95750600093509150610e139050565b610e0b82610e0688611017565b6110cd565b945094505050505b9250929050565b81610e2457610fe8565b604080516001808252818301909252606091602080830190803683370190505090508381600081518110610e5457fe5b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508381600081518110610eac57fe5b6020026020010181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab68383866040518463ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838103835286818151815260200191508051906020019060200280838360005b83811015610f66578181015183820152602001610f4e565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015610fa5578181015183820152602001610f8d565b5050505090500195505050505050600060405180830381600087803b158015610fcd57600080fd5b505af1158015610fe1573d6000803e3d6000fd5b5050505050505b505050565b610b71817f42414c00000000000000000000000000000000000000000000000000000000006110ef565b60006110216111b6565b50600082815260026020908152604091829020825160608101845290546affffffffffffffffffffff811682526b010000000000000000000000810473ffffffffffffffffffffffffffffffffffffffff16928201929092527f010000000000000000000000000000000000000000000000000000000000000090910460ff161515918101829052906110b6576001546110c6565b80516affffffffffffffffffffff165b9392505050565b6000806110da848461116a565b91506110e684836111a0565b90509250929050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600082820261118e84158061118757508385838161118457fe5b04145b6003610b74565b670de0b6b3a764000090049392505050565b60006111b0838311156001610b74565b50900390565b60408051606081018252600080825260208201819052918101919091529056fea2646970667358221220a98e1ef7aea1c709bbac639a063de4bfc470cd8978f0411f19c2a016e6bab60d64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1397 CODESIZE SUB DUP1 PUSH2 0x1397 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 PUSH4 0xD2946C2B SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFBFA77CF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xFBFA77CF SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xA0 MSTORE SWAP1 DUP6 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR DUP2 SSTORE SWAP1 SWAP4 SWAP2 DUP4 AND SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH2 0x120C SWAP1 PUSH2 0x18B SWAP1 CODECOPY DUP1 PUSH2 0x4CA MSTORE DUP1 PUSH2 0xC56 MSTORE DUP1 PUSH2 0xEBA MSTORE POP DUP1 PUSH2 0x8F7 MSTORE POP DUP1 PUSH2 0x86E MSTORE POP PUSH2 0x120C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x92B2B1F6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x92B2B1F6 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x9D8669D3 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD6C9CD58 EQ PUSH2 0x2AF JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x89EE2F26 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x265 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x4F4F4BC7 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x4F4F4BC7 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x644B3F1B EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x7AB74BE4 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x817DB73B EQ PUSH2 0x1E8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1CB594FC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3B0CF663 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x4CA760EB EQ PUSH2 0x131 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x301 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x447 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x4C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x4EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x703 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x868 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x919 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x973 JUMP JUMPDEST PUSH2 0x16C PUSH2 0xA13 JUMP JUMPDEST PUSH2 0x2CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x309 PUSH2 0xB33 JUMP JUMPDEST PUSH2 0x320 PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000 SWAP1 SWAP2 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND OR SWAP1 SSTORE DUP2 MLOAD DUP4 DUP2 MSTORE SWAP2 MLOAD DUP5 SWAP3 PUSH32 0x351D078D378F4B620D746F0652A508C25D9C47976FAF18FA2EFFFF8C7B2F92D7 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x3EA PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE MLOAD DUP3 SWAP2 PUSH32 0xEB38A0068C73C40208BC11BCAE0CE98B58A5F422AEF6DD1C38380CB8FEEC69ED SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x44F PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x1DF61F1F2A3E1213878B7B52BC8526B262948087505F0060AF8CADAE8BCC1030 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x893D20E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH2 0x668 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x893D20E8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0x660 JUMPI POP PUSH2 0x660 PUSH2 0x65A PUSH32 0x7AB74BE400000000000000000000000000000000000000000000000000000000 PUSH2 0x868 JUMP JUMPDEST CALLER PUSH2 0xB86 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0x10000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xE465E96A44286B329B8C54CCCF70D1D6274E8EFAEA722886B9859F2FE72E434C SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x710 PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x773 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 SWAP1 PUSH12 0x10000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7CE DUP3 DUP8 PUSH2 0xC4F JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x7DE DUP3 DUP7 DUP4 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x804 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 DUP6 AND SWAP3 DUP11 SWAP3 PUSH32 0x5E6A5D32E254E9A9ADA84103F092032C1E3A9882A3A838D3FBE3A3D7E443D997 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x921 PUSH2 0xB33 JUMP JUMPDEST PUSH2 0x938 PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x23F865882575E5485EC12A672DFFA26F3EE0470C2434333B8FDE4CC38B48C58C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x980 PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xA08 DUP2 DUP7 PUSH2 0xC4F JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1D PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAA0 PUSH2 0x11B6 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH12 0x10000000000000000000000 DUP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO SWAP2 SWAP1 SWAP4 ADD DUP2 SWAP1 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB62 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x868 JUMP JUMPDEST SWAP1 POP PUSH2 0xB71 PUSH2 0x660 DUP3 CALLER PUSH2 0xB86 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0xB82 JUMPI PUSH2 0xB82 DUP2 PUSH2 0xFED JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB90 PUSH2 0xA13 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 SWAP1 POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xDB2 JUMPI PUSH1 0x0 DUP1 SWAP4 POP SWAP4 POP POP POP PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH12 0x10000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xDF9 JUMPI POP PUSH1 0x0 SWAP4 POP SWAP2 POP PUSH2 0xE13 SWAP1 POP JUMP JUMPDEST PUSH2 0xE0B DUP3 PUSH2 0xE06 DUP9 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x10CD JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xE24 JUMPI PUSH2 0xFE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE54 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEAC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP4 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF66 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF4E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFA5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB71 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1021 PUSH2 0x11B6 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH12 0x10000000000000000000000 DUP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x10B6 JUMPI PUSH1 0x1 SLOAD PUSH2 0x10C6 JUMP JUMPDEST DUP1 MLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10DA DUP5 DUP5 PUSH2 0x116A JUMP JUMPDEST SWAP2 POP PUSH2 0x10E6 DUP5 DUP4 PUSH2 0x11A0 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x118E DUP5 ISZERO DUP1 PUSH2 0x1187 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1184 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xB74 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0xB74 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 DUP15 0x1E 0xF7 0xAE LOG1 0xC7 MULMOD 0xBB 0xAC PUSH4 0x9A063DE4 0xBF 0xC4 PUSH17 0xCD8978F0411F19C2A016E6BAB60D64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"2003:7440:89:-:0;;;3023:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3023:295:89;;;;;;;;3142:49;;-1:-1:-1;;;3142:49:89;;;;3023:295;;;;-1:-1:-1;;;;;3142:47:89;;;;;:49;;;;;;;;;;;:47;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3142:49:89;:57;;;-1:-1:-1;;;3142:57:89;;;;-1:-1:-1;;;;;3142:55:89;;;;;;:57;;;;;:49;;:57;;;;;;;;:55;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3142:57:89;1054:4:62;2049:46:56;;;;1073:14:62::1;::::0;;;-1:-1:-1;;;;;;1073:14:62;;;::::1;::::0;3215:48:89;;;;;::::1;::::0;1030:31:62;3273:38:89;;-1:-1:-1;;;;;;3273:38:89::1;-1:-1:-1::0;;;;;3273:38:89;;::::1;;::::0;;1054:4:62;;2003:7440:89;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":2158}],"5180":[{"length":32,"start":2295}],"12665":[{"length":32,"start":1226},{"length":32,"start":3158},{"length":32,"start":3770}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063851c1bb31161008c57806392b2b1f61161006657806392b2b1f61461026d5780639d8669d31461028a578063aaabadc5146102a7578063d6c9cd58146102af576100ea565b8063851c1bb31461021e57806389ee2f261461025d5780638d928af814610265576100ea565b80634f4f4bc7116100c85780634f4f4bc714610164578063644b3f1b146101955780637ab74be4146101af578063817db73b146101e8576100ea565b80631cb594fc146100ef5780633b0cf663146101145780634ca760eb14610131575b600080fd5b6101126004803603604081101561010557600080fd5b5080359060200135610301565b005b6101126004803603602081101561012a57600080fd5b50356103e2565b6101126004803603602081101561014757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610447565b61016c6104c8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d6104ec565b60408051918252519081900360200190f35b610112600480360360408110156101c557600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166104f2565b610205600480360360208110156101fe57600080fd5b5035610703565b6040805192835260208301919091528051918290030190f35b61019d6004803603602081101561023457600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610868565b61016c6108d9565b61016c6108f5565b6101126004803603602081101561028357600080fd5b5035610919565b610205600480360360208110156102a057600080fd5b5035610973565b61016c610a13565b6102cc600480360360208110156102c557600080fd5b5035610a93565b6040805193845273ffffffffffffffffffffffffffffffffffffffff9092166020840152151582820152519081900360600190f35b610309610b33565b6103206706f05b59d3b200008211156102bc610b74565b60008281526002602090815260409182902080547f01000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffff00000000000000000000009091166affffffffffffffffffffff8616177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff161790558151838152915184927f351d078d378f4b620d746f0652a508c25d9c47976faf18fa2effff8c7b2f92d792908290030190a25050565b6103ea610b33565b60008181526002602052604080822080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690555182917feb38a0068c73c40208bc11bcae0ce98b58a5f422aef6dd1c38380cb8feec69ed91a250565b61044f610b33565b6000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f1df61f1f2a3e1213878b7b52bc8526b262948087505f0060af8cadae8bcc10309181900360200190a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b60015490565b60006104fc6108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b505050506040513d604081101561057557600080fd5b5051604080517f893d20e800000000000000000000000000000000000000000000000000000000815290519192506106689173ffffffffffffffffffffffffffffffffffffffff84169163893d20e8916004808301926020929190829003018186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331480610660575061066061065a7f7ab74be400000000000000000000000000000000000000000000000000000000610868565b33610b86565b610191610b74565b60008381526002602090815260409182902080547fff0000000000000000000000000000000000000000ffffffffffffffffffffff166b01000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716908102919091179091558251908152915185927fe465e96a44286b329b8c54cccf70d1d6274e8efaea722886b9859f2fe72e434c92908290030190a2505050565b60008060006107106108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561075f57600080fd5b505afa158015610773573d6000803e3d6000fd5b505050506040513d604081101561078957600080fd5b505160008581526002602052604090205490915081906b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166107ce8287610c4f565b90955093506107de828683610e1a565b600054610804908390869073ffffffffffffffffffffffffffffffffffffffff16610e1a565b6000546040805187815260208101879052815173ffffffffffffffffffffffffffffffffffffffff938416938516928a927f5e6a5d32e254e9a9ada84103f092032c1e3a9882a3a838d3fbe3a3d7e443d997929081900390910190a4505050915091565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b610921610b33565b6109386706f05b59d3b200008211156102bc610b74565b60018190556040805182815290517f23f865882575e5485ec12a672dffa26f3ee0470c2434333b8fde4cc38b48c58c9181900360200190a150565b60008060006109806108f5565b73ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d60408110156109f957600080fd5b5051905080610a088186610c4f565b935093505050915091565b6000610a1d6108f5565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d6020811015610a8c57600080fd5b5051905090565b6000806000610aa06111b6565b50505060009182525060026020908152604091829020825160608101845290546affffffffffffffffffffff81168083526b010000000000000000000000820473ffffffffffffffffffffffffffffffffffffffff169383018490527f010000000000000000000000000000000000000000000000000000000000000090910460ff161515919093018190529192909190565b6000610b626000357fffffffff0000000000000000000000000000000000000000000000000000000016610868565b9050610b716106608233610b86565b50565b81610b8257610b8281610fed565b5050565b6000610b90610a13565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610c1c57600080fd5b505afa158015610c30573d6000803e3d6000fd5b505050506040513d6020811015610c4657600080fd5b50519392505050565b60008060007f0000000000000000000000000000000000000000000000000000000000000000905060008573ffffffffffffffffffffffffffffffffffffffff166370a082318373ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdb57600080fd5b505afa158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152516024808301926020929190829003018186803b158015610d7157600080fd5b505afa158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b5051905080610db257600080935093505050610e13565b6000858152600260205260409020546b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1680610df95750600093509150610e139050565b610e0b82610e0688611017565b6110cd565b945094505050505b9250929050565b81610e2457610fe8565b604080516001808252818301909252606091602080830190803683370190505090508381600081518110610e5457fe5b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508381600081518110610eac57fe5b6020026020010181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab68383866040518463ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838103835286818151815260200191508051906020019060200280838360005b83811015610f66578181015183820152602001610f4e565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015610fa5578181015183820152602001610f8d565b5050505090500195505050505050600060405180830381600087803b158015610fcd57600080fd5b505af1158015610fe1573d6000803e3d6000fd5b5050505050505b505050565b610b71817f42414c00000000000000000000000000000000000000000000000000000000006110ef565b60006110216111b6565b50600082815260026020908152604091829020825160608101845290546affffffffffffffffffffff811682526b010000000000000000000000810473ffffffffffffffffffffffffffffffffffffffff16928201929092527f010000000000000000000000000000000000000000000000000000000000000090910460ff161515918101829052906110b6576001546110c6565b80516affffffffffffffffffffff165b9392505050565b6000806110da848461116a565b91506110e684836111a0565b90509250929050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600082820261118e84158061118757508385838161118457fe5b04145b6003610b74565b670de0b6b3a764000090049392505050565b60006111b0838311156001610b74565b50900390565b60408051606081018252600080825260208201819052918101919091529056fea2646970667358221220a98e1ef7aea1c709bbac639a063de4bfc470cd8978f0411f19c2a016e6bab60d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x92B2B1F6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x92B2B1F6 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0x9D8669D3 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD6C9CD58 EQ PUSH2 0x2AF JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x89EE2F26 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x265 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x4F4F4BC7 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x4F4F4BC7 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x644B3F1B EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x7AB74BE4 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x817DB73B EQ PUSH2 0x1E8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1CB594FC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3B0CF663 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x4CA760EB EQ PUSH2 0x131 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x301 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x447 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x4C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x4EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x703 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x868 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x919 JUMP JUMPDEST PUSH2 0x205 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x973 JUMP JUMPDEST PUSH2 0x16C PUSH2 0xA13 JUMP JUMPDEST PUSH2 0x2CC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x309 PUSH2 0xB33 JUMP JUMPDEST PUSH2 0x320 PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000 SWAP1 SWAP2 AND PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND OR SWAP1 SSTORE DUP2 MLOAD DUP4 DUP2 MSTORE SWAP2 MLOAD DUP5 SWAP3 PUSH32 0x351D078D378F4B620D746F0652A508C25D9C47976FAF18FA2EFFFF8C7B2F92D7 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x3EA PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE MLOAD DUP3 SWAP2 PUSH32 0xEB38A0068C73C40208BC11BCAE0CE98B58A5F422AEF6DD1C38380CB8FEEC69ED SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x44F PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0x1DF61F1F2A3E1213878B7B52BC8526B262948087505F0060AF8CADAE8BCC1030 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x893D20E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH2 0x668 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x893D20E8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0x660 JUMPI POP PUSH2 0x660 PUSH2 0x65A PUSH32 0x7AB74BE400000000000000000000000000000000000000000000000000000000 PUSH2 0x868 JUMP JUMPDEST CALLER PUSH2 0xB86 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0x10000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xE465E96A44286B329B8C54CCCF70D1D6274E8EFAEA722886B9859F2FE72E434C SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x710 PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x773 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 SWAP1 PUSH12 0x10000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7CE DUP3 DUP8 PUSH2 0xC4F JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x7DE DUP3 DUP7 DUP4 PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x804 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE1A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 DUP6 AND SWAP3 DUP11 SWAP3 PUSH32 0x5E6A5D32E254E9A9ADA84103F092032C1E3A9882A3A838D3FBE3A3D7E443D997 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x921 PUSH2 0xB33 JUMP JUMPDEST PUSH2 0x938 PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x23F865882575E5485EC12A672DFFA26F3EE0470C2434333B8FDE4CC38B48C58C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x980 PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xA08 DUP2 DUP7 PUSH2 0xC4F JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1D PUSH2 0x8F5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAA0 PUSH2 0x11B6 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH12 0x10000000000000000000000 DUP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO SWAP2 SWAP1 SWAP4 ADD DUP2 SWAP1 MSTORE SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB62 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x868 JUMP JUMPDEST SWAP1 POP PUSH2 0xB71 PUSH2 0x660 DUP3 CALLER PUSH2 0xB86 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0xB82 JUMPI PUSH2 0xB82 DUP2 PUSH2 0xFED JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB90 PUSH2 0xA13 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 SWAP1 POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xDB2 JUMPI PUSH1 0x0 DUP1 SWAP4 POP SWAP4 POP POP POP PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH12 0x10000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xDF9 JUMPI POP PUSH1 0x0 SWAP4 POP SWAP2 POP PUSH2 0xE13 SWAP1 POP JUMP JUMPDEST PUSH2 0xE0B DUP3 PUSH2 0xE06 DUP9 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x10CD JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xE24 JUMPI PUSH2 0xFE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE54 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEAC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP4 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF66 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF4E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFA5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xB71 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x10EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1021 PUSH2 0x11B6 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH12 0x10000000000000000000000 DUP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x10B6 JUMPI PUSH1 0x1 SLOAD PUSH2 0x10C6 JUMP JUMPDEST DUP1 MLOAD PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x10DA DUP5 DUP5 PUSH2 0x116A JUMP JUMPDEST SWAP2 POP PUSH2 0x10E6 DUP5 DUP4 PUSH2 0x11A0 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x118E DUP5 ISZERO DUP1 PUSH2 0x1187 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x1184 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xB74 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0xB74 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 DUP15 0x1E 0xF7 0xAE LOG1 0xC7 MULMOD 0xBB 0xAC PUSH4 0x9A063DE4 0xBF 0xC4 PUSH17 0xCD8978F0411F19C2A016E6BAB60D64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"2003:7440:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5497:453;;;;;;;;;;;;;;;;-1:-1:-1;5497:453:89;;;;;;;:::i;:::-;;6169:189;;;;;;;;;;;;;;;;-1:-1:-1;6169:189:89;;:::i;3551:211::-;;;;;;;;;;;;;;;;-1:-1:-1;3551:211:89;;;;:::i;7379:141::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4833:139;;;:::i;:::-;;;;;;;;;;;;;;;;3809:477;;;;;;;;;;;;;;;;-1:-1:-1;3809:477:89;;;;;;;;;:::i;6753:558::-;;;;;;;;;;;;;;;;-1:-1:-1;6753:558:89;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2607:430:56;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:56;;;;:::i;3389:115:89:-;;;:::i;1158:79:62:-;;;:::i;5019:431:89:-;;;;;;;;;;;;;;;;-1:-1:-1;5019:431:89;;:::i;6453:253::-;;;;;;;;;;;;;;;;-1:-1:-1;6453:253:89;;:::i;1297:109:62:-;;;:::i;4364:422:89:-;;;;;;;;;;;;;;;;-1:-1:-1;4364:422:89;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5497:453;2276:21:56;:19;:21::i;:::-;5621:106:89::1;2296:5;5630:22;:55;;14970:3:12;5621:8:89;:106::i;:::-;5737:21;::::0;;;:13:::1;:21;::::0;;;;;;;;:85;;5832:40;5737:85;;;::::1;;::::0;::::1;;5832:40:::0;::::1;;::::0;;5888:55;;;;;;;5737:21;;5888:55:::1;::::0;;;;;;;::::1;5497:453:::0;;:::o;6169:189::-;2276:21:56;:19;:21::i;:::-;6299:5:89::1;6263:21:::0;;;:13:::1;:21;::::0;;;;;:41;;;::::1;::::0;;6320:31;6277:6;;6320:31:::1;::::0;::::1;6169:189:::0;:::o;3551:211::-;2276:21:56;:19;:21::i;:::-;3652:18:89::1;:41:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;3709:46:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3551:211:::0;:::o;7379:141::-;7490:23;7379:141;:::o;4833:139::-;4935:30;;4833:139;:::o;3809:477::-;3906:12;3924:10;:8;:10::i;:::-;:18;;;3943:6;3924:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3924:26:89;;3996:21;;;;;;;3924:26;;-1:-1:-1;3960:196:89;;3996:19;;;;;;:21;;;;;3924:26;;3996:21;;;;;;;:19;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3996:21:89;3982:35;;:10;:35;;:125;;-1:-1:-1;4037:70:89;4049:45;4061:32;4049:11;:45::i;:::-;4096:10;4037:11;:70::i;:::-;10270:3:12;3960:8:89;:196::i;:::-;4167:21;;;;:13;:21;;;;;;;;;:50;;;;;;;;;;;;;;;;;;4233:46;;;;;;;4167:21;;4233:46;;;;;;;;;3809:477;;;:::o;6753:558::-;6817:25;6844:17;6874:12;6892:10;:8;:10::i;:::-;:18;;;6911:6;6892:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6892:26:89;6928:10;6985:21;;;:13;6892:26;6985:21;6892:26;6985:21;;:33;6892:26;;-1:-1:-1;6892:26:89;;6985:33;;;;;7062:24;6892:26;6985:21;7062:11;:24::i;:::-;7029:57;;-1:-1:-1;7029:57:89;-1:-1:-1;7097:49:89;7110:3;7029:57;7134:11;7097:12;:49::i;:::-;7185:18;;7156:48;;7169:3;;7174:9;;7185:18;;7156:12;:48::i;:::-;7274:18;;7220:84;;;;;;;;;;;;;;7274:18;;;;;7220:84;;;7234:6;;7220:84;;;;;;;;;;;6753:558;;;;;;:::o;2607:430:56:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;3389:115:89:-;3453:7;3479:18;;;3389:115;:::o;1158:79:62:-;1224:6;1158:79;:::o;5019:431:89:-;2276:21:56;:19;:21::i;:::-;5141:147:89::1;2296:5;5163:29;:62;;14970:3:12;5141:8:89;:147::i;:::-;5298:30;:62:::0;;;5376:67:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;5019:431:::0;:::o;6453:253::-;6521:25;6548:17;6578:12;6596:10;:8;:10::i;:::-;:18;;;6615:6;6596:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6596:26:89;;-1:-1:-1;6596:26:89;6675:24;6596:26;6692:6;6675:11;:24::i;:::-;6668:31;;;;;;6453:253;;;:::o;1297:109:62:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:62;;-1:-1:-1;1297:109:62;:::o;4364:422:89:-;4490:38;4542:19;4575:16;4616:36;;:::i;:::-;-1:-1:-1;;;4655:21:89;;;;-1:-1:-1;4655:13:89;:21;;;;;;;;;4616:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:422::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;2524:70::-;2420:181;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:62;;1412:178;-1:-1:-1;;;1412:178:62:o;7959:884:89:-;8030:7;8039;8058:46;8107:23;8058:72;;8140:30;8173:3;:13;;;8195:22;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:49:89;8173:73;;;;;;;;;;;;;;;;;;;;;;;;;8195:49;;8173:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8173:73:89;;-1:-1:-1;8260:27:89;8256:71;;8311:1;8314;8303:13;;;;;;;;8256:71;8337:19;8359:21;;;:13;:21;;;;;:33;;;;;;;8403:434;;-1:-1:-1;8544:1:89;;-1:-1:-1;8547:22:89;-1:-1:-1;8536:34:89;;-1:-1:-1;8536:34:89;8403:434;8745:81;8761:22;8785:40;8818:6;8785:32;:40::i;:::-;8745:15;:81::i;:::-;8738:88;;;;;;;7959:884;;;;;;:::o;7553:400::-;7667:11;7663:48;;7694:7;;7663:48;7746:15;;;7759:1;7746:15;;;;;;;;;7721:22;;7746:15;;;;;;;;;;;-1:-1:-1;7746:15:89;7721:40;;7783:3;7771:6;7778:1;7771:9;;;;;;;;:15;;;;;:9;;;;;;;;;;;:15;7824:16;;;7838:1;7824:16;;;;;;;;;7797:24;;7824:16;;;;;;;;;;;;-1:-1:-1;7824:16:89;7797:43;;7863:6;7850:7;7858:1;7850:10;;;;;;;;;;;;;:19;;;;;7880:23;:45;;;7926:6;7934:7;7943:2;7880:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7553:400;;;;;;:::o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;9162:279:89:-;9242:7;9261:36;;:::i;:::-;-1:-1:-1;9300:21:89;;;;:13;:21;;;;;;;;;9261:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9339:95;;9404:30;;9339:95;;;9362:39;;9339:95;;;9332:102;9162:279;-1:-1:-1;;;9162:279:89:o;8849:307::-;8975:19;;9043:45;:22;9074:13;9043:30;:45::i;:::-;9029:59;-1:-1:-1;9110:39:89;:22;9029:59;9110:26;:39::i;:::-;9098:51;;8849:307;;;;;:::o;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1833:209:66;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:13;;;;-1:-1:-1;;;1833:209:66:o;1588:239::-;1646:7;1738:37;1752:1;1747;:6;;5194:1:12;1738:8:66;:37::i;:::-;-1:-1:-1;1797:5:66;;;1588:239::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"clearRevenueSharePercentage(bytes32)":"3b0cf663","collectFees(bytes32)":"817db73b","getActionId(bytes4)":"851c1bb3","getAmounts(bytes32)":"9d8669d3","getAuthorizer()":"aaabadc5","getDaoFundsRecipient()":"89ee2f26","getDefaultRevenueSharePercentage()":"644b3f1b","getProtocolFeesWithdrawer()":"4f4f4bc7","getRevenueShareSettings(bytes32)":"d6c9cd58","getVault()":"8d928af8","setDaoFundsRecipient(address)":"4ca760eb","setDefaultRevenueSharePercentage(uint256)":"92b2b1f6","setPoolBeneficiary(bytes32,address)":"7ab74be4","setRevenueSharePercentage(bytes32,uint256)":"1cb594fc"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"protocolFeesWithdrawer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daoFundsRecipient\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDaoFundsRecipient\",\"type\":\"address\"}],\"name\":\"DAOFundsRecipientChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"DefaultRevenueSharePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolEarned\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"daoFundsRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daoEarned\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"PoolBeneficiaryChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolRevenueShareChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"PoolRevenueShareCleared\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"clearRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daoAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDaoFundsRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRevenueSharePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesWithdrawer\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getRevenueShareSettings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentageOverride\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overrideSet\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDaoFundsRecipient\",\"type\":\"address\"}],\"name\":\"setDaoFundsRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"defaultRevenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"setPoolBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"setRevenueSharePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is responsible for splitting the BPT profits collected by the ProtocolFeeCollector between a beneficiary specified by the pool's owner and the DAO fee recipient (e.g., the Balancer DAO treasury account). Only BPT tokens are involved in the split: any other tokens would remain in the `ProtocolFeeCollector`. BPT tokens are withdrawn using the ProtocolFeesWithdrawer, a wrapper around the ProtocolFeesCollector that allows governance to prevent certain tokens (on a denyList) from being withdrawn. `collectFees` would fail if the BPT token were on this denyList.\",\"kind\":\"dev\",\"methods\":{\"clearRevenueSharePercentage(bytes32)\":{\"params\":{\"poolId\":\"- the poolId of the pool to begin using the default revenue share percentage.\"}},\"collectFees(bytes32)\":{\"details\":\"Permissionless function to collect and distribute any accrued protocol fees for the given pool.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiaryAmount\":\"- the BPT amount sent to the pool beneficiary.\",\"daoAmount\":\"- the BPT amount sent to the DAO funds recipient.\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAmounts(bytes32)\":{\"details\":\"Returns the amount of fees that would be sent to each beneficiary in a call to `collectFees`.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiaryAmount\":\"- the BPT amount that would be sent to the pool beneficiary.\",\"daoAmount\":\"- the BPT amount that would be sent to the DAO funds recipient.\"}},\"getDefaultRevenueSharePercentage()\":{\"details\":\"Returns the default revenue share percentage a pool will receive, unless overridden by a call to `setRevenueSharePercentage`.\"},\"getRevenueShareSettings(bytes32)\":{\"details\":\"Returns the current protocol fee split configuration for a given pool.\",\"params\":{\"poolId\":\"- the poolId of a pool with accrued protocol fees.\"},\"returns\":{\"beneficiary\":\"- the address of the pool beneficiary.\",\"revenueSharePercentageOverride\":\"- the percentage of the split sent to the pool beneficiary.\"}},\"setDaoFundsRecipient(address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"newDaoFundsRecipient\":\"- address of the new DAO funds recipient.\"}},\"setDefaultRevenueSharePercentage(uint256)\":{\"details\":\"Set the default revenue share percentage, applied to pools where no override has been set through `setRevenueSharePercentage`. Must be below the maximum allowed split. This is a permissioned function.\",\"params\":{\"defaultRevenueSharePercentage\":\"- new default revenue share percentage\"}},\"setPoolBeneficiary(bytes32,address)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"newBeneficiary\":\"- address of the new beneficiary.\",\"poolId\":\"- the poolId of the pool where the beneficiary will change.\"}},\"setRevenueSharePercentage(bytes32,uint256)\":{\"details\":\"This is a permissioned function.\",\"params\":{\"poolId\":\"- the poolId of the pool where the revenue share will change.\",\"revenueSharePercentage\":\"- the new revenue share percentage.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"clearRevenueSharePercentage(bytes32)\":{\"notice\":\"Ignore any previously set revenue sharing percentage, and begin using the default.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDaoFundsRecipient()\":{\"notice\":\"Returns the DAO funds recipient that will receive any balance not due to the pool beneficiary.\"},\"getProtocolFeesWithdrawer()\":{\"notice\":\"Returns the `ProtocolFeesWithdrawer`, used to withdraw funds from the `ProtocolFeesCollector`.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"setDaoFundsRecipient(address)\":{\"notice\":\"Allows a authorized user to change the DAO funds recipient.\"},\"setDefaultRevenueSharePercentage(uint256)\":{\"notice\":\"Allows an authorized user to change the default revenue share percentage.\"},\"setPoolBeneficiary(bytes32,address)\":{\"notice\":\"Allows a pool owner to change the revenue share beneficiary for a given pool.\"},\"setRevenueSharePercentage(bytes32,uint256)\":{\"notice\":\"Allows an authorized user to change the revenueShare for a given pool.\"}},\"notice\":\"Support revenue sharing for individual pools between the DAO and designated recipients.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeeSplitter.sol\":\"ProtocolFeeSplitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0x3709eb8e9b59571f6f9f73390fa8b152028e01ab5cc43867f5e075c0b825d57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cb4044b468363f2bc9eeb5a07f7690720f4608c32d12b34352ff3e3e5c9e8709\",\"dweb:/ipfs/QmQeZWec9sPYtnAKXhkYnpxrJSAT5vbk3Gp3ny4jnCSU8x\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/ProtocolFeeSplitter.sol\":{\"keccak256\":\"0x56c3d454fb8f055cda190cf6861f1d15256aa39ad22ae3ec78f4e398bf77227f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://77abd9f6c5dcb94ec0c37561feee9f8111589e921dd3ed6540e43895dd7457aa\",\"dweb:/ipfs/QmVXvvkcMTo2TjeYCgHpUVw3yw5FHUYS5bN7sdcayw4wvv\"]}},\"version\":1}"}},"contracts/ProtocolFeesWithdrawer.sol":{"ProtocolFeesWithdrawer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20[]","name":"initialDeniedTokens","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200106438038062001064833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82518660208202830111640100000000821117156200009357600080fd5b82525081516020918201928201910280838360005b83811015620000c2578181015183820152602001620000a8565b50505050919091016040818152306080526001600160601b0319606089901b1660a05263d2946c2b60e01b8252516001600160a01b038816955063d2946c2b945060048083019450602093509091829003018186803b1580156200012557600080fd5b505afa1580156200013a573d6000803e3d6000fd5b505050506040513d60208110156200015157600080fd5b505160601b6001600160601b03191660c052805160005b818110156200019f57620001968382815181106200018257fe5b6020026020010151620001a960201b60201c565b60010162000168565b50505050620002df565b620001c48160006200025560201b620007b91790919060201c565b62000216576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b604080516001600160a01b038316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b6000620002638383620002be565b620002b457508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155620002b8565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b60805160a05160601c60c05160601c610d4d62000317600039806103f952806106c152508061059752508061052a5250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea264697066735822122027717bcf66d2883d48db990f3d312b04dc131be6eff8398ddd5f8780f17579b064736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1064 CODESIZE SUB DUP1 PUSH3 0x1064 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA8 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP10 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP6 POP PUSH4 0xD2946C2B SWAP5 POP PUSH1 0x4 DUP1 DUP4 ADD SWAP5 POP PUSH1 0x20 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x13A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x19F JUMPI PUSH3 0x196 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x182 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x1A9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 ADD PUSH3 0x168 JUMP JUMPDEST POP POP POP POP PUSH3 0x2DF JUMP JUMPDEST PUSH3 0x1C4 DUP2 PUSH1 0x0 PUSH3 0x255 PUSH1 0x20 SHL PUSH3 0x7B9 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x216 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x263 DUP4 DUP4 PUSH3 0x2BE JUMP JUMPDEST PUSH3 0x2B4 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x2B8 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0xD4D PUSH3 0x317 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3F9 MSTORE DUP1 PUSH2 0x6C1 MSTORE POP DUP1 PUSH2 0x597 MSTORE POP DUP1 PUSH2 0x52A MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA264697066735822122027 PUSH18 0x7BCF66D2883D48DB990F3D312B04DC131BE6 0xEF 0xF8 CODECOPY DUP14 0xDD 0x5F DUP8 DUP1 CALL PUSH22 0x79B064736F6C63430007010033000000000000000000 ","sourceMap":"1367:3591:90:-:0;;;1639:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1639:343:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1639:343:90;;;;;;;;1054:4:62;2049:46:56;;-1:-1:-1;;;;;;1073:14:62::1;::::0;;;;::::1;::::0;-1:-1:-1;;;1768:32:90;;;-1:-1:-1;;;;;1073:14:62;::::1;::::0;-1:-1:-1;1768:30:90::1;::::0;-1:-1:-1;1768:32:90::1;::::0;;::::1;::::0;-1:-1:-1;1768:32:90::1;::::0;-1:-1:-1;1768:32:90;;;;;;;1073:14:62;1768:32:90;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1768:32:90;1743:57:::1;::::0;-1:-1:-1;;;;;;1743:57:90;::::1;::::0;1834:26;;1811:20:::1;1870:106;1894:12;1890:1;:16;1870:106;;;1927:38;1942:19;1962:1;1942:22;;;;;;;;;;;;;;1927:14;;;:38;;:::i;:::-;1908:3;;1870:106;;;;1639:343;::::0;;1367:3591;;4781:175;4846:37;4876:5;4846:17;:21;;;;;;:37;;;;:::i;:::-;4838:74;;;;;-1:-1:-1;;;4838:74:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;-1:-1:-1;;;;;4927:22:90;;;;;;;;;;;;;;;4781:175;:::o;1851:410:74:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:74;;;;;;;;-1:-1:-1;1978:23:74;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:74;-1:-1:-1;;;;;1978:23:74;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:74;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:74;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1367:3591:90:-;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":1322}],"5180":[{"length":32,"start":1431}],"13199":[{"length":32,"start":1017},{"length":32,"start":1729}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea264697066735822122027717bcf66d2883d48db990f3d312b04dc131be6eff8398ddd5f8780f17579b064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA264697066735822122027 PUSH18 0x7BCF66D2883D48DB990F3D312B04DC131BE6 0xEF 0xF8 CODECOPY DUP14 0xDD 0x5F DUP8 DUP1 CALL PUSH22 0x79B064736F6C63430007010033000000000000000000 ","sourceMap":"1367:3591:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4321:106;;;;;;;;;;;;;;;;-1:-1:-1;4321:106:90;;;;:::i;:::-;;3755:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3755:443:90;-1:-1:-1;3755:443:90;;;;:::i;2607:430:56:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:56;;;;:::i;:::-;;;;;;;;;;;;;;;;1158:79:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3260:128:90;;;:::i;2660:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2660:292:90;;-1:-1:-1;2660:292:90;-1:-1:-1;2660:292:90;:::i;:::-;;;;;;;;;;;;;;;;;;1297:109:62;;;:::i;2329:146:90:-;;;;;;;;;;;;;;;;-1:-1:-1;2329:146:90;;;;:::i;2070:138::-;;;:::i;4548:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4548:200:90;;;;:::i;3040:142::-;;;;;;;;;;;;;;;;-1:-1:-1;3040:142:90;;:::i;4321:106::-;2276:21:56;:19;:21::i;:::-;4399::90::1;4414:5;4399:14;:21::i;:::-;4321:106:::0;:::o;3755:443::-;2276:21:56;:19;:21::i;:::-;3938:28:90::1;3959:6;;3938:20;:28::i;:::-;3930:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:22;:44;;;4164:6;;4172:7;;4181:9;4119:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;4119:72:90;;;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3755:443:::0;;;;;:::o;2607:430:56:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1158:79:62:-;1224:6;1158:79;:::o;3260:128:90:-;3329:7;3355:26;:17;:24;:26::i;:::-;3348:33;;3260:128;:::o;2660:292::-;2746:4;2785:6;2746:4;2808:117;2832:12;2828:1;:16;2808:117;;;2870:30;2890:6;;2897:1;2890:9;;;;;;;;;;;;;;;2870:19;:30::i;:::-;2865:49;;2909:5;2902:12;;;;;;2865:49;2846:3;;2808:117;;;;2941:4;2934:11;;;2660:292;;;;;:::o;1297:109:62:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:26:62;;-1:-1:-1;1297:109:62;:::o;2329:146:90:-;2402:4;2426:42;2402:4;2461:5;2426:26;:42::i;:::-;2425:43;;2329:146;-1:-1:-1;;2329:146:90:o;2070:138::-;2179:22;2070:138;:::o;4548:200::-;2276:21:56;:19;:21::i;:::-;4635:40:90::1;:17;4668:5:::0;4635:24:::1;:40::i;:::-;4627:76;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4718:23;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4548:200:::0;:::o;3040:142::-;3115:6;3147:27;3115:6;3168:5;3147:20;:27::i;1851:410:74:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:74;;;;;;;;-1:-1:-1;1978:23:74;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:74;2232:12;;2420:181:56;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;4781:175:90:-;4846:37;:17;4876:5;4846:21;:37::i;:::-;4838:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;;;;;;;;;;;;;;;;;4781:175;:::o;4192:114:74:-;4281:18;;4192:114::o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;2429:1467::-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:74;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:74;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:74;;-1:-1:-1;;;3825:11:74;2669:1221;3874:5;3867:12;;;;;4648:199;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:12;4741:8:74;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:74:o;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1523:60:62;;1412:178;-1:-1:-1;;;1412:178:62:o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:74:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:74:o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","getVault()":"8d928af8","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"initialDeniedTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeesWithdrawer.sol\":\"ProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/ProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x5be2d5002c3a011f5400af4fb194d7dae569aacd978df1c7f7e44fc9947e274a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88a071fdf81242e4945c8b52883d4d2e20511c4f3829bdbbb86532fba94bd2e3\",\"dweb:/ipfs/QmPAHtgVGTkg5hR4KTG2VasEMyWpyaDQex3c4ZXBngCbRq\"]}},\"version\":1}"}},"contracts/ProtocolIdRegistry.sol":{"ProtocolIdRegistry":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"protocolId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"ProtocolIdRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"protocolId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"ProtocolIdRenamed","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"}],"name":"getProtocolName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"}],"name":"isValidProtocolId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"},{"internalType":"string","name":"name","type":"string"}],"name":"registerProtocolId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolId","type":"uint256"},{"internalType":"string","name":"newName","type":"string"}],"name":"renameProtocolId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200109e3803806200109e833981016040819052620000349162000565565b306080526001600160601b0319606082901b1660a0526040805180820190915260078152664161766520763160c81b60208201526200007690600090620003e7565b620000a860016040518060400160405280600781526020016620b0bb32903b1960c91b815250620003e760201b60201c565b620000da6002604051806040016040528060078152602001664161766520763360c81b815250620003e760201b60201c565b6200010f60036040518060400160405280600a815260200169082dae0d8caccdee4e8d60b31b815250620003e760201b60201c565b6200013f600460405180604001604052806005815260200164426565667960d81b815250620003e760201b60201c565b6040805180820190915260058082526422bab632b960d91b60208301526200016791620003e7565b6200019960066040518060400160405280600781526020016608ecac2e4c4def60cb1b815250620003e760201b60201c565b620001c860076040518060400160405280600481526020016349646c6560e01b815250620003e760201b60201c565b620001f96008604051806040016040528060068152602001654d6f7270686f60d01b815250620003e760201b60201c565b6200022b6009604051806040016040528060078152602001661498591a585b9d60ca1b815250620003e760201b60201c565b6200025c600a604051806040016040528060068152602001652932b0b832b960d11b815250620003e760201b60201c565b6200028b600b6040518060400160405280600481526020016353696c6f60e01b815250620003e760201b60201c565b620002be600c60405180604001604052806008815260200167537461726761746560c01b815250620003e760201b60201c565b620002ef600d6040518060400160405280600681526020016553747572647960d01b815250620003e760201b60201c565b62000321600e604051806040016040528060078152602001665465737365726160c81b815250620003e760201b60201c565b62000350600f604051806040016040528060048152602001635465747560e01b815250620003e760201b60201c565b620003806010604051806040016040528060058152602001642cb2b0b93760d91b815250620003e760201b60201c565b620003b06011604051806040016040528060058152602001644d6964617360d81b815250620003e760201b60201c565b620003e0601260405180604001604052806005815260200164416761766560d81b815250620003e760201b60201c565b5062000622565b620003f282620004b1565b156200041b5760405162461bcd60e51b81526004016200041290620005eb565b60405180910390fd5b60408051808201825282815260016020808301919091526000858152808252929092208151805192939192620004559284920190620004c9565b50602091909101516001909101805460ff191691151591909117905560405182907f55a433acac236e2d53f9f11a1f18341ef96abb545a8e67b6c72e705c5464d7e290620004a590849062000595565b60405180910390a25050565b60009081526020819052604090206001015460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050c57805160ff19168380011785556200053c565b828001600101855582156200053c579182015b828111156200053c5782518255916020019190600101906200051f565b506200054a9291506200054e565b5090565b5b808211156200054a57600081556001016200054f565b60006020828403121562000577578081fd5b81516001600160a01b03811681146200058e578182fd5b9392505050565b6000602080835283518082850152825b81811015620005c357858101830151858201604001528201620005a5565b81811115620005d55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601e908201527f50726f746f636f6c20494420616c726561647920726567697374657265640000604082015260600190565b60805160a05160601c610a5562000649600039806101c45250806101745250610a556000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146100d35780638d928af8146100f3578063a2de104114610108578063aaabadc5146101285761007d565b80633585c4da146100825780633cae580a146100975780637f5d9817146100c0575b600080fd5b6100956100903660046107b5565b610130565b005b6100aa6100a536600461079d565b610146565b6040516100b791906108a8565b60405180910390f35b6100956100ce3660046107b5565b61015e565b6100e66100e1366004610729565b610170565b6040516100b791906108b3565b6100fb6101c2565b6040516100b791906108e8565b61011b61011636600461079d565b6101e6565b6040516100b79190610909565b6100fb6102ed565b610138610379565b61014282826103c2565b5050565b60009081526020819052604090206001015460ff1690565b610166610379565b610142828261045b565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101a5929190610878565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6060816101f281610146565b610231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610228906109e8565b60405180910390fd5b6000838152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156102e05780601f106102b5576101008083540402835291602001916102e0565b820191906000526020600020905b8154815290600101906020018083116102c357829003601f168201915b5050505050915050919050565b60006102f76101c2565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561033c57600080fd5b505afa158015610350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103749190610769565b905090565b60006103a86000357fffffffff0000000000000000000000000000000000000000000000000000000016610170565b90506103bf6103b7823361053f565b6101916105dc565b50565b6103cb82610146565b610401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610228906109b1565b600082815260208181526040909120825161041e92840190610676565b50817f16e48aff252ad873213968111088e9dc04ca70fb770c5b5f6fdb74dfe40992158260405161044f9190610909565b60405180910390a25050565b61046482610146565b1561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289061097a565b604080518082018252828152600160208083019190915260008581528082529290922081518051929391926104d39284920190610676565b5060209190910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560405182907f55a433acac236e2d53f9f11a1f18341ef96abb545a8e67b6c72e705c5464d7e29061044f908490610909565b60006105496102ed565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610585939291906108bc565b60206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190610709565b9392505050565b81610142577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101429183916103bf917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106b757805160ff19168380011785556106e4565b828001600101855582156106e4579182015b828111156106e45782518255916020019190600101906106c9565b506106f09291506106f4565b5090565b5b808211156106f057600081556001016106f5565b60006020828403121561071a578081fd5b815180151581146105d5578182fd5b60006020828403121561073a578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105d5578182fd5b60006020828403121561077a578081fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146105d5578182fd5b6000602082840312156107ae578081fd5b5035919050565b600080604083850312156107c7578081fd5b8235915060208084013567ffffffffffffffff808211156107e6578384fd5b818601915086601f8301126107f9578384fd5b813581811115610807578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610844578687fd5b604052818152838201850189101561085a578586fd5b81858501868301378585838301015280955050505050509250929050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080835283518082850152825b8181101561093557858101830151858201604001528201610919565b818111156109465783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601e908201527f50726f746f636f6c20494420616c726561647920726567697374657265640000604082015260600190565b6020808252601a908201527f50726f746f636f6c204944206e6f742072656769737465726564000000000000604082015260600190565b60208082526018908201527f4e6f6e2d6578697374656e742070726f746f636f6c204944000000000000000060408201526060019056fea2646970667358221220a6927f7c890a99f95d90350cb06209cd973b30820c87d70b4191f8785a7c21f464736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x109E CODESIZE SUB DUP1 PUSH3 0x109E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x565 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x41617665207631 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x76 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x3E7 JUMP JUMPDEST PUSH3 0xA8 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x20B0BB32903B19 PUSH1 0xC9 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xDA PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x41617665207633 PUSH1 0xC8 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x10F PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x82DAE0D8CACCDEE4E8D PUSH1 0xB3 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x13F PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x4265656679 PUSH1 0xD8 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP1 DUP3 MSTORE PUSH5 0x22BAB632B9 PUSH1 0xD9 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x167 SWAP2 PUSH3 0x3E7 JUMP JUMPDEST PUSH3 0x199 PUSH1 0x6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x8ECAC2E4C4DEF PUSH1 0xCB SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1C8 PUSH1 0x7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x49646C65 PUSH1 0xE0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1F9 PUSH1 0x8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x4D6F7270686F PUSH1 0xD0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x22B PUSH1 0x9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x1498591A585B9D PUSH1 0xCA SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x25C PUSH1 0xA PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x2932B0B832B9 PUSH1 0xD1 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x28B PUSH1 0xB PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x53696C6F PUSH1 0xE0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2BE PUSH1 0xC PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x5374617267617465 PUSH1 0xC0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x2EF PUSH1 0xD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x537475726479 PUSH1 0xD0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x321 PUSH1 0xE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x54657373657261 PUSH1 0xC8 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x350 PUSH1 0xF PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x54657475 PUSH1 0xE0 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x380 PUSH1 0x10 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x2CB2B0B937 PUSH1 0xD9 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x3B0 PUSH1 0x11 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x4D69646173 PUSH1 0xD8 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x3E0 PUSH1 0x12 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x4167617665 PUSH1 0xD8 SHL DUP2 MSTORE POP PUSH3 0x3E7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x622 JUMP JUMPDEST PUSH3 0x3F2 DUP3 PUSH3 0x4B1 JUMP JUMPDEST ISZERO PUSH3 0x41B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x412 SWAP1 PUSH3 0x5EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE DUP1 DUP3 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP2 MLOAD DUP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH3 0x455 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH3 0x4C9 JUMP JUMPDEST POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0x55A433ACAC236E2D53F9F11A1F18341EF96ABB545A8E67B6C72E705C5464D7E2 SWAP1 PUSH3 0x4A5 SWAP1 DUP5 SWAP1 PUSH3 0x595 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x50C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x53C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x53C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x53C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x51F JUMP JUMPDEST POP PUSH3 0x54A SWAP3 SWAP2 POP PUSH3 0x54E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x54A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x54F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x577 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x58E JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x5C3 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH3 0x5A5 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x5D5 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x50726F746F636F6C20494420616C726561647920726567697374657265640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xA55 PUSH3 0x649 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1C4 MSTORE POP DUP1 PUSH2 0x174 MSTORE POP PUSH2 0xA55 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xA2DE1041 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x128 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x3585C4DA EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3CAE580A EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x7F5D9817 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x79D JUMP JUMPDEST PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x15E JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x170 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x116 CALLDATASIZE PUSH1 0x4 PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x2ED JUMP JUMPDEST PUSH2 0x138 PUSH2 0x379 JUMP JUMPDEST PUSH2 0x142 DUP3 DUP3 PUSH2 0x3C2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x379 JUMP JUMPDEST PUSH2 0x142 DUP3 DUP3 PUSH2 0x45B JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A5 SWAP3 SWAP2 SWAP1 PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1F2 DUP2 PUSH2 0x146 JUMP JUMPDEST PUSH2 0x231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F7 PUSH2 0x1C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x350 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x374 SWAP2 SWAP1 PUSH2 0x769 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x170 JUMP JUMPDEST SWAP1 POP PUSH2 0x3BF PUSH2 0x3B7 DUP3 CALLER PUSH2 0x53F JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3CB DUP3 PUSH2 0x146 JUMP JUMPDEST PUSH2 0x401 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD PUSH2 0x41E SWAP3 DUP5 ADD SWAP1 PUSH2 0x676 JUMP JUMPDEST POP DUP2 PUSH32 0x16E48AFF252AD873213968111088E9DC04CA70FB770C5B5F6FDB74DFE4099215 DUP3 PUSH1 0x40 MLOAD PUSH2 0x44F SWAP2 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x464 DUP3 PUSH2 0x146 JUMP JUMPDEST ISZERO PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x97A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE DUP1 DUP3 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP2 MLOAD DUP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH2 0x4D3 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x676 JUMP JUMPDEST POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0x55A433ACAC236E2D53F9F11A1F18341EF96ABB545A8E67B6C72E705C5464D7E2 SWAP1 PUSH2 0x44F SWAP1 DUP5 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x549 PUSH2 0x2ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x709 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x142 JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x142 SWAP2 DUP4 SWAP2 PUSH2 0x3BF SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6B7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x6E4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x6E4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x6E4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6C9 JUMP JUMPDEST POP PUSH2 0x6F0 SWAP3 SWAP2 POP PUSH2 0x6F4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x71A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP1 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x807 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x844 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x85A JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x935 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x919 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x946 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x50726F746F636F6C20494420616C726561647920726567697374657265640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x50726F746F636F6C204944206E6F742072656769737465726564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742070726F746F636F6C2049440000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 SWAP3 PUSH32 0x7C890A99F95D90350CB06209CD973B30820C87D70B4191F8785A7C21F464736F PUSH13 0x63430007010033000000000000 ","sourceMap":"927:2996:91:-:0;;;1304:1168;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1054:4:62;2049:46:56;;-1:-1:-1;;;;;;1073:14:62::1;::::0;;;;::::1;::::0;1371:50:91::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;1371:50:91::1;::::0;::::1;::::0;::::1;::::0;1030:31:62;;1371:19:91::1;:50::i;:::-;1431;2436:1:34;1431:50:91;;;;;;;;;;;;;-1:-1:-1::0;;;1431:50:91::1;;::::0;:19:::1;;;:50;;:::i;:::-;1491;2479:1:34;1491:50:91;;;;;;;;;;;;;-1:-1:-1::0;;;1491:50:91::1;;::::0;:19:::1;;;:50;;:::i;:::-;1551:56;2525:1:34;1551:56:91;;;;;;;;;;;;;-1:-1:-1::0;;;1551:56:91::1;;::::0;:19:::1;;;:56;;:::i;:::-;1617:46;2566:1:34;1617:46:91;;;;;;;;;;;;;-1:-1:-1::0;;;1617:46:91::1;;::::0;:19:::1;;;:46;;:::i;:::-;1673;::::0;;;;::::1;::::0;;;2607:1:34::1;1673:46:91::0;;;-1:-1:-1;;;1673:46:91::1;::::0;::::1;::::0;::::1;::::0;:19:::1;:46::i;:::-;1729:50;2650:1:34;1729:50:91;;;;;;;;;;;;;-1:-1:-1::0;;;1729:50:91::1;;::::0;:19:::1;;;:50;;:::i;:::-;1789:44;2690:1:34;1789:44:91;;;;;;;;;;;;;-1:-1:-1::0;;;1789:44:91::1;;::::0;:19:::1;;;:44;;:::i;:::-;1843:48;2732:1:34;1843:48:91;;;;;;;;;;;;;-1:-1:-1::0;;;1843:48:91::1;;::::0;:19:::1;;;:48;;:::i;:::-;1901:50;2775:1:34;1901:50:91;;;;;;;;;;;;;-1:-1:-1::0;;;1901:50:91::1;;::::0;:19:::1;;;:50;;:::i;:::-;1961:48;2817:2:34;1961:48:91;;;;;;;;;;;;;-1:-1:-1::0;;;1961:48:91::1;;::::0;:19:::1;;;:48;;:::i;:::-;2019:44;2858:2:34;2019:44:91;;;;;;;;;;;;;-1:-1:-1::0;;;2019:44:91::1;;::::0;:19:::1;;;:44;;:::i;:::-;2073:52;2903:2:34;2073:52:91;;;;;;;;;;;;;-1:-1:-1::0;;;2073:52:91::1;;::::0;:19:::1;;;:52;;:::i;:::-;2135:48;2946:2:34;2135:48:91;;;;;;;;;;;;;-1:-1:-1::0;;;2135:48:91::1;;::::0;:19:::1;;;:48;;:::i;:::-;2193:50;2990:2:34;2193:50:91;;;;;;;;;;;;;-1:-1:-1::0;;;2193:50:91::1;;::::0;:19:::1;;;:50;;:::i;:::-;2253:44;3031:2:34;2253:44:91;;;;;;;;;;;;;-1:-1:-1::0;;;2253:44:91::1;;::::0;:19:::1;;;:44;;:::i;:::-;2307:46;3073:2:34;2307:46:91;;;;;;;;;;;;;-1:-1:-1::0;;;2307:46:91::1;;::::0;:19:::1;;;:46;;:::i;:::-;2363;3115:2:34;2363:46:91;;;;;;;;;;;;;-1:-1:-1::0;;;2363:46:91::1;;::::0;:19:::1;;;:46;;:::i;:::-;2419;3157:2:34;2419:46:91;;;;;;;;;;;;;-1:-1:-1::0;;;2419:46:91::1;;::::0;:19:::1;;;:46;;:::i;:::-;1304:1168:::0;927:2996;;3069:308;3165:29;3183:10;3165:17;:29::i;:::-;3164:30;3156:73;;;;-1:-1:-1;;;3156:73:91;;;;;;;:::i;:::-;;;;;;;;;3269:48;;;;;;;;;;;3310:4;3269:48;;;;;;;;-1:-1:-1;3239:27:91;;;;;;;;;;:78;;;;3269:48;;3239:27;;:78;;:27;;:78;;;:::i;:::-;-1:-1:-1;3239:78:91;;;;;;;;;;;;-1:-1:-1;;3239:78:91;;;;;;;;;;3332:38;;3353:10;;3332:38;;;;3365:4;;3332:38;:::i;:::-;;;;;;;;3069:308;;:::o;2918:145::-;2995:4;3018:27;;;;;;;;;;:38;;;;;;2918:145::o;927:2996::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;927:2996:91;;;-1:-1:-1;927:2996:91;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;176:293:-1;;306:2;294:9;285:7;281:23;277:32;274:2;;;-1:-1;;312:12;274:2;98:13;;-1:-1;;;;;2483:54;;3005:50;;2995:2;;-1:-1;;3059:12;2995:2;364:89;268:201;-1:-1;;;268:201::o;1169:310::-;;1316:2;;1337:17;1330:47;621:5;1997:12;2154:6;1316:2;1305:9;1301:18;2142:19;-1:-1;2622:101;2636:6;2633:1;2630:13;2622:101;;;2703:11;;;;;2697:18;2684:11;;;2182:14;2684:11;2677:39;2651:10;;2622:101;;;2738:6;2735:1;2732:13;2729:2;;;-1:-1;2182:14;2794:6;1305:9;2785:16;;2778:27;2729:2;-1:-1;2910:7;2894:14;-1:-1;;2890:28;779:39;;;;2182:14;779:39;;1287:192;-1:-1;;;1287:192::o;1486:416::-;1686:2;1700:47;;;1055:2;1671:18;;;2142:19;1091:32;2182:14;;;1071:53;1143:12;;;1657:245::o;:::-;927:2996:91;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4355":[{"length":32,"start":372}],"5180":[{"length":32,"start":452}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063851c1bb31161005b578063851c1bb3146100d35780638d928af8146100f3578063a2de104114610108578063aaabadc5146101285761007d565b80633585c4da146100825780633cae580a146100975780637f5d9817146100c0575b600080fd5b6100956100903660046107b5565b610130565b005b6100aa6100a536600461079d565b610146565b6040516100b791906108a8565b60405180910390f35b6100956100ce3660046107b5565b61015e565b6100e66100e1366004610729565b610170565b6040516100b791906108b3565b6100fb6101c2565b6040516100b791906108e8565b61011b61011636600461079d565b6101e6565b6040516100b79190610909565b6100fb6102ed565b610138610379565b61014282826103c2565b5050565b60009081526020819052604090206001015460ff1690565b610166610379565b610142828261045b565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016101a5929190610878565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6060816101f281610146565b610231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610228906109e8565b60405180910390fd5b6000838152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156102e05780601f106102b5576101008083540402835291602001916102e0565b820191906000526020600020905b8154815290600101906020018083116102c357829003601f168201915b5050505050915050919050565b60006102f76101c2565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561033c57600080fd5b505afa158015610350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103749190610769565b905090565b60006103a86000357fffffffff0000000000000000000000000000000000000000000000000000000016610170565b90506103bf6103b7823361053f565b6101916105dc565b50565b6103cb82610146565b610401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610228906109b1565b600082815260208181526040909120825161041e92840190610676565b50817f16e48aff252ad873213968111088e9dc04ca70fb770c5b5f6fdb74dfe40992158260405161044f9190610909565b60405180910390a25050565b61046482610146565b1561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289061097a565b604080518082018252828152600160208083019190915260008581528082529290922081518051929391926104d39284920190610676565b5060209190910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560405182907f55a433acac236e2d53f9f11a1f18341ef96abb545a8e67b6c72e705c5464d7e29061044f908490610909565b60006105496102ed565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610585939291906108bc565b60206040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190610709565b9392505050565b81610142577f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101429183916103bf917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106106b757805160ff19168380011785556106e4565b828001600101855582156106e4579182015b828111156106e45782518255916020019190600101906106c9565b506106f09291506106f4565b5090565b5b808211156106f057600081556001016106f5565b60006020828403121561071a578081fd5b815180151581146105d5578182fd5b60006020828403121561073a578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105d5578182fd5b60006020828403121561077a578081fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146105d5578182fd5b6000602082840312156107ae578081fd5b5035919050565b600080604083850312156107c7578081fd5b8235915060208084013567ffffffffffffffff808211156107e6578384fd5b818601915086601f8301126107f9578384fd5b813581811115610807578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610844578687fd5b604052818152838201850189101561085a578586fd5b81858501868301378585838301015280955050505050509250929050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080835283518082850152825b8181101561093557858101830151858201604001528201610919565b818111156109465783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601e908201527f50726f746f636f6c20494420616c726561647920726567697374657265640000604082015260600190565b6020808252601a908201527f50726f746f636f6c204944206e6f742072656769737465726564000000000000604082015260600190565b60208082526018908201527f4e6f6e2d6578697374656e742070726f746f636f6c204944000000000000000060408201526060019056fea2646970667358221220a6927f7c890a99f95d90350cb06209cd973b30820c87d70b4191f8785a7c21f464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xA2DE1041 EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x128 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x3585C4DA EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x3CAE580A EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x7F5D9817 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x130 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x79D JUMP JUMPDEST PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0x15E JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x170 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x8E8 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x116 CALLDATASIZE PUSH1 0x4 PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x2ED JUMP JUMPDEST PUSH2 0x138 PUSH2 0x379 JUMP JUMPDEST PUSH2 0x142 DUP3 DUP3 PUSH2 0x3C2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x379 JUMP JUMPDEST PUSH2 0x142 DUP3 DUP3 PUSH2 0x45B JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1A5 SWAP3 SWAP2 SWAP1 PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1F2 DUP2 PUSH2 0x146 JUMP JUMPDEST PUSH2 0x231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x9E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F7 PUSH2 0x1C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x350 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x374 SWAP2 SWAP1 PUSH2 0x769 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x170 JUMP JUMPDEST SWAP1 POP PUSH2 0x3BF PUSH2 0x3B7 DUP3 CALLER PUSH2 0x53F JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3CB DUP3 PUSH2 0x146 JUMP JUMPDEST PUSH2 0x401 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD PUSH2 0x41E SWAP3 DUP5 ADD SWAP1 PUSH2 0x676 JUMP JUMPDEST POP DUP2 PUSH32 0x16E48AFF252AD873213968111088E9DC04CA70FB770C5B5F6FDB74DFE4099215 DUP3 PUSH1 0x40 MLOAD PUSH2 0x44F SWAP2 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x464 DUP3 PUSH2 0x146 JUMP JUMPDEST ISZERO PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228 SWAP1 PUSH2 0x97A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP6 DUP2 MSTORE DUP1 DUP3 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP2 MLOAD DUP1 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH2 0x4D3 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x676 JUMP JUMPDEST POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH32 0x55A433ACAC236E2D53F9F11A1F18341EF96ABB545A8E67B6C72E705C5464D7E2 SWAP1 PUSH2 0x44F SWAP1 DUP5 SWAP1 PUSH2 0x909 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x549 PUSH2 0x2ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x585 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x709 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x142 JUMPI PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x142 SWAP2 DUP4 SWAP2 PUSH2 0x3BF SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x6B7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x6E4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x6E4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x6E4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x6C9 JUMP JUMPDEST POP PUSH2 0x6F0 SWAP3 SWAP2 POP PUSH2 0x6F4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x71A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5D5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP1 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x807 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x844 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x85A JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x935 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x919 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x946 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x50726F746F636F6C20494420616C726561647920726567697374657265640000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x50726F746F636F6C204944206E6F742072656769737465726564000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742070726F746F636F6C2049440000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA6 SWAP3 PUSH32 0x7C890A99F95D90350CB06209CD973B30820C87D70B4191F8785A7C21F464736F PUSH13 0x63430007010033000000000000 ","sourceMap":"927:2996:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2717:155;;;;;;:::i;:::-;;:::i;:::-;;2918:145;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2518:153;;;;;;:::i;:::-;;:::i;2607:430:56:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:62:-;;;:::i;:::-;;;;;;;:::i;3697:224:91:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1297:109:62:-;;;:::i;2717:155:91:-;2276:21:56;:19;:21::i;:::-;2827:38:91::1;2845:10;2857:7;2827:17;:38::i;:::-;2717:155:::0;;:::o;2918:145::-;2995:4;3018:27;;;;;;;;;;:38;;;;;;2918:145::o;2518:153::-;2276:21:56;:19;:21::i;:::-;2627:37:91::1;2647:10;2659:4;2627:19;:37::i;2607:430:56:-:0;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:62:-;1224:6;1158:79;:::o;3697:224:91:-;3846:13;3817:10;1222:29;1240:10;1222:17;:29::i;:::-;1214:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3882:15:::1;:27:::0;;;::::1;::::0;;;;;;;;3875:39;;;;::::1;;::::0;::::1;;::::0;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;3882:27;;3875:39;::::1;3882:27:::0;3875:39;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:224:::0;;;;:::o;1297:109:62:-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1366:33;;1297:109;:::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;:::-;2420:181;:::o;3383:268:91:-;3479:29;3497:10;3479:17;:29::i;:::-;3471:68;;;;;;;;;;;;:::i;:::-;3549:15;:27;;;;;;;;;;;:42;;;;;;;;:::i;:::-;;3624:10;3606:38;3636:7;3606:38;;;;;;:::i;:::-;;;;;;;;3383:268;;:::o;3069:308::-;3165:29;3183:10;3165:17;:29::i;:::-;3164:30;3156:73;;;;;;;;;;;;:::i;:::-;3269:48;;;;;;;;;;;3310:4;3269:48;;;;;;;;-1:-1:-1;3239:27:91;;;;;;;;;;:78;;;;3269:48;;3239:27;;:78;;:27;;:78;;;:::i;:::-;-1:-1:-1;3239:78:91;;;;;;;;;;;;;;;;;;;;;;;3332:38;;3353:10;;3332:38;;;;3365:4;;3332:38;:::i;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1516:67;1412:178;-1:-1:-1;;;1412:178:62:o;926:101:12:-;995:9;990:34;;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1006:18;;2926;;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1044:257;;1156:2;1144:9;1135:7;1131:23;1127:32;1124:2;;;-1:-1;;1162:12;1124:2;86:6;80:13;11365:5;9415:13;9408:21;11343:5;11340:32;11330:2;;-1:-1;;11376:12;1308:239;;1411:2;1399:9;1390:7;1386:23;1382:32;1379:2;;;-1:-1;;1417:12;1379:2;219:6;206:20;9592:66;11487:5;9581:78;11463:5;11460:34;11450:2;;-1:-1;;11498:12;1554:303;;1689:2;1677:9;1668:7;1664:23;1660:32;1657:2;;;-1:-1;;1695:12;1657:2;379:6;373:13;9862:42;11651:5;9851:54;11606:5;11603:55;11593:2;;-1:-1;;11662:12;1864:241;;1968:2;1956:9;1947:7;1943:23;1939:32;1936:2;;;-1:-1;;1974:12;1936:2;-1:-1;974:20;;1930:175;-1:-1;1930:175::o;2112:472::-;;;2243:2;2231:9;2222:7;2218:23;2214:32;2211:2;;;-1:-1;;2249:12;2211:2;2332:22;974:20;2301:63;;2429:2;;2418:9;2414:18;2401:32;2453:18;;2445:6;2442:30;2439:2;;;-1:-1;;2475:12;2439:2;2551:6;2540:9;2536:22;;;559:3;552:4;544:6;540:17;536:27;526:2;;-1:-1;;567:12;526:2;614:6;601:20;2453:18;8757:6;8754:30;8751:2;;;-1:-1;;8787:12;8751:2;2243;8414:9;2429:2;8860:9;552:4;8845:6;8841:17;8837:33;8450:6;8446:17;;8557:6;8545:10;8542:22;2453:18;8509:10;8506:34;8503:62;8500:2;;;-1:-1;;8568:12;8500:2;2243;8587:22;707:21;;;807:16;;;;;804:25;-1:-1;801:2;;;-1:-1;;832:12;801:2;10669:6;2429:2;749:6;745:17;2429:2;783:5;779:16;10646:30;-1:-1;2429:2;10716:6;783:5;10707:16;;10700:27;2495:73;;;;;;;;2205:379;;;;;:::o;4953:387::-;2893:37;;;9592:66;9581:78;5204:2;5195:12;;3188:56;5304:11;;;5095:245::o;5347:210::-;9415:13;;9408:21;2776:34;;5468:2;5453:18;;5439:118::o;5564:222::-;2893:37;;;5691:2;5676:18;;5662:124::o;5793:444::-;2893:37;;;9862:42;9851:54;;;6140:2;6125:18;;2662:37;9851:54;6223:2;6208:18;;2662:37;5976:2;5961:18;;5947:290::o;6244:262::-;9862:42;9851:54;;;;3347:70;;6391:2;6376:18;;6362:144::o;6772:310::-;;6919:2;;6940:17;6933:47;3737:5;9038:12;9195:6;6919:2;6908:9;6904:18;9183:19;-1:-1;10814:101;10828:6;10825:1;10822:13;10814:101;;;10895:11;;;;;10889:18;10876:11;;;9223:14;10876:11;10869:39;10843:10;;10814:101;;;10930:6;10927:1;10924:13;10921:2;;;-1:-1;9223:14;10986:6;6908:9;10977:16;;10970:27;10921:2;-1:-1;11267:2;11247:14;11263:7;11243:28;3895:39;;;;9223:14;3895:39;;6890:192;-1:-1;;;6890:192::o;7089:416::-;7289:2;7303:47;;;4171:2;7274:18;;;9183:19;4207:32;9223:14;;;4187:53;4259:12;;;7260:245::o;7512:416::-;7712:2;7726:47;;;4510:2;7697:18;;;9183:19;4546:28;9223:14;;;4526:49;4594:12;;;7683:245::o;7935:416::-;8135:2;8149:47;;;4845:2;8120:18;;;9183:19;4881:26;9223:14;;;4861:47;4927:12;;;8106:245::o"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getProtocolName(uint256)":"a2de1041","getVault()":"8d928af8","isValidProtocolId(uint256)":"3cae580a","registerProtocolId(uint256,string)":"7f5d9817","renameProtocolId(uint256,string)":"3585c4da"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ProtocolIdRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ProtocolIdRenamed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"}],\"name\":\"getProtocolName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"}],\"name\":\"isValidProtocolId\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"registerProtocolId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"renameProtocolId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getProtocolName(uint256)\":{\"details\":\"Returns the name associated with a given `protocolId`.\"},\"isValidProtocolId(uint256)\":{\"details\":\"Returns true if `protocolId` has been registered and can be queried.\"},\"registerProtocolId(uint256,string)\":{\"details\":\"Registers an ID (and name) to differentiate among protocols. Protocol IDs cannot be deregistered.\"},\"renameProtocolId(uint256,string)\":{\"details\":\"Changes the name of an existing protocol ID. Should only be used to update in the case of mistakes.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolIdRegistry.sol\":\"ProtocolIdRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolIdRegistry.sol\":{\"keccak256\":\"0xb04a381e1c964f3d892e0afccea034d99495062e933b6fd4e401b7f040125aeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9ce21bcee0600519580f2beeff712c07c204ca2f8eb992c209bd32130da4c741\",\"dweb:/ipfs/QmNb8ASLr65VqJUMXVHFraWNNJvV1Rf4tbpXVCeiouCGAE\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"contracts/ProtocolIdRegistry.sol\":{\"keccak256\":\"0x29c9b2c666451d14c9d84d71f9c0cd754f585341aae4d9bb5d78a610e242fa96\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4a617c7d9a7c40a648ee141c8757457febed9f7ee8340308f148412c1e2ac2df\",\"dweb:/ipfs/QmWD8MrDbHyLnxZoaiQ2nTuJC3osSt7d5f76qwCQovkJTD\"]}},\"version\":1}"}},"contracts/relayer/AaveWrapping.sol":{"AaveWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"AaveWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/AaveWrapping.sol\":\"AaveWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/BalancerRelayer.sol":{"BalancerRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address","name":"libraryAddress","type":"address"},{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9F6 CODESIZE SUB DUP1 PUSH2 0x9F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH2 0x39 DUP2 PUSH2 0x5D JUMP JUMPDEST POP POP PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x203 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x70 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x74 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC7 JUMP JUMPDEST POP PUSH2 0xEE SWAP3 SWAP2 POP PUSH2 0xF2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x126 DUP2 PUSH2 0x1EB JUMP JUMPDEST DUP1 SWAP4 POP POP PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH2 0x139 DUP2 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x155 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x168 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x176 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x1AF JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x1DC JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7C1 PUSH2 0x235 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x2F0 MSTORE POP DUP1 PUSH1 0x63 MSTORE DUP1 PUSH2 0x201 MSTORE POP PUSH2 0x7C1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"2467:1910:93:-:0;;;2931:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3042:7;994:20:65;3042:7:93;994:11:65;:20::i;:::-;-1:-1:-1;;2070:1:75;2175:22;;-1:-1:-1;;3061:14:93;;;;;::::1;::::0;3085:25;;;::::1;::::0;2467:1910;;1224:94:65;1290:21;;;;:8;;:21;;;;;:::i;:::-;;1224:94;:::o;2467:1910:93:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2467:1910:93;;;-1:-1:-1;2467:1910:93;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;770:664:-1;;;;944:2;932:9;923:7;919:23;915:32;912:2;;;-1:-1;;950:12;912:2;245:6;239:13;257:48;299:5;257:48;:::i;:::-;1002:89;;;;1128:2;;1182:9;1178:22;83:13;101:33;128:5;101:33;:::i;:::-;1268:2;1253:18;;1247:25;1136:74;;-1:-1;;1281:30;;;1278:2;;;-1:-1;;1314:12;1278:2;1401:6;1390:9;1386:22;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;479:6;473:13;1292:18;1840:6;1837:30;1834:2;;;-1:-1;;1870:12;1834:2;1268;1497:9;-1:-1;1943:9;1924:17;;1920:33;1529:17;;;;1625:22;;;1589:34;;;1586:62;1583:2;;;-1:-1;;1651:12;1583:2;1268;1670:22;572:21;;;672:16;;;;;669:25;-1:-1;666:2;;;-1:-1;;697:12;666:2;-1:-1;2429:10;;2445:101;2459:6;2456:1;2453:13;2445:101;;;2526:11;;;;;2520:18;2507:11;;;;;2500:39;2474:10;;;;2445:101;;;2561:6;2558:1;2555:13;2552:2;;;-1:-1;1128:2;2617:6;648:5;2608:16;;2601:27;2552:2;1334:84;;;;;;;;906:528;;;;;:::o;2649:117::-;-1:-1;2306:54;;2708:35;;2698:2;;2757:1;;2747:12;2698:2;2692:74;:::o;:::-;2467:1910:93;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"13908":[{"length":32,"start":99},{"length":32,"start":513}],"13910":[{"length":32,"start":477},{"length":32,"start":752}]},"linkReferences":{},"object":"6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"2467:1910:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3603:60;3612:10;:29;3634:6;3612:29;;14001:3:12;3603:8:93;:60::i;:::-;2467:1910;;;;;1027:98:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3772:95:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3676:90::-;;;;;;;;;;;;;:::i;3873:315::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1027:98:65:-;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:13;;1103:15;;1110:8;;1103:15;;1110:8;1103:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1027:98;:::o;3772:95:93:-;3852:8;3772:95;:::o;3676:90::-;3753:6;3676:90;:::o;3873:315::-;3963:22;2613:20:75;:18;:20::i;:::-;4019:4:93;4007:24:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3997:34;;4046:9;4041:118;4061:15:::0;;::::1;4041:118;;;4110:38;4140:4;;4145:1;4140:7;;;;;;;;;;;;;;;;;;:::i;:::-;4110:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;4110:29:93::1;:8;:29;::::0;:38;-1:-1:-1;;4110:29:93::1;:38::i;:::-;4097:7;4105:1;4097:10;;;;;;;;;::::0;;::::1;::::0;;;;;:51;4078:3:::1;;4041:118;;;;4169:12;:10;:12::i;:::-;2654:19:75::0;:17;:19::i;:::-;3873:315:93;;;;:::o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;2686:271:75:-;2809:48;2113:1;2818:7;;:19;;10214:3:12;2809:8:75;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;4539:294:69:-;4622:12;4706;4720:23;4747:6;:19;;4767:4;4747:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4705:67;;;;4789:37;4806:7;4815:10;4789:16;:37::i;:::-;4782:44;4539:294;-1:-1:-1;;;;;4539:294:69:o;4194:181:93:-;4257:21;4292:16;;4288:81;;4324:34;:10;4345:12;4324:20;:34::i;2963:208:75:-;2070:1;3142:22;;2963:208::o;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;5057:714:69;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:69;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:12;5703:7:69;:37::i;2421:369::-;2502:78;2536:6;2511:21;:31;;11425:3:12;2502:8:69;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:12;2732:8:69;:51::i;:::-;2421:369;;;:::o;392:419:-1:-;;;542:2;530:9;521:7;517:23;513:32;510:2;;;-1:-1;;548:12;510:2;606:17;593:31;644:18;;636:6;633:30;630:2;;;-1:-1;;666:12;630:2;778:6;767:9;763:22;;;162:3;155:4;147:6;143:17;139:27;129:2;;-1:-1;;170:12;129:2;213:6;200:20;644:18;232:6;229:30;226:2;;;-1:-1;;262:12;226:2;357:3;542:2;;341:6;337:17;298:6;323:32;;320:41;317:2;;;-1:-1;;364:12;317:2;542;294:17;;;;;686:109;;-1:-1;504:307;;-1:-1;;;;504:307::o;2091:323::-;;2223:5;6280:12;6842:6;6837:3;6830:19;2306:52;2351:6;6879:4;6874:3;6870:14;6879:4;2332:5;2328:16;2306:52;:::i;:::-;8263:2;8243:14;8259:7;8239:28;2370:39;;;;6879:4;2370:39;;2171:243;-1:-1;;2171:243::o;3606:271::-;;2581:5;6280:12;2692:52;2737:6;2732:3;2725:4;2718:5;2714:16;2692:52;:::i;:::-;2756:16;;;;;3740:137;-1:-1;;3740:137::o;3884:379::-;4248:10;4072:191::o;4270:222::-;7555:42;7544:54;;;;1087:37;;4397:2;4382:18;;4368:124::o;4499:406::-;;4694:2;;4683:9;4679:18;4694:2;4715:17;4708:47;4769:126;1383:5;6280:12;6842:6;6837:3;6830:19;6870:14;4683:9;6870:14;1395:102;;6870:14;4694:2;1554:6;1550:17;4683:9;1541:27;;1529:39;;4694:2;1648:5;6125:14;-1:-1;1687:357;1712:6;1709:1;1706:13;1687:357;;;1764:20;4683:9;1768:4;1764:20;;1759:3;1752:33;938:64;998:3;1819:6;1813:13;938:64;:::i;:::-;1833:90;-1:-1;2023:14;;;;6676;;;;1734:1;1727:9;1687:357;;;-1:-1;4761:134;;4665:240;-1:-1;;;;;;;4665:240::o;5171:310::-;;5318:2;5339:17;5332:47;5393:78;5318:2;5307:9;5303:18;5457:6;5393:78;:::i;:::-;5385:86;5289:192;-1:-1;;;5289:192::o;5488:506::-;;;5623:11;5610:25;5674:48;5698:8;5682:14;5678:29;5674:48;5654:18;5650:73;5640:2;;-1:-1;;5727:12;5640:2;5754:33;;5808:18;;;-1:-1;5846:18;5835:30;;5832:2;;;-1:-1;;5868:12;5832:2;5713:4;5896:13;;-1:-1;5682:14;5928:38;;;5918:49;;5915:2;;;5980:1;;5970:12;5915:2;5578:416;;;;;:::o;7899:268::-;7964:1;7971:101;7985:6;7982:1;7979:13;7971:101;;;8052:11;;;8046:18;8033:11;;;8026:39;8007:2;8000:10;7971:101;;;8087:6;8084:1;8081:13;8078:2;;;7964:1;8143:6;8138:3;8134:16;8127:27;8078:2;;7948:219;;;:::o"},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"libraryAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - This contract, which acts as a single point of entry into the system through a multicall function. - A library contract, which defines the allowed behaviour of the relayer. The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions. We can then run combinations of the library contract's functions in the context of the relayer entrypoint, without having to expose all these functions on the entrypoint contract itself. The multicall function is then a single point of entry for all actions, so we can easily prevent reentrancy. This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter the relayer through another function (which must allow reentrancy for multicall logic), and that would potentially allow them to manipulate global state, resulting in loss of funds in some cases: e.g., sweeping any leftover ETH that should have been refunded to the user. NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly into the library contract.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\"},\"version()\":{\"details\":\"Returns a JSON representation of the contract version containing name, version number and task ID.\"}},\"title\":\"Balancer Relayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BalancerRelayer.sol\":\"BalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0x90f015009b9eb5ef856d5bbdebcaf90ab53c0e4ddb26a289f81156fef607c5ac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://793d728e420243ea1940e517b18bdc8043b0aaa778af63fe334bce4c2cd815ba\",\"dweb:/ipfs/Qmdb1PqtyT6UnKDUCphasSmAj4nXn6YVwmUzuSveAgQzNn\"]}},\"version\":1}"}},"contracts/relayer/BaseRelayerLibrary.sol":{"BaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b50604051620017f3380380620017f3833981016040819052620000599162000150565b816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ce91906200020a565b6001600160601b0319606091821b81166080529083901b1660a052604051829030908390620000fd9062000142565b6200010b9392919062000230565b604051809103906000f08015801562000128573d6000803e3d6000fd5b5060601b6001600160601b03191660c05250620002cb9050565b6109f68062000dfd83390190565b6000806040838503121562000163578182fd5b82516200017081620002b2565b60208401519092506001600160401b03808211156200018d578283fd5b818501915085601f830112620001a1578283fd5b815181811115620001b0578384fd5b604051601f8201601f191681016020018381118282101715620001d1578586fd5b604052818152838201602001881015620001e9578485fd5b620001fc8260208301602087016200027f565b809450505050509250929050565b6000602082840312156200021c578081fd5b81516200022981620002b2565b9392505050565b600060018060a01b038086168352808516602084015250606060408301528251806060840152620002698160808501602087016200027f565b601f01601f191691909101608001949350505050565b60005b838110156200029c57818101518382015260200162000282565b83811115620002ac576000848401525b50505050565b6001600160a01b0381168114620002c857600080fd5b50565b60805160601c60a05160601c60c05160601c60e051610af462000309600039806106cc52508060e95250806102625280610292525050610af46000f3fe60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100c75761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b506100746100e7565b6040516100819190610a2d565b60405180910390f35b61009d610098366004610812565b61010b565b005b3480156100ab57600080fd5b50610074610290565b61009d6100c23660046108bb565b6102b4565b6100da6100d53660046108e6565b6102fb565b6040516100819190610a85565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff841630148061012d575082155b61016c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016390610a4e565b60405180910390fd5b606063fa6e671d60e01b33868660405160240161018b93929190610986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161021892869186910161095b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905061028873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168261030d565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102bd81610394565b156102ce576102cb816103db565b90505b6102f76102d9610290565b73ffffffffffffffffffffffffffffffffffffffff84169083610406565b5050565b600061030682610582565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff1684604051610338919061094f565b6000604051808303816000865af19150503d8060008114610375576040519150601f19603f3d011682016040523d82523d6000602084013e61037a565b606091505b50915091506103898282610599565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006103e984610582565b915091506103f6846105c3565b1561030657600082559392505050565b80158015906104b757506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061046490309086906004016109b7565b60206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b491906108fe565b15155b1561055e5761055e8363095ea7b360e01b8460006040516024016104dc9291906109de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261060a565b61057d8363095ea7b360e01b84846040516024016104dc929190610a07565b505050565b60008061058e836106bd565b915081549050915091565b606082156105a857508061038e565b8151156105b85781518083602001fd5b61038e6101ae610739565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610633919061094f565b6000604051808303816000865af19150503d8060008114610670576040519150601f19603f3d011682016040523d82523d6000602084013e610675565b606091505b5091509150600082141561068d573d6000803e3d6000fd5b6106b78151600014806106af5750818060200190518101906106af919061089f565b6101a2610766565b50505050565b600060016106ca83610774565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016106fc929190610978565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b610763817f42414c0000000000000000000000000000000000000000000000000000000000610797565b50565b816102f7576102f781610739565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610827578384fd5b843561083281610a8e565b9350602085013561084281610ab0565b9250604085013567ffffffffffffffff8082111561085e578384fd5b818701915087601f830112610871578384fd5b81358181111561087f578485fd5b886020828501011115610890578485fd5b95989497505060200194505050565b6000602082840312156108b0578081fd5b815161030681610ab0565b600080604083850312156108cd578182fd5b82356108d881610a8e565b946020939093013593505050565b6000602082840312156108f7578081fd5b5035919050565b60006020828403121561090f578081fd5b5051919050565b60008151815b81811015610936576020818501810151868301520161091c565b818111156109445782828601525b509290920192915050565b60006103068284610916565b60006109678286610916565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076357600080fd5b801515811461076357600080fdfea26469706673582212205d93e420af47933d0986d13a30ae3b4ee8749cc912fdaa253f9e31ab83fb435264736f6c6343000701003360c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17F3 CODESIZE SUB DUP1 PUSH3 0x17F3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x150 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCE SWAP2 SWAP1 PUSH3 0x20A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 ADDRESS SWAP1 DUP4 SWAP1 PUSH3 0xFD SWAP1 PUSH3 0x142 JUMP JUMPDEST PUSH3 0x10B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x230 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x128 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH3 0x2CB SWAP1 POP JUMP JUMPDEST PUSH2 0x9F6 DUP1 PUSH3 0xDFD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x163 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x170 DUP2 PUSH3 0x2B2 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x18D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1A1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1B0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x1D1 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH3 0x1E9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH3 0x1FC DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x27F JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x21C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x229 DUP2 PUSH3 0x2B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP4 MSTORE DUP1 DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x269 DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x27F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x29C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x282 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x2AC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0xAF4 PUSH3 0x309 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6CC MSTORE POP DUP1 PUSH1 0xE9 MSTORE POP DUP1 PUSH2 0x262 MSTORE DUP1 PUSH2 0x292 MSTORE POP POP PUSH2 0xAF4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xC7 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x812 JUMP JUMPDEST PUSH2 0x10B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x9D PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH2 0xDA PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA85 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x12D JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x16C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x163 SWAP1 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x18B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x986 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x218 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x95B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x288 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x30D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2BD DUP2 PUSH2 0x394 JUMP JUMPDEST ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2CB DUP2 PUSH2 0x3DB JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2F7 PUSH2 0x2D9 PUSH2 0x290 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x406 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306 DUP3 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x338 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x375 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x389 DUP3 DUP3 PUSH2 0x599 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E9 DUP5 PUSH2 0x582 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3F6 DUP5 PUSH2 0x5C3 JUMP JUMPDEST ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4B7 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x464 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x8FE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x55E JUMPI PUSH2 0x55E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DC SWAP3 SWAP2 SWAP1 PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x60A JUMP JUMPDEST PUSH2 0x57D DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DC SWAP3 SWAP2 SWAP1 PUSH2 0xA07 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58E DUP4 PUSH2 0x6BD JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5A8 JUMPI POP DUP1 PUSH2 0x38E JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5B8 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x38E PUSH2 0x1AE PUSH2 0x739 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x670 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x675 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x68D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6B7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x6AF JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6AF SWAP2 SWAP1 PUSH2 0x89F JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x766 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x6CA DUP4 PUSH2 0x774 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6FC SWAP3 SWAP2 SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x763 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x797 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x2F7 JUMPI PUSH2 0x2F7 DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x827 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x832 DUP2 PUSH2 0xA8E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x842 DUP2 PUSH2 0xAB0 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x85E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x871 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x87F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x890 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8B0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x306 DUP2 PUSH2 0xAB0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8CD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8D8 DUP2 PUSH2 0xA8E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x90F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x91C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x944 JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306 DUP3 DUP5 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x967 DUP3 DUP7 PUSH2 0x916 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D SWAP4 0xE4 KECCAK256 0xAF SELFBALANCE SWAP4 RETURNDATASIZE MULMOD DUP7 0xD1 GASPRICE ADDRESS 0xAE EXTCODESIZE 0x4E 0xE8 PUSH21 0x9CC912FDAA253F9E31AB83FB435264736F6C634300 SMOD ADD STOP CALLER PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9F6 CODESIZE SUB DUP1 PUSH2 0x9F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH2 0x39 DUP2 PUSH2 0x5D JUMP JUMPDEST POP POP PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x203 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x70 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x74 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC7 JUMP JUMPDEST POP PUSH2 0xEE SWAP3 SWAP2 POP PUSH2 0xF2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x126 DUP2 PUSH2 0x1EB JUMP JUMPDEST DUP1 SWAP4 POP POP PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH2 0x139 DUP2 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x155 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x168 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x176 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x1AF JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x1DC JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7C1 PUSH2 0x235 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x2F0 MSTORE POP DUP1 PUSH1 0x63 MSTORE DUP1 PUSH2 0x201 MSTORE POP PUSH2 0x7C1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"2122:7250:94:-:0;;;8361:42;8312:91;;2333:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2402:5;-1:-1:-1;;;;;2402:10:94;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:81;;;;;;;;2426:14:94;;;;;::::1;::::0;2464:50:::1;::::0;2435:5;;2499:4:::1;::::0;2506:7;;2464:50:::1;::::0;::::1;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2450:64:94::1;::::0;-1:-1:-1;;;;;;2450:64:94;::::1;::::0;-1:-1:-1;2122:7250:94;;-1:-1:-1;2122:7250:94;;;;;;;;;:::o;798:528:-1:-;;;955:2;943:9;934:7;930:23;926:32;923:2;;;-1:-1;;961:12;923:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;1160:2;1145:18;;1139:25;1013:89;;-1:-1;;;;;;1173:30;;;1170:2;;;-1:-1;;1206:12;1170:2;1293:6;1282:9;1278:22;;;459:3;452:4;444:6;440:17;436:27;426:2;;-1:-1;;467:12;426:2;507:6;501:13;1184:18;3236:6;3233:30;3230:2;;;-1:-1;;3266:12;3230:2;955;2893:9;3339;3320:17;;-1:-1;;3316:33;2925:17;;1160:2;2925:17;2985:34;;;3021:22;;;2982:62;2979:2;;;-1:-1;;3047:12;2979:2;955;3066:22;600:21;;;700:16;;;1160:2;700:16;697:25;-1:-1;694:2;;;-1:-1;;725:12;694:2;745:39;777:6;1160:2;676:5;672:16;1160:2;642:6;638:17;745:39;:::i;:::-;1226:84;;;;;;;917:409;;;;;:::o;1333:291::-;;1462:2;1450:9;1441:7;1437:23;1433:32;1430:2;;;-1:-1;;1468:12;1430:2;274:6;268:13;286:47;327:5;286:47;:::i;:::-;1520:88;1424:200;-1:-1;;;1424:200::o;2268:562::-;;1184:18;;4126:42;;;;3810:5;4115:54;1844:3;1837:65;4126:42;3810:5;4115:54;2665:2;2654:9;2650:18;1702:37;;2486:2;2702;2691:9;2687:18;2680:48;2059:5;3517:12;3674:6;2486:2;2475:9;2471:18;3662:19;2153:52;2198:6;3702:14;2475:9;3702:14;2665:2;2179:5;2175:16;2153:52;:::i;:::-;3339:9;4814:14;-1:-1;;4810:28;2217:39;;;;3702:14;2217:39;;2457:373;-1:-1;;;;2457:373::o;4470:268::-;4535:1;4542:101;4556:6;4553:1;4550:13;4542:101;;;4623:11;;;4617:18;4604:11;;;4597:39;4578:2;4571:10;4542:101;;;4658:6;4655:1;4652:13;4649:2;;;4535:1;4714:6;4709:3;4705:16;4698:27;4649:2;;4519:219;;;:::o;4851:147::-;-1:-1;;;;;4115:54;;4925:50;;4915:2;;4989:1;;4979:12;4915:2;4909:89;:::o;:::-;2122:7250:94;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14060":[{"length":32,"start":610},{"length":32,"start":658}],"14062":[{"length":32,"start":233}],"14433":[{"length":32,"start":1740}]},"linkReferences":{},"object":"60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100c75761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b506100746100e7565b6040516100819190610a2d565b60405180910390f35b61009d610098366004610812565b61010b565b005b3480156100ab57600080fd5b50610074610290565b61009d6100c23660046108bb565b6102b4565b6100da6100d53660046108e6565b6102fb565b6040516100819190610a85565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff841630148061012d575082155b61016c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016390610a4e565b60405180910390fd5b606063fa6e671d60e01b33868660405160240161018b93929190610986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161021892869186910161095b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905061028873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168261030d565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102bd81610394565b156102ce576102cb816103db565b90505b6102f76102d9610290565b73ffffffffffffffffffffffffffffffffffffffff84169083610406565b5050565b600061030682610582565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff1684604051610338919061094f565b6000604051808303816000865af19150503d8060008114610375576040519150601f19603f3d011682016040523d82523d6000602084013e61037a565b606091505b50915091506103898282610599565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006103e984610582565b915091506103f6846105c3565b1561030657600082559392505050565b80158015906104b757506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061046490309086906004016109b7565b60206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b491906108fe565b15155b1561055e5761055e8363095ea7b360e01b8460006040516024016104dc9291906109de565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261060a565b61057d8363095ea7b360e01b84846040516024016104dc929190610a07565b505050565b60008061058e836106bd565b915081549050915091565b606082156105a857508061038e565b8151156105b85781518083602001fd5b61038e6101ae610739565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610633919061094f565b6000604051808303816000865af19150503d8060008114610670576040519150601f19603f3d011682016040523d82523d6000602084013e610675565b606091505b5091509150600082141561068d573d6000803e3d6000fd5b6106b78151600014806106af5750818060200190518101906106af919061089f565b6101a2610766565b50505050565b600060016106ca83610774565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016106fc929190610978565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b610763817f42414c0000000000000000000000000000000000000000000000000000000000610797565b50565b816102f7576102f781610739565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610827578384fd5b843561083281610a8e565b9350602085013561084281610ab0565b9250604085013567ffffffffffffffff8082111561085e578384fd5b818701915087601f830112610871578384fd5b81358181111561087f578485fd5b886020828501011115610890578485fd5b95989497505060200194505050565b6000602082840312156108b0578081fd5b815161030681610ab0565b600080604083850312156108cd578182fd5b82356108d881610a8e565b946020939093013593505050565b6000602082840312156108f7578081fd5b5035919050565b60006020828403121561090f578081fd5b5051919050565b60008151815b81811015610936576020818501810151868301520161091c565b818111156109445782828601525b509290920192915050565b60006103068284610916565b60006109678286610916565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076357600080fd5b801515811461076357600080fdfea26469706673582212205d93e420af47933d0986d13a30ae3b4ee8749cc912fdaa253f9e31ab83fb435264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xC7 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0xE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x812 JUMP JUMPDEST PUSH2 0x10B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x290 JUMP JUMPDEST PUSH2 0x9D PUSH2 0xC2 CALLDATASIZE PUSH1 0x4 PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH2 0xDA PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA85 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x12D JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x16C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x163 SWAP1 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x18B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x986 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x218 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x95B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x288 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x30D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2BD DUP2 PUSH2 0x394 JUMP JUMPDEST ISZERO PUSH2 0x2CE JUMPI PUSH2 0x2CB DUP2 PUSH2 0x3DB JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2F7 PUSH2 0x2D9 PUSH2 0x290 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x406 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306 DUP3 PUSH2 0x582 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x338 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x375 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x389 DUP3 DUP3 PUSH2 0x599 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E9 DUP5 PUSH2 0x582 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3F6 DUP5 PUSH2 0x5C3 JUMP JUMPDEST ISZERO PUSH2 0x306 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4B7 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x464 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x8FE JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x55E JUMPI PUSH2 0x55E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DC SWAP3 SWAP2 SWAP1 PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x60A JUMP JUMPDEST PUSH2 0x57D DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DC SWAP3 SWAP2 SWAP1 PUSH2 0xA07 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x58E DUP4 PUSH2 0x6BD JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5A8 JUMPI POP DUP1 PUSH2 0x38E JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5B8 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x38E PUSH2 0x1AE PUSH2 0x739 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x633 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x670 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x675 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x68D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6B7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x6AF JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6AF SWAP2 SWAP1 PUSH2 0x89F JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x766 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x6CA DUP4 PUSH2 0x774 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6FC SWAP3 SWAP2 SWAP1 PUSH2 0x978 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x763 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x797 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x2F7 JUMPI PUSH2 0x2F7 DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x827 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x832 DUP2 PUSH2 0xA8E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x842 DUP2 PUSH2 0xAB0 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x85E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x871 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x87F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x890 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8B0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x306 DUP2 PUSH2 0xAB0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8CD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8D8 DUP2 PUSH2 0xA8E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F7 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x90F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x936 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x91C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x944 JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306 DUP3 DUP5 PUSH2 0x916 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x967 DUP3 DUP7 PUSH2 0x916 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D SWAP4 0xE4 KECCAK256 0xAF SELFBALANCE SWAP4 RETURNDATASIZE MULMOD DUP7 0xD1 GASPRICE ADDRESS 0xAE EXTCODESIZE 0x4E 0xE8 PUSH21 0x9CC912FDAA253F9E31AB83FB435264736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"2122:7250:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2621:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2836:466;;;;;;:::i;:::-;;:::i;:::-;;2527:88;;;;;;;;;;;;;:::i;3480:287::-;;;;;;:::i;:::-;;:::i;4175:158::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2621:101::-;2704:11;2621:101;:::o;2836:466::-;2991:24;;;3010:4;2991:24;;:37;;;3020:8;3019:9;2991:37;2983:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3074:17;3147:34;;;3183:10;3195:7;3204:8;3124:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:156;;;3227:13;;;;3094:156;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;3261:34:94;:28;3269:6;3261:28;3094:156;3261:28;:34::i;:::-;;2836:466;;;;;:::o;2527:88::-;2602:6;2527:88;:::o;3480:287::-;3572:27;3592:6;3572:19;:27::i;:::-;3568:100;;;3624:33;3650:6;3624:25;:33::i;:::-;3615:42;;3568:100;3714:46;3740:10;:8;:10::i;:::-;3714:17;;;;3753:6;3714:17;:46::i;:::-;3480:287;;:::o;4175:158::-;4258:13;4295:31;4322:3;4295:26;:31::i;:::-;4283:43;4175:158;-1:-1:-1;;;4175:158:94:o;3494:278:69:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;5451:358:94:-;5653:66;5644:75;5736:66;5643:159;;5451:358::o;7281:375::-;7356:7;7376:12;7390:13;7407:31;7434:3;7407:26;:31::i;:::-;7375:63;;;;7453:33;7482:3;7453:28;:33::i;:::-;7449:179;;;7602:1;7596:4;7589:15;7644:5;7281:375;-1:-1:-1;;;7281:375:94:o;1001:507:77:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:77;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;7850:404:94:-;7921:12;7935:13;7967:20;7983:3;7967:15;:20::i;:::-;7960:27;;8233:4;8227:11;8218:20;;8204:44;;;:::o;5057:714:69:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:69;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:12;5703:7:69;:37::i;5926:505:94:-;6275:66;6266:75;6358:66;6265:159;;5926:505::o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;:::-;2324:914;;;;:::o;8410:595:94:-;8470:7;8996:1;8941:27;8964:3;8941:22;:27::i;:::-;8970:20;8924:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8914:78;;8924:67;8914:78;;;;8906:91;;8410:595;-1:-1:-1;;8410:595:94:o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;926:101::-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;9196:174:94:-;9296:66;9290:72;;9196:174::o;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1211:609:-1;;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;206:20;231:30;206:20;231:30;:::i;:::-;1531:60;-1:-1;1656:2;1641:18;;1628:32;1680:18;1669:30;;;1666:2;;;-1:-1;;1702:12;1666:2;1787:6;1776:9;1772:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;1680:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1523:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1327:493;;;;-1:-1;;1523:2;668:17;;-1:-1;;;1327:493::o;1827:257::-;;1939:2;1927:9;1918:7;1914:23;1910:32;1907:2;;;-1:-1;;1945:12;1907:2;354:6;348:13;366:30;390:5;366:30;:::i;2091:396::-;;;2227:2;2215:9;2206:7;2202:23;2198:32;2195:2;;;-1:-1;;2233:12;2195:2;861:6;848:20;873:48;915:5;873:48;:::i;:::-;2285:78;2400:2;2439:22;;;;1000:20;;-1:-1;;;2189:298::o;2494:241::-;;2598:2;2586:9;2577:7;2573:23;2569:32;2566:2;;;-1:-1;;2604:12;2566:2;-1:-1;1000:20;;2560:175;-1:-1;2560:175::o;2742:263::-;;2857:2;2845:9;2836:7;2832:23;2828:32;2825:2;;;-1:-1;;2863:12;2825:2;-1:-1;1148:13;;2819:186;-1:-1;2819:186::o;3887:356::-;;4047:5;9272:12;-1:-1;11373:101;11387:6;11384:1;11381:13;11373:101;;;4191:4;11454:11;;;;;11448:18;11435:11;;;11428:39;11402:10;11373:101;;;11489:6;11486:1;11483:13;11480:2;;;-1:-1;11545:6;11540:3;11536:16;11529:27;11480:2;-1:-1;4222:16;;;;;3995:248;-1:-1;;3995:248::o;5360:271::-;;5513:93;5602:3;5593:6;5513:93;:::i;5638:448::-;;5847:93;5936:3;5927:6;5847:93;:::i;:::-;11228:6;11223:3;11218;11205:30;11266:16;;;11259:27;;;-1:-1;11266:16;5828:258;-1:-1;;5828:258::o;6093:392::-;3476:58;;;6346:2;6337:12;;3476:58;6448:12;;;6237:248::o;6492:464::-;10199:42;10188:54;;;3099:45;;10188:54;;;;6865:2;6850:18;;3099:45;9908:13;;9901:21;6942:2;6927:18;;3341:34;6685:2;6670:18;;6656:300::o;6963:333::-;10199:42;10188:54;;;3099:45;;10188:54;;7282:2;7267:18;;3099:45;7118:2;7103:18;;7089:207::o;7303:345::-;10199:42;10188:54;;;;3099:45;;10404:4;10393:16;7634:2;7619:18;;4673:56;7464:2;7449:18;;7435:213::o;7655:333::-;10199:42;10188:54;;;;3099:45;;7974:2;7959:18;;3476:58;7810:2;7795:18;;7781:207::o;7995:272::-;10199:42;10188:54;;;;4346:75;;8147:2;8132:18;;8118:149::o;8533:416::-;8733:2;8747:47;;;4966:2;8718:18;;;9570:19;5002:33;9610:14;;;4982:54;5055:12;;;8704:245::o;8956:222::-;3476:58;;;9083:2;9068:18;;9054:124::o;11739:117::-;10199:42;11826:5;10188:54;11801:5;11798:35;11788:2;;11847:1;;11837:12;11863:111;11944:5;9908:13;9901:21;11922:5;11919:32;11909:2;;11965:1;;11955:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function - A library contract such as this one, which defines the allowed behaviour of the relayer NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the entrypoint context. This contract should neither be allowlisted as a relayer, nor called directly by the user. No guarantees can be made about fund safety when calling this contract in an improper manner. All functions that are meant to be called from the entrypoint via `multicall` must be payable so that they do not revert in a call involving ETH. This also applies to functions that do not alter the state and would be usually labeled as `view`.\",\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary). This function does not alter the state in any way. It is not marked as view because it has to be `payable` in order to be used in a batch transaction. Use a static call to read the state off-chain.\"}},\"title\":\"Base Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"Core functionality of a relayer. Allow users to use a signature to approve this contract to take further actions on their behalf.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BaseRelayerLibrary.sol\":\"BaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0x90f015009b9eb5ef856d5bbdebcaf90ab53c0e4ddb26a289f81156fef607c5ac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://793d728e420243ea1940e517b18bdc8043b0aaa778af63fe334bce4c2cd815ba\",\"dweb:/ipfs/Qmdb1PqtyT6UnKDUCphasSmAj4nXn6YVwmUzuSveAgQzNn\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x39fa4329e480fdfd025ca692937d3d7857359eaf27faba07191dae56d374c75d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3c361b8e24e59c3fa6c79f058506e8484649b3082ca49974387d217ee0f0a3e8\",\"dweb:/ipfs/QmX53HeJGcEac72TRZyYppncdTpWRJjqGoXPCofmWgs56Q\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/CompoundV2Wrapping.sol":{"CompoundV2Wrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapCompoundV2(address,address,address,uint256,uint256)":"44b6ac74","wrapCompoundV2(address,address,address,uint256,uint256)":"2c25efe1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"CompoundV2Wrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Compound v2 cTokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/CompoundV2Wrapping.sol\":\"CompoundV2Wrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":{\"keccak256\":\"0x0a32eeae183b04333cee772022b0c084e6a0f676842731055dd63daddf6aa387\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3786f317c3dcbff798b2b461be6743a7c209da4cd88a2bea737daceba6ad5f41\",\"dweb:/ipfs/QmcbHLg2PZWWyqtGzM6CQCvhEA7fQ1r3WNh3A3GDxqDii3\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/CompoundV2Wrapping.sol\":{\"keccak256\":\"0x4b471ef2176bc032c70522abb0dd140e70e43d527f06e4d886d63370b0bd1887\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c6da47a5f3b95da8bacb92c92b9761dc4434a44b4b82a94f586b20a71bc52dc6\",\"dweb:/ipfs/QmXBqprKiCbV4ojJtvP2T2ZDdgB9feeEJjKRhPoG9QvR6x\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/ERC4626Wrapping.sol":{"ERC4626Wrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ERC4626Wrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap ERC4626 tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ERC4626Wrapping.sol\":\"ERC4626Wrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0xcdf9a0800b63570a3a722a7e7a9d7d723d5620973f4214bb22d14e83d8c636b9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c760aacaa8c5b103fafefb33ded3f79a5b7a223a689363732d1fc7fb3340fc5\",\"dweb:/ipfs/QmcReLmzgcrfAHP4EkHQaaXX48yUMTqwgTLpSDMSCnB1GB\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/EulerWrapping.sol":{"EulerWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapEuler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"eulerProtocol","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapEuler","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapEuler(address,address,address,uint256,uint256)":"941e849b","wrapEuler(address,address,address,address,uint256,uint256)":"52b88746"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"eulerProtocol\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"EulerWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Euler tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/EulerWrapping.sol\":\"EulerWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":{\"keccak256\":\"0x1831b7e182413889843464b9a0f8840ac8037fa2d6dae5f2d662682d3c08b3c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3dbde681f0d84d00c22aced367701fe6568c143575ec20ac146948664008433d\",\"dweb:/ipfs/QmSzNhMp1umzDJ97xFZAcitXKFefHCJc4SKVKKczxTfqNg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/EulerWrapping.sol\":{\"keccak256\":\"0xcb420fd6500ca664776deac14c4838b027b3979248c744abbbe1f1721d500c32\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3afd0d940806798c0a4d34eff0719e1173148d62ac5b904fd7b0227522607cdf\",\"dweb:/ipfs/QmbDH3wd8f51bMmjA1R9CrE5EcPxsRxeY6LKCfhgrSX5PR\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/GaugeActions.sol":{"GaugeActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"canCallUserCheckpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeCheckpoint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","canCallUserCheckpoint()":"10f3aaff","gaugeCheckpoint(address,address[])":"48699d58","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"canCallUserCheckpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeCheckpoint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"canCallUserCheckpoint()\":{\"details\":\"This method is not expected to be called inside `multicall` so it is not marked as `payable`.\"},\"constructor\":{\"details\":\"The zero address may be passed as balancerMinter to safely disable features which only exist on mainnet\"},\"gaugeCheckpoint(address,address[])\":{\"details\":\"Both mainnet and child chain gauges are supported.\"}},\"title\":\"GaugeActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canCallUserCheckpoint()\":{\"notice\":\"Returns true if the relayer is configured to checkpoint gauges directly via `user_checkpoint`.\"},\"gaugeCheckpoint(address,address[])\":{\"notice\":\"Perform a user checkpoint for the given user on the given set of gauges.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/GaugeActions.sol\":\"GaugeActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x0bd0b02deb9cc842216d099acbce84754b3afbad86c20c0438157d04bc1f392b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ae4102b6779215962b1606267d650ad3c9f22deb8f59efa6d190503283cee92\",\"dweb:/ipfs/QmdkmsACedQSDuZY26RZTGLb3rMsqPC65jyjPGA91jcpnB\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/GearboxWrapping.sol":{"GearboxWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"dieselAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapGearbox","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"mainAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapGearbox","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapGearbox(address,address,address,uint256,uint256)":"f4dd54b0","wrapGearbox(address,address,address,uint256,uint256)":"138fdc2c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"dieselAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"GearboxWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Gearbox tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/GearboxWrapping.sol\":\"GearboxWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/GearboxWrapping.sol\":{\"keccak256\":\"0x4a4abac13dc35fdced712313edafadaed81fba33f826b8d2689f4746020d88af\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://17e86ab04b28d7f5e2e76b6884958bc9a58d72400fd5f543b66e858d2bf07cd1\",\"dweb:/ipfs/Qma3fcYSSF2Y6kmR7jU687Qt9RswCxG4o5WPbthbc5fFEq\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/IBaseRelayerLibrary.sol":{"IBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaseRelayerLibrary\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/IBaseRelayerLibrary.sol\":\"IBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]}},\"version\":1}"}},"contracts/relayer/LidoWrapping.sol":{"LidoWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","wrapStETH(address,address,uint256,uint256)":"1c982441"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The zero address may be passed as wstETH to safely disable this module\",\"params\":{\"wstETH\":\"- the address of Lido's wrapped stETH contract\"}}},\"title\":\"LidoWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap stETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/LidoWrapping.sol\":\"LidoWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xd75043c8439f56d8793e46177a0a66edf8bed0cb0857b449478a8233d9366649\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb284393086201aa4b7dcba1aa32e33a3c8662933146c6aac347a86755830ad2\",\"dweb:/ipfs/QmQbdhsqcVgvwQQ2mfU1m1pVGWtuTagiGPcJaAtEG8qS5p\"]}},\"version\":1}"}},"contracts/relayer/ReaperWrapping.sol":{"ReaperWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ReaperWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ReaperWrapping.sol\":\"ReaperWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0x25f094d195f4fa07875934cb11dc08834ea26298079390a5413f8f4026f42711\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50745092953571536881ac3769653e7a6b8c1db1a403ae7b0525c7b6a500a1d7\",\"dweb:/ipfs/QmYmxhBjGdJmj7HFXq3SKK5trtcKWCzEmUXhq2LzjpCgvr\"]}},\"version\":1}"}},"contracts/relayer/SiloWrapping.sol":{"SiloWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapShareToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapShareToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapShareToken(address,address,address,uint256,uint256)":"4e9d9bab","wrapShareToken(address,address,address,uint256,uint256)":"5001fe75"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SiloWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Silo shareTokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/SiloWrapping.sol\":\"SiloWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/SiloWrapping.sol\":{\"keccak256\":\"0xc770962419ab2a6297829b478a2783696adb21dbe62debb5a35de70ca6e3ef59\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://363f9ef6c8cee4611ef2a518e1f8ead048a8d79429cdbc68cb95a777e89da84e\",\"dweb:/ipfs/QmVRe3tZreoLYBYGTAVCPNC9qron9ner1VoAMCD2Cueq6t\"]}},\"version\":1}"}},"contracts/relayer/TetuWrapping.sol":{"TetuWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapTetu","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapTetu","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapTetu(address,address,address,uint256,uint256)":"311c5c57","wrapTetu(address,address,address,uint256,uint256)":"b064b376"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"TetuWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Tetu tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/TetuWrapping.sol\":\"TetuWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/TetuWrapping.sol\":{\"keccak256\":\"0xd29edcc986e994878c002c9d547f3dc5690969088b4f26f789e800727963e02d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c25461292d80dc63e234c75c9e23439f1d28ffe074983f27ca158a5d01f37a62\",\"dweb:/ipfs/QmTHW88dF66g6zLouvXZazpqrDddhFk3aaLKnYvHqzW2g1\"]}},\"version\":1}"}},"contracts/relayer/UnbuttonWrapping.sol":{"UnbuttonWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@aalavandhan1984 (eng@fragments.org)\",\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH. The rebasing token to be wrapped is called the \\\"underlying\\\" token. The wrapped non-rebasing token is called the \\\"wrapped\\\" token. Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\",\"kind\":\"dev\",\"methods\":{\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"UnbuttonWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap any rebasing elastic balance token into a a non-rebasing static balance version using the Unbutton wrapper.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/UnbuttonWrapping.sol\":\"UnbuttonWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x6139f4c5c2dad2f0ffc79f25b792cc4fb480bc7df61556adad23d02963bdd1eb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://482c99db9e677a88d472a85b9c0dc55a3912f803d3c09794677f98064cd8d3f9\",\"dweb:/ipfs/QmWNdMwkLJyyT7b6qjJndNFrDKwmQmMRm7xyUj2KyYz9bR\"]}},\"version\":1}"}},"contracts/relayer/VaultActions.sol":{"ComposableStablePoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220859084212ee7ea37d102338b3d9617e3b2c8ecb5e9108c73d409ed17595211ef64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 SWAP1 DUP5 0x21 0x2E 0xE7 0xEA CALLDATACOPY 0xD1 MUL CALLER DUP12 RETURNDATASIZE SWAP7 OR 0xE3 0xB2 0xC8 0xEC 0xB5 0xE9 LT DUP13 PUSH20 0xD409ED17595211EF64736F6C6343000701003300 ","sourceMap":"22929:206:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220859084212ee7ea37d102338b3d9617e3b2c8ecb5e9108c73d409ed17595211ef64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 SWAP1 DUP5 0x21 0x2E 0xE7 0xEA CALLDATACOPY 0xD1 MUL CALLER DUP12 RETURNDATASIZE SWAP7 OR 0xE3 0xB2 0xC8 0xEC 0xB5 0xE9 LT DUP13 PUSH20 0xD409ED17595211EF64736F6C6343000701003300 ","sourceMap":"22929:206:106:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultActions.sol\":\"ComposableStablePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x3d9190caf099bab66218fd0be5e3d06dc7860ba6cc8ebb9fad02a327cfa3d65e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5307c048dd8b02a23e860f8c5364d0b3dd1efbc1e0cf9920077eecece56fa8cc\",\"dweb:/ipfs/QmdPCdYeN9oVLJnqPijvX9Z8W12VFRNLYuXHLaxKRmG915\"]}},\"version\":1}"},"LegacyStablePoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b89bfbc80c81c2d55e7c39b65a4849125b815858e53af48ad787ca771f37f02a64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 SWAP12 0xFB 0xC8 0xC DUP2 0xC2 0xD5 0x5E PUSH29 0x39B65A4849125B815858E53AF48AD787CA771F37F02A64736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"22620:231:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b89bfbc80c81c2d55e7c39b65a4849125b815858e53af48ad787ca771f37f02a64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 SWAP12 0xFB 0xC8 0xC DUP2 0xC2 0xD5 0x5E PUSH29 0x39B65A4849125B815858E53AF48AD787CA771F37F02A64736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"22620:231:106:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultActions.sol\":\"LegacyStablePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x3d9190caf099bab66218fd0be5e3d06dc7860ba6cc8ebb9fad02a327cfa3d65e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5307c048dd8b02a23e860f8c5364d0b3dd1efbc1e0cf9920077eecece56fa8cc\",\"dweb:/ipfs/QmdPCdYeN9oVLJnqPijvX9Z8W12VFRNLYuXHLaxKRmG915\"]}},\"version\":1}"},"VaultActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256,(uint256,uint256)[])":"837f9bcb","peekChainedReferenceValue(uint256)":"f3cab685","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers from the Vault. All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultActions.sol\":\"VaultActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x3d9190caf099bab66218fd0be5e3d06dc7860ba6cc8ebb9fad02a327cfa3d65e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5307c048dd8b02a23e860f8c5364d0b3dd1efbc1e0cf9920077eecece56fa8cc\",\"dweb:/ipfs/QmdPCdYeN9oVLJnqPijvX9Z8W12VFRNLYuXHLaxKRmG915\"]}},\"version\":1}"}},"contracts/relayer/VaultPermit.sol":{"VaultPermit":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultPermit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultPermit.sol\":\"VaultPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]}},\"version\":1}"}},"contracts/relayer/YearnWrapping.sol":{"YearnWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapYearn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapYearn","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapYearn(address,address,address,uint256,uint256)":"8b35ac8d","wrapYearn(address,address,address,uint256,uint256)":"4f06a70b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"YearnWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Yearn tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/YearnWrapping.sol\":\"YearnWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":{\"keccak256\":\"0x8a30751d1411b686dc598147ae15677c935e468b46c10998bc713ab26f4cf433\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49d59beba049d9ec36289d0ff86a1eae34bc11b13052c68bc1604b86ff91d6c3\",\"dweb:/ipfs/QmXjX1eJWQGtpqknMaqJxejy8v8HJv6NrCn7ZhoozvQroD\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/YearnWrapping.sol\":{\"keccak256\":\"0x2704851099c3f0951b70ac4f2a4312dfb1b1407d0732e1f20eab359c3fc9690c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4e46ef856ff43710b0730201a6d4fc474d5c5ba2dde21083b1a0c8f67d26c0e\",\"dweb:/ipfs/QmWjDtpweMHcBb848SAGMyAH8nfcot9mTXJF6mGdn42Znq\"]}},\"version\":1}"}},"contracts/relayer/interfaces/IMockEulerProtocol.sol":{"IMockEulerProtocol":{"abi":[{"inputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"msgSender","type":"address"}],"name":"requestUnderlyingFromRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"relayer","type":"address"}],"name":"sendUnderlyingToRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"requestUnderlyingFromRelayer(address,uint256,address)":"3d4216d9","sendUnderlyingToRelayer(address,uint256,address)":"d218fe88"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"requestUnderlyingFromRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"sendUnderlyingToRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"requestUnderlyingFromRelayer(address,uint256,address)\":{\"details\":\"This mimics the requirement to ensure the euler protocol is allowed to transfer from msg.sender\"},\"sendUnderlyingToRelayer(address,uint256,address)\":{\"details\":\"This is a simple ERC20.transfer\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"requestUnderlyingFromRelayer(address,uint256,address)\":{\"notice\":\"Triggers a transferFrom call `from` msg.sender\"},\"sendUnderlyingToRelayer(address,uint256,address)\":{\"notice\":\"Sends tokens from EulerProtocol to relayer\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/interfaces/IMockEulerProtocol.sol\":\"IMockEulerProtocol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"contracts/relayer/interfaces/IMockEulerProtocol.sol\":{\"keccak256\":\"0xee162ed1d1eddad536055ff29de1ecf9649976b6f9f19740a7657642b974b565\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9392cb4cfc75256eeff054c918ac0ca1af49844be0e697c442c6c4df1c5c8f1e\",\"dweb:/ipfs/QmXByf973KbeA27DWJx7PVG64egQk8sxb5h9KGtDfsTMJY\"]}},\"version\":1}"}},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"DoubleEntrypointFixRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BTC_STABLE_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BTC_STABLE_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exitBTCStablePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitSNXWeightedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"sweepDoubleEntrypointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepSNXsBTC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162001b7e38038062001b7e8339810160408190526200003491620000dd565b806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b031663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c69190620000dd565b60601b6001600160601b03191660a052506200011c565b600060208284031215620000ef578081fd5b8151620000fc8162000103565b9392505050565b6001600160a01b03811681146200011957600080fd5b50565b60805160601c60a05160601c611a15620001696000398061077c5280610ccf52806110e252508061025c528061033c5280610a505280610f595280610f8652806111135250611a156000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016003841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea26469706673582212202f29bdde0f41bd9fa6142ee3ee992b5d50eebdaf657e7c4e2ae54a1aee440c7964736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1B7E CODESIZE SUB DUP1 PUSH3 0x1B7E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xDD JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0xDD JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH3 0x11C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xEF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xFC DUP2 PUSH3 0x103 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1A15 PUSH3 0x169 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x77C MSTORE DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0x10E2 MSTORE POP DUP1 PUSH2 0x25C MSTORE DUP1 PUSH2 0x33C MSTORE DUP1 PUSH2 0xA50 MSTORE DUP1 PUSH2 0xF59 MSTORE DUP1 PUSH2 0xF86 MSTORE DUP1 PUSH2 0x1113 MSTORE POP PUSH2 0x1A15 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x3 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0x29 0xBD 0xDE 0xF COINBASE 0xBD SWAP16 0xA6 EQ 0x2E 0xE3 0xEE SWAP10 0x2B 0x5D POP 0xEE 0xBD 0xAF PUSH6 0x7E7C4E2AE54A BYTE 0xEE DIFFICULTY 0xC PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1472:6809:110:-:0;;;3050:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3095:5;-1:-1:-1;;;;;3086:14:110;;;-1:-1:-1;;;;;3086:14:110;;;;;;;3134:5;-1:-1:-1;;;;;3134:30:110;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3110:56;;-1:-1:-1;;;;;;3110:56:110;;;-1:-1:-1;1472:6809:110;;379:325:-1;;525:2;513:9;504:7;500:23;496:32;493:2;;;-1:-1;;531:12;493:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;583:105;487:217;-1:-1;;;487:217::o;1479:179::-;-1:-1;;;;;1413:54;;1569:66;;1559:2;;1649:1;;1639:12;1559:2;1553:105;:::o;:::-;1472:6809:110;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"17763":[{"length":32,"start":604},{"length":32,"start":828},{"length":32,"start":2640},{"length":32,"start":3929},{"length":32,"start":3974},{"length":32,"start":4371}],"17765":[{"length":32,"start":1916},{"length":32,"start":3279},{"length":32,"start":4322}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016003841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea26469706673582212202f29bdde0f41bd9fa6142ee3ee992b5d50eebdaf657e7c4e2ae54a1aee440c7964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x3 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0x29 0xBD 0xDE 0xF COINBASE 0xBD SWAP16 0xA6 EQ 0x2E 0xE3 0xEE SWAP10 0x2B 0x5D POP 0xEE 0xBD 0xAF PUSH6 0x7E7C4E2AE54A BYTE 0xEE DIFFICULTY 0xC PUSH26 0x64736F6C63430007010033000000000000000000000000000000 ","sourceMap":"1472:6809:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;;;;;:::i;:::-;;:::i;:::-;;2243:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2350:113;;;:::i;:::-;;;;;;;:::i;6866:462::-;;;:::i;1967:82::-;;;:::i;5133:1283::-;;;:::i;2141:95::-;;;:::i;3179:79::-;;;:::i;1881:80::-;;;:::i;2640:94::-;;;:::i;2554:80::-;;;:::i;3545:1310::-;;;:::i;2055:80::-;;;:::i;1719:111::-;;;:::i;2469:79::-;;;:::i;7973:306::-;;;;;;:::i;:::-;;:::i;1614:99::-;;;:::i;7481:253::-;7558:24;7599:6;:13;7585:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7585:28:110;;7558:55;;7636:6;7643:1;7636:9;;;;;;;;;;;;;;:19;;;7664:6;7636:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7623:7;7631:1;7623:10;;;;;;;;;;;;;;;;;:49;7682:45;;;;;:16;:6;:16;;;;:45;;7699:4;;7705:6;;7713:7;;7682:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;:::o;2243:101::-;2301:42;2243:101;:::o;2350:113::-;2397:66;2350:113;:::o;6866:462::-;6940:15;;;6953:1;6940:15;;;6907:30;6940:15;;;;;6907:30;6940:15;;;;;;;;;;-1:-1:-1;6940:15:110;6907:48;;2691:42;6965:14;6980:1;6965:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;7013:14;7028:1;7013:17;;;;;;;;;;;;;:40;;;;;;;;;;;7064:42;7091:14;7064:26;:42::i;:::-;7151:15;;;7164:1;7151:15;;;7117:31;7151:15;;;;;7117:31;7151:15;;;;;;;;;;-1:-1:-1;7151:15:110;7117:49;;2193:42;7176:15;7192:1;7176:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;7226:15;7242:1;7226:18;;;;;;;;;;;;;:42;;;;;;;;;;;7278:43;7305:15;7278:26;:43::i;:::-;6866:462;;:::o;1967:82::-;2006:42;1967:82;:::o;5133:1283::-;5208:15;;;5221:1;5208:15;;;5183:22;5208:15;;;;;5183:22;5208:15;;;;;;;;;;-1:-1:-1;5208:15:110;5183:40;;2505:42;5233:6;5240:1;5233:9;;;;;;;;;;;;;:15;;;;;;;;;;;2591:42;5258:6;5265:1;5258:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;5306:47;;;;;5284:19;;2301:42;;5306:35;;:47;;5342:10;;5306:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5655:45;;;;;5284:69;;-1:-1:-1;5616:85:110;;2505:42;;;;5655:13;;:45;;5677:21;;5655:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5616:33;:85::i;:::-;5741:21;5776:57;5835:11;5765:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5741:106;;5857:37;;:::i;:::-;5897:146;;;;;;;;5933:17;5943:6;5933:9;:17::i;:::-;5897:146;;;;5978:6;:13;5964:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5964:28:110;-1:-1:-1;5897:146:110;;;;;;;;-1:-1:-1;5897:146:110;;;;;5857:186;-1:-1:-1;6053:10:110;:8;:10::i;:::-;:74;;;;;:19;;;;;;;;:74;;2397:66;;6095:10;;;;6119:7;;6053:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6244:15:110;;;6257:1;6244:15;;;6211:30;6244:15;;;;;6211:30;-1:-1:-1;6244:15:110;;-1:-1:-1;6257:1:110;6244:15;;;;;;;;;;-1:-1:-1;6244:15:110;6211:48;;2691:42;6269:14;6284:1;6269:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;6317:14;6332:1;6317:17;;;;;;;;;;;;;:40;;;;;;;;;;;6367:42;6394:14;6367:26;:42::i;:::-;5133:1283;;;;;:::o;2141:95::-;2193:42;2141:95;:::o;3179:79::-;3245:6;3179:79;:::o;1881:80::-;1918:42;1881:80;:::o;2640:94::-;2691:42;2640:94;:::o;2554:80::-;2591:42;2554:80;:::o;3545:1310::-;3618:15;;;3631:1;3618:15;;;;;;;;;3593:22;;3618:15;;;3593:22;;3618:15;;;;;-1:-1:-1;3618:15:110;3593:40;;1918:42;3643:6;3650:1;3643:9;;;;;;;;;;;;;:16;;;;;;;;;;;2006:42;3669:6;3676:1;3669:9;;;;;;;;;;;;;:18;;;;;;;;;;;2092:42;3697:6;3704:1;3697:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;3745:45;;;;;3723:19;;1670:42;;3745:33;;:45;;3779:10;;3745:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4095:46;;;;;3723:67;;-1:-1:-1;4055:87:110;;2092:42;;;;4095:14;;:46;;4118:21;;4095:46;;;:::i;4055:87::-;4182:21;2936:1;4269:11;4206:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4182:99;;4291:37;;:::i;:::-;4331:146;;;;;;;;4367:17;4377:6;4367:9;:17::i;:::-;4331:146;;;;4412:6;:13;4398:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4398:28:110;-1:-1:-1;4331:146:110;;;;;;;;-1:-1:-1;4331:146:110;;;;;4291:186;-1:-1:-1;4487:10:110;:8;:10::i;:::-;:72;;;;;:19;;;;;;;;:72;;1764:66;;4527:10;;;;4551:7;;4487:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4678:15:110;;;4691:1;4678:15;;;4644:31;4678:15;;;;;4644:31;-1:-1:-1;4678:15:110;;-1:-1:-1;4691:1:110;4678:15;;;;;;;;;;-1:-1:-1;4678:15:110;4644:49;;2193:42;4703:15;4719:1;4703:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;4753:15;4769:1;4753:18;;;;;;;2055:80;2092:42;2055:80;:::o;1719:111::-;1764:66;1719:111;:::o;2469:79::-;2505:42;2469:79;:::o;7973:306::-;8147:64;8156:10;:29;8178:6;8156:29;;6271:3:12;8147:8:110;:64::i;:::-;8221:51;8252:6;8261:7;8269:1;8261:10;;;;;;;;;;;;;;8221:6;8228:1;8221:9;;;;;;;;;;;;;;:22;;;;:51;;;;;:::i;:::-;7973:306;;;;:::o;1614:99::-;1670:42;1614:99;:::o;6422:336::-;6539:15;;;6552:1;6539:15;;;;;;;;;6514:22;;6539:15;;;;;;;;;;;-1:-1:-1;6539:15:110;6514:40;;6576:5;6564:6;6571:1;6564:9;;;;;;;;:17;;;;;:9;;;;;;;;;;;:17;6618:16;;;6632:1;6618:16;;;;;;;;;6591:24;;6618:16;;;;;;;;;;;;-1:-1:-1;6618:16:110;6591:43;;6657:6;6644:7;6652:1;6644:10;;;;;;;;;;;;;;;;;:19;6674:77;;;;;:43;:21;:43;;;;:77;;6718:6;;6726:7;;6743:6;;6674:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:336;;;;:::o;979:182:60:-;1147:6;1127:32::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1514:214:77:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1626:19;:95::i;:::-;1514:214;;;:::o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31:752::-;;163:3;156:4;148:6;144:17;140:27;130:2;;-1:-1;;171:12;130:2;218:6;205:20;240:95;255:79;327:6;255:79;:::i;:::-;240:95;:::i;:::-;363:21;;;231:104;-1:-1;407:4;420:14;;;;395:17;;;509;;;500:27;;;;497:36;-1:-1;494:2;;;546:1;;536:12;494:2;571:1;;556:221;581:6;578:1;575:13;556:221;;;2203:6;2190:20;22256:42;25002:5;22245:54;24962:5;24959:50;24949:2;;571:1;;25013:12;24949:2;649:65;;728:14;;;;756;;;;603:1;596:9;556:221;;;560:14;;;;;;123:660;;;;:::o;809:707::-;;926:3;919:4;911:6;907:17;903:27;893:2;;-1:-1;;934:12;893:2;981:6;968:20;1003:80;1018:64;1075:6;1018:64;:::i;1003:80::-;1111:21;;;994:89;-1:-1;1155:4;1168:14;;;;1143:17;;;1257;;;1248:27;;;;1245:36;-1:-1;1242:2;;;1294:1;;1284:12;1242:2;1319:1;1304:206;1329:6;1326:1;1323:13;1304:206;;;2342:20;;1397:50;;1461:14;;;;1489;;;;1351:1;1344:9;1304:206;;;1308:14;;;;;886:630;;;;:::o;2553:407::-;;2697:2;2685:9;2676:7;2672:23;2668:32;2665:2;;;-1:-1;;2703:12;2665:2;2761:17;2748:31;2799:18;2791:6;2788:30;2785:2;;;-1:-1;;2821:12;2785:2;2851:93;2936:7;2927:6;2916:9;2912:22;2851:93;:::i;:::-;2841:103;2659:301;-1:-1;;;;2659:301::o;2967:1159::-;;;;;3221:3;3209:9;3200:7;3196:23;3192:33;3189:2;;;-1:-1;;3228:12;3189:2;3286:17;3273:31;3324:18;;3316:6;3313:30;3310:2;;;-1:-1;;3346:12;3310:2;3376:93;3461:7;3452:6;3441:9;3437:22;3376:93;:::i;:::-;3366:103;;3534:2;;;;3523:9;3519:18;3506:32;3324:18;3550:6;3547:30;3544:2;;;-1:-1;;3580:12;3544:2;3610:78;3680:7;3671:6;3660:9;3656:22;3610:78;:::i;:::-;3600:88;;;3753:2;3742:9;3738:18;3725:32;3324:18;3769:6;3766:30;3763:2;;;-1:-1;;3799:12;3763:2;3829:78;3899:7;3890:6;3879:9;3875:22;3829:78;:::i;:::-;3819:88;;;3972:2;3961:9;3957:18;3944:32;3324:18;3988:6;3985:30;3982:2;;;-1:-1;;4018:12;3982:2;4078:22;;1754:4;1742:17;;1738:27;-1:-1;1728:2;;-1:-1;;1769:12;1728:2;1816:6;1803:20;3324:18;18683:6;18680:30;18677:2;;;-1:-1;;18713:12;18677:2;1838:64;3534:2;18786:9;1754:4;18771:6;18767:17;18763:33;18844:15;1838:64;:::i;:::-;1829:73;;1922:6;1915:5;1908:21;2026:3;3534:2;2017:6;1950;2008:16;;2005:25;2002:2;;;-1:-1;;2033:12;2002:2;24203:6;3534:2;1950:6;1946:17;3534:2;1984:5;1980:16;24180:30;24241:16;;;;;24234:27;;;;-1:-1;3183:943;;;;-1:-1;3183:943;-1:-1;3183:943::o;4133:257::-;;4245:2;4233:9;4224:7;4220:23;4216:32;4213:2;;;-1:-1;;4251:12;4213:2;1605:6;1599:13;24848:5;21828:13;21821:21;24826:5;24823:32;24813:2;;-1:-1;;24859:12;24813:2;4303:71;4207:183;-1:-1;;;4207:183::o;4397:263::-;;4512:2;4500:9;4491:7;4487:23;4483:32;4480:2;;;-1:-1;;4518:12;4480:2;-1:-1;2490:13;;4474:186;-1:-1;4474:186::o;6517:765::-;;6740:5;19498:12;20466:6;20461:3;20454:19;20503:4;;20498:3;20494:14;6752:93;;20503:4;6931:5;19006:14;-1:-1;6970:290;6995:6;6992:1;6989:13;6970:290;;;7056:13;;22256:42;22245:54;9749:86;;5063:14;;;;20074;;;;7017:1;7010:9;6970:290;;;-1:-1;7266:10;;6656:626;-1:-1;;;;;6656:626::o;7321:670::-;;7504:5;19498:12;20466:6;20461:3;20454:19;20503:4;;20498:3;20494:14;7516:83;;20503:4;7670:5;19006:14;-1:-1;7709:260;7734:6;7731:1;7728:13;7709:260;;;7795:13;;8900:37;;5245:14;;;;20074;;;;7756:1;7749:9;7709:260;;8728:94;21828:13;21821:21;8783:34;;8777:45::o;8949:323::-;;9081:5;19498:12;20466:6;20461:3;20454:19;9164:52;9209:6;20503:4;20498:3;20494:14;20503:4;9190:5;9186:16;9164:52;:::i;:::-;24640:2;24620:14;24636:7;24616:28;9228:39;;;;20503:4;9228:39;;9029:243;-1:-1;;9029:243::o;12388:271::-;;9439:5;19498:12;9550:52;9595:6;9590:3;9583:4;9576:5;9572:16;9550:52;:::i;:::-;9614:16;;;;;12522:137;-1:-1;;12522:137::o;12666:222::-;22256:42;22245:54;;;;5509:45;;12793:2;12778:18;;12764:124::o;13140:333::-;22256:42;22245:54;;;;5509:45;;13459:2;13444:18;;8900:37;13295:2;13280:18;;13266:207::o;13480:770::-;;13778:2;13799:17;13792:47;13853:123;13778:2;13767:9;13763:18;13962:6;13853:123;:::i;:::-;14024:9;14018:4;14014:20;14009:2;13998:9;13994:18;13987:48;14049:108;14152:4;14143:6;14049:108;:::i;:::-;14041:116;;;22256:42;21638:5;22245:54;14236:2;14225:9;14221:18;5509:45;13749:501;;;;;;:::o;14257:222::-;8900:37;;;14384:2;14369:18;;14355:124::o;14486:784::-;;8930:5;8907:3;8900:37;14960:2;22256:42;;21638:5;22245:54;14960:2;14949:9;14945:18;5352:58;22256:42;21638:5;22245:54;15059:2;15048:9;15044:18;5509:45;;14787:3;15096:2;15085:9;15081:18;15074:48;11167:14;14776:9;11167:14;11250:16;11244:23;14787:3;;14776:9;14772:19;11280:38;11333:118;5938:5;19498:12;20466:6;20461:3;20454:19;20494:14;14776:9;20494:14;5950:83;;14960:2;6119:5;19006:14;6131:21;;-1:-1;6164:10;;6158:290;6183:6;6180:1;6177:13;6158:290;;;22641:73;6250:6;6244:13;22641:73;:::i;:::-;9749:86;;20074:14;;;;6205:1;6198:9;;;;;4851:14;;;;6158:290;;;6162:14;14960:2;11538:5;11534:16;11528:23;11508:43;;11587:14;;;;14776:9;11591:4;11587:14;;11571;14776:9;11571:14;11564:38;11617:103;11715:4;11701:12;11617:103;:::i;:::-;11609:111;;;;15059:2;11802:5;11798:16;11792:23;11587:14;14776:9;11855:4;11851:14;;11835;14776:9;11835:14;11828:38;11881:71;11947:4;11933:12;11881:71;:::i;:::-;11873:79;;;;15096:2;12043:5;12039:16;12033:23;12062:57;12104:14;14776:9;12104:14;12090:12;12062:57;:::i;:::-;-1:-1;15128:132;14758:512;-1:-1;;;;;;14758:512::o;15277:1146::-;;22256:42;21638:5;22245:54;9756:3;9749:86;15711:3;15866:2;15855:9;15851:18;15844:48;15906:123;15711:3;15700:9;15696:19;16015:6;15906:123;:::i;:::-;16077:9;16071:4;16067:20;16062:2;16051:9;16047:18;16040:48;16102:108;16205:4;16196:6;16102:108;:::i;:::-;16248:20;;;16243:2;16228:18;;;16221:48;;;;-1:-1;;10855:1;20454:19;;10890:4;15866:2;20494:14;;10870:25;16062:2;10914:12;;15682:741;-1:-1;;;15682:741::o;16948:353::-;17113:2;17098:18;;24738:1;24728:12;;24718:2;;24744:9;24718:2;10560:60;;;17287:2;17272:18;8900:37;17084:217;:::o;17308:333::-;8900:37;;;17627:2;17612:18;;8900:37;17463:2;17448:18;;17434:207::o;17648:256::-;17710:2;17704:9;17736:17;;;17811:18;17796:34;;17832:22;;;17793:62;17790:2;;;17868:1;;17858:12;17790:2;17710;17877:22;17688:216;;-1:-1;17688:216::o;17911:319::-;;18085:18;18077:6;18074:30;18071:2;;;-1:-1;;18107:12;18071:2;-1:-1;18152:4;18140:17;;;18205:15;;18008:222::o;21558:91::-;22256:42;22245:54;;21603:46::o;24276:268::-;24341:1;24348:101;24362:6;24359:1;24356:13;24348:101;;;24429:11;;;24423:18;24410:11;;;24403:39;24384:2;24377:10;24348:101;;;24464:6;24461:1;24458:13;24455:2;;;-1:-1;;24341:1;24511:16;;24504:27;24325:219::o"},"methodIdentifiers":{"BTC_STABLE_POOL_ADDRESS()":"fd6ea58d","BTC_STABLE_POOL_ID()":"e4231540","SNX()":"e8d6101e","SNX_IMPLEMENTATION()":"a2abb55f","SNX_WEIGHTED_POOL_ADDRESS()":"0a5e13dc","SNX_WEIGHTED_POOL_ID()":"5dc80bd0","WETH()":"ad5c4648","exitBTCStablePool()":"cbc87782","exitSNXWeightedPool()":"69af9c7e","getVault()":"8d928af8","receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707","renBTC()":"5fbc1031","sBTC()":"e043f56f","sBTC_IMPLEMENTATION()":"6ad3aaa4","sweepDoubleEntrypointToken(address[])":"0306ae12","sweepSNXsBTC()":"5f5fb036","wBTC()":"9b452931"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitBTCStablePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitSNXWeightedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"sweepDoubleEntrypointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sweepSNXsBTC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix synth). We only need to repay the first loan as that will automatically all other loans.\"}},\"title\":\"DoubleEntrypointFixRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exitBTCStablePool()\":{\"notice\":\"Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"exitSNXWeightedPool()\":{\"notice\":\"Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"sweepDoubleEntrypointToken(address[])\":{\"notice\":\"Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given token.\"},\"sweepSNXsBTC()\":{\"notice\":\"Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\"}},\"notice\":\"This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix tokens). It doesn't use the standard relayer architecture to simplify the code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":\"DoubleEntrypointFixRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\":{\"keccak256\":\"0xebc6984a89c85fa96037bf7aaceb9439494ee0edfe836fc45327ff2567f744af\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d1734395d4a6657f420baeb1d871169eec42df72fb208a2def223b941d60eb3\",\"dweb:/ipfs/QmUkv1zrvhm42SazeUMhF7fm2iNfoJWwkEvtva33U8pSFX\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":{\"keccak256\":\"0xfdba1eecf46a85f5dd250ba8c27e9f5495677f1fca380c09d1b6f6b3c9d4aed3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b79d37733121b67ac700e40f159859d2659270a8d5a01d2bb43d900cd3a3a705\",\"dweb:/ipfs/QmbF3eM5ct61ejj1AguHWUwPMfx53Vhz4Y3pq25jA6ev62\"]}},\"version\":1}"}},"contracts/test/MockAaveAMPLToken.sol":{"MockAaveAMPLToken":{"abi":[{"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"INITIAL_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNDERLYING_ASSET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialRate","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017bd380380620017bd833981810160405260608110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011157600080fd5b9083019060208201858111156200012757600080fd5b82516401000000008111828201881017156200014257600080fd5b82525081516020918201929091019080838360005b838110156200017157818101518382015260200162000157565b50505050905090810190601f1680156200019f5780820380516001836020036101000a031916815260200191505b5060405250505082828281818160039080519060200190620001c392919062000219565b508051620001d990600490602084019062000219565b5050600580546001600160a01b0390951661010002610100600160a81b031960ff19909616601217959095169490941790935550620002b5945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025c57805160ff19168380011785556200028c565b828001600101855582156200028c579182015b828111156200028c5782518255916020019190600101906200026f565b506200029a9291506200029e565b5090565b5b808211156200029a57600081556001016200029f565b6114f880620002c56000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806395d89b411161010f578063b6b55f25116100a2578063dd62ed3e11610071578063dd62ed3e1461063b578063ea785a5e14610676578063ed0287c0146106af578063fe4b84df146106cc576101e5565b8063b6b55f25146105aa578063c70920bc146105c7578063ca9add8f146105cf578063da1919b314610602576101e5565b8063a4fa9568116100de578063a4fa956814610521578063a9059cbb14610554578063aab3b7db1461058d578063b16a19de14610447576101e5565b806395d89b41146104bb5780639975038c146104c3578063a0712d68146104cb578063a457c2d7146104e8576101e5565b8063313ce567116101875780636f307dc3116101565780636f307dc31461044757806370a0823114610478578063853828b6146104ab5780638eb4f434146104b3576101e5565b8063313ce567146103a057806339509351146103be5780633af9e669146103f757806342966c681461042a576101e5565b8063205c2878116101c3578063205c2878146102ce57806323b872dd146103075780632e1a7d4d1461034a5780632f4f21e214610367576101e5565b806306fdde03146101ea578063095ea7b31461026757806318160ddd146102b4575b600080fd5b6101f26106eb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a06004803603604081101561027d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079f565b604080519115158252519081900360200190f35b6102bc6107b5565b60408051918252519081900360200190f35b6102bc600480360360408110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107bb565b6102a06004803603606081101561031d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107ec565b6102bc6004803603602081101561036057600080fd5b503561084d565b6102bc6004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610870565b6103a861088d565b6040805160ff9092168252519081900360200190f35b6102a0600480360360408110156103d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b6102bc6004803603602081101561040d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108d9565b6102bc6004803603602081101561044057600080fd5b50356108fc565b61044f610919565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102bc6004803603602081101561048e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661093a565b6102bc610962565b6102bc610992565b6101f2610998565b6102bc610a17565b6102bc600480360360208110156104e157600080fd5b5035610a47565b6102a0600480360360408110156104fe57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a64565b6102bc6004803603602081101561053757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aaa565b6102a06004803603604081101561056a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ad4565b6102bc600480360360208110156105a357600080fd5b5035610ae1565b6102bc600480360360208110156105c057600080fd5b5035610aef565b6102bc610b0c565b6102bc600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b1b565b6102bc6004803603604081101561061857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b4c565b6102bc6004803603604081101561065157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b69565b6102bc6004803603604081101561068c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ba1565b6102bc600480360360208110156106c557600080fd5b5035610bbe565b6106e9600480360360208110156106e257600080fd5b5035610bcc565b005b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b60006107ac338484610c0e565b50600192915050565b60025490565b6000806107d7836107ca610c7d565b6107d26107b5565b610d24565b90506107e533858584610d3a565b9392505050565b60006107f9848484610dcc565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461084391869161083e908661019e610ef5565b610c0e565b5060019392505050565b60008061085c836107ca610c7d565b905061086a33338584610d3a565b92915050565b60008061087f836107ca610c7d565b90506107e533858584610f0b565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107ac91859061083e9086610f98565b600061086a6108e78361093a565b6108ef610c7d565b6108f76107b5565b610faa565b60008061090b836108ef610c7d565b905061086a33338386610d3a565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60008061096e3361093a565b9050600061097e826108ef610c7d565b905061098c33338385610d3a565b50905090565b6103e881565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107955780601f1061076a57610100808354040283529160200191610795565b600080610a233361093a565b90506000610a33826108ef610c7d565b9050610a4133338385610d3a565b91505090565b600080610a56836108ef610c7d565b905061086a33338386610f0b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107ac91859061083e908661019f610ef5565b600080610ab63361093a565b90506000610ac6826108ef610c7d565b90506107e533858385610d3a565b60006107ac338484610dcc565b600061086a826108ef610c7d565b600080610afe836107ca610c7d565b905061086a33338584610f0b565b6000610b16610c7d565b905090565b600080610b273361093a565b90506000610b37826108ef610c7d565b9050610b4533858385610d3a565b5092915050565b600080610b5b836108ef610c7d565b90506107e533858386610f0b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600080610bb0836108ef610c7d565b90506107e533858386610d3a565b600061086a826107ca610c7d565b6005546103e882810291610c009161010090910473ffffffffffffffffffffffffffffffffffffffff169033903090610fb7565b610c0a308261104c565b5050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051905090565b60008282850281610d3157fe5b04949350505050565b60008111610d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611467602e913960400191505060405180910390fd5b610d9d8482611105565b600554610dc690610100900473ffffffffffffffffffffffffffffffffffffffff1684846111f5565b50505050565b610df073ffffffffffffffffffffffffffffffffffffffff84161515610198611287565b610e1473ffffffffffffffffffffffffffffffffffffffff83161515610199611287565b610e1f838383611282565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e5290826101a0610ef5565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e8e9082610f98565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f048484111583611287565b5050900390565b60008111610f64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611495602e913960400191505060405180910390fd5b600554610f8e90610100900473ffffffffffffffffffffffffffffffffffffffff16853085610fb7565b610dc6838261104c565b60008282016107e58482101583611287565b60008183850281610d3157fe5b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610dc6908590611295565b61105860008383611282565b61107261106d826110676107b5565b90610f98565b6113ab565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110a29082610f98565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61112973ffffffffffffffffffffffffffffffffffffffff8316151561019b611287565b61113582600083611282565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461116890826101b2610ef5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556111a361106d8261119d6107b5565b906113b0565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611282908490611295565b505050565b81610c0a57610c0a816113be565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112fe57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112c1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611360576040519150601f19603f3d011682016040523d82523d6000602084013e611365565b606091505b5091509150600082141561137d573d6000803e3d6000fd5b610dc68151600014806113a357508180602001905160208110156113a057600080fd5b50515b6101a2611287565b600255565b60006107e583836001610ef5565b6113e8817f42414c00000000000000000000000000000000000000000000000000000000006113eb565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206275726e556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206d696e74a26469706673582212208b28e4044165f8cba4daf66006adf1730cb80f7c59e67d3491c5887eab4227f064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17BD CODESIZE SUB DUP1 PUSH3 0x17BD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x171 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP DUP3 DUP3 DUP3 DUP2 DUP2 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x1C3 SWAP3 SWAP2 SWAP1 PUSH3 0x219 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D9 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x219 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP7 AND PUSH1 0x12 OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE POP PUSH3 0x2B5 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x25C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x28C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x28C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x28C JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x26F JUMP JUMPDEST POP PUSH3 0x29A SWAP3 SWAP2 POP PUSH3 0x29E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x29A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x29F JUMP JUMPDEST PUSH2 0x14F8 DUP1 PUSH3 0x2C5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0xEA785A5E EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xED0287C0 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0xFE4B84DF EQ PUSH2 0x6CC JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xC70920BC EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xCA9ADD8F EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xDA1919B3 EQ PUSH2 0x602 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xA4FA9568 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA4FA9568 EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xAAB3B7DB EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x447 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4E8 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x853828B6 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x8EB4F434 EQ PUSH2 0x4B3 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x42A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x205C2878 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x205C2878 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x367 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BB JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x84D JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x870 JUMP JUMPDEST PUSH2 0x3A8 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8FC JUMP JUMPDEST PUSH2 0x44F PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x93A JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x962 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x992 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xA17 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA64 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAA JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x6E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBCC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x795 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x795 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x778 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AC CALLER DUP5 DUP5 PUSH2 0xC0E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D7 DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST PUSH2 0x7D2 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0xD24 JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP6 DUP5 PUSH2 0xD3A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 DUP5 PUSH2 0xDCC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x843 SWAP2 DUP7 SWAP2 PUSH2 0x83E SWAP1 DUP7 PUSH2 0x19E PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP6 DUP5 PUSH2 0xD3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87F DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP6 DUP5 PUSH2 0xF0B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7AC SWAP2 DUP6 SWAP1 PUSH2 0x83E SWAP1 DUP7 PUSH2 0xF98 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A PUSH2 0x8E7 DUP4 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST PUSH2 0x8F7 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0xFAA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x90B DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP4 DUP7 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x96E CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x97E DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x98C CALLER CALLER DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x795 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x795 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA23 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA33 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0xA41 CALLER CALLER DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA56 DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP4 DUP7 PUSH2 0xF0B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7AC SWAP2 DUP6 SWAP1 PUSH2 0x83E SWAP1 DUP7 PUSH2 0x19F PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAB6 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAC6 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AC CALLER DUP5 DUP5 PUSH2 0xDCC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFE DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP6 DUP5 PUSH2 0xF0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB16 PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB27 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB37 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0xB45 CALLER DUP6 DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB5B DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP7 PUSH2 0xF0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBB0 DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP7 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A DUP3 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x3E8 DUP3 DUP2 MUL SWAP2 PUSH2 0xC00 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH2 0xC0A ADDRESS DUP3 PUSH2 0x104C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP6 MUL DUP2 PUSH2 0xD31 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD93 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1467 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD9D DUP5 DUP3 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xDC6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP5 PUSH2 0x11F5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xDF0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0xE14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0xE1F DUP4 DUP4 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE52 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE8E SWAP1 DUP3 PUSH2 0xF98 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF04 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1287 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1495 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xF8E SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 ADDRESS DUP6 PUSH2 0xFB7 JUMP JUMPDEST PUSH2 0xDC6 DUP4 DUP3 PUSH2 0x104C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7E5 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1287 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 DUP6 MUL DUP2 PUSH2 0xD31 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xDC6 SWAP1 DUP6 SWAP1 PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x1058 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x1072 PUSH2 0x106D DUP3 PUSH2 0x1067 PUSH2 0x7B5 JUMP JUMPDEST SWAP1 PUSH2 0xF98 JUMP JUMPDEST PUSH2 0x13AB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10A2 SWAP1 DUP3 PUSH2 0xF98 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1129 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1135 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1168 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x11A3 PUSH2 0x106D DUP3 PUSH2 0x119D PUSH2 0x7B5 JUMP JUMPDEST SWAP1 PUSH2 0x13B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1282 SWAP1 DUP5 SWAP1 PUSH2 0x1295 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC0A JUMPI PUSH2 0xC0A DUP2 PUSH2 0x13BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12FE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1360 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1365 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x137D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xDC6 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13A3 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1287 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP4 DUP4 PUSH1 0x1 PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0x13E8 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x13EB JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID SSTORE PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206275726E55 PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206D696E74A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0x28 0xE4 DIV COINBASE PUSH6 0xF8CBA4DAF660 MOD 0xAD CALL PUSH20 0xCB80F7C59E67D3491C5887EAB4227F064736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"924:341:111:-:0;;;988:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:157:111;;;;;;;;;;-1:-1:-1;988:157:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:157:111;;;;;;;;;;-1:-1:-1;988:157:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1113:11;1126:5;1133:7;1344:5:130;1351:7;2126:5:71;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;;;;1370:25:130;;::::1;2168:14:71::0;1370:25:130::1;-1:-1:-1::0;;;;;;;;2168:14:71;;;2180:2;2168:14;1370:25:130;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;924:341:111;;-1:-1:-1;;;;;924:341:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:341:111;;;-1:-1:-1;924:341:111;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101e55760003560e01c806395d89b411161010f578063b6b55f25116100a2578063dd62ed3e11610071578063dd62ed3e1461063b578063ea785a5e14610676578063ed0287c0146106af578063fe4b84df146106cc576101e5565b8063b6b55f25146105aa578063c70920bc146105c7578063ca9add8f146105cf578063da1919b314610602576101e5565b8063a4fa9568116100de578063a4fa956814610521578063a9059cbb14610554578063aab3b7db1461058d578063b16a19de14610447576101e5565b806395d89b41146104bb5780639975038c146104c3578063a0712d68146104cb578063a457c2d7146104e8576101e5565b8063313ce567116101875780636f307dc3116101565780636f307dc31461044757806370a0823114610478578063853828b6146104ab5780638eb4f434146104b3576101e5565b8063313ce567146103a057806339509351146103be5780633af9e669146103f757806342966c681461042a576101e5565b8063205c2878116101c3578063205c2878146102ce57806323b872dd146103075780632e1a7d4d1461034a5780632f4f21e214610367576101e5565b806306fdde03146101ea578063095ea7b31461026757806318160ddd146102b4575b600080fd5b6101f26106eb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a06004803603604081101561027d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561079f565b604080519115158252519081900360200190f35b6102bc6107b5565b60408051918252519081900360200190f35b6102bc600480360360408110156102e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107bb565b6102a06004803603606081101561031d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107ec565b6102bc6004803603602081101561036057600080fd5b503561084d565b6102bc6004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610870565b6103a861088d565b6040805160ff9092168252519081900360200190f35b6102a0600480360360408110156103d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b6102bc6004803603602081101561040d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108d9565b6102bc6004803603602081101561044057600080fd5b50356108fc565b61044f610919565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102bc6004803603602081101561048e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661093a565b6102bc610962565b6102bc610992565b6101f2610998565b6102bc610a17565b6102bc600480360360208110156104e157600080fd5b5035610a47565b6102a0600480360360408110156104fe57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a64565b6102bc6004803603602081101561053757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aaa565b6102a06004803603604081101561056a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ad4565b6102bc600480360360208110156105a357600080fd5b5035610ae1565b6102bc600480360360208110156105c057600080fd5b5035610aef565b6102bc610b0c565b6102bc600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b1b565b6102bc6004803603604081101561061857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b4c565b6102bc6004803603604081101561065157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b69565b6102bc6004803603604081101561068c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ba1565b6102bc600480360360208110156106c557600080fd5b5035610bbe565b6106e9600480360360208110156106e257600080fd5b5035610bcc565b005b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050505050905090565b60006107ac338484610c0e565b50600192915050565b60025490565b6000806107d7836107ca610c7d565b6107d26107b5565b610d24565b90506107e533858584610d3a565b9392505050565b60006107f9848484610dcc565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461084391869161083e908661019e610ef5565b610c0e565b5060019392505050565b60008061085c836107ca610c7d565b905061086a33338584610d3a565b92915050565b60008061087f836107ca610c7d565b90506107e533858584610f0b565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107ac91859061083e9086610f98565b600061086a6108e78361093a565b6108ef610c7d565b6108f76107b5565b610faa565b60008061090b836108ef610c7d565b905061086a33338386610d3a565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60008061096e3361093a565b9050600061097e826108ef610c7d565b905061098c33338385610d3a565b50905090565b6103e881565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107955780601f1061076a57610100808354040283529160200191610795565b600080610a233361093a565b90506000610a33826108ef610c7d565b9050610a4133338385610d3a565b91505090565b600080610a56836108ef610c7d565b905061086a33338386610f0b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107ac91859061083e908661019f610ef5565b600080610ab63361093a565b90506000610ac6826108ef610c7d565b90506107e533858385610d3a565b60006107ac338484610dcc565b600061086a826108ef610c7d565b600080610afe836107ca610c7d565b905061086a33338584610f0b565b6000610b16610c7d565b905090565b600080610b273361093a565b90506000610b37826108ef610c7d565b9050610b4533858385610d3a565b5092915050565b600080610b5b836108ef610c7d565b90506107e533858386610f0b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600080610bb0836108ef610c7d565b90506107e533858386610d3a565b600061086a826107ca610c7d565b6005546103e882810291610c009161010090910473ffffffffffffffffffffffffffffffffffffffff169033903090610fb7565b610c0a308261104c565b5050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051905090565b60008282850281610d3157fe5b04949350505050565b60008111610d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611467602e913960400191505060405180910390fd5b610d9d8482611105565b600554610dc690610100900473ffffffffffffffffffffffffffffffffffffffff1684846111f5565b50505050565b610df073ffffffffffffffffffffffffffffffffffffffff84161515610198611287565b610e1473ffffffffffffffffffffffffffffffffffffffff83161515610199611287565b610e1f838383611282565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e5290826101a0610ef5565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e8e9082610f98565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f048484111583611287565b5050900390565b60008111610f64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611495602e913960400191505060405180910390fd5b600554610f8e90610100900473ffffffffffffffffffffffffffffffffffffffff16853085610fb7565b610dc6838261104c565b60008282016107e58482101583611287565b60008183850281610d3157fe5b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610dc6908590611295565b61105860008383611282565b61107261106d826110676107b5565b90610f98565b6113ab565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110a29082610f98565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61112973ffffffffffffffffffffffffffffffffffffffff8316151561019b611287565b61113582600083611282565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461116890826101b2610ef5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556111a361106d8261119d6107b5565b906113b0565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611282908490611295565b505050565b81610c0a57610c0a816113be565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112fe57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112c1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611360576040519150601f19603f3d011682016040523d82523d6000602084013e611365565b606091505b5091509150600082141561137d573d6000803e3d6000fd5b610dc68151600014806113a357508180602001905160208110156113a057600080fd5b50515b6101a2611287565b600255565b60006107e583836001610ef5565b6113e8817f42414c00000000000000000000000000000000000000000000000000000000006113eb565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206275726e556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206d696e74a26469706673582212208b28e4044165f8cba4daf66006adf1730cb80f7c59e67d3491c5887eab4227f064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0xEA785A5E EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xED0287C0 EQ PUSH2 0x6AF JUMPI DUP1 PUSH4 0xFE4B84DF EQ PUSH2 0x6CC JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xC70920BC EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xCA9ADD8F EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0xDA1919B3 EQ PUSH2 0x602 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xA4FA9568 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA4FA9568 EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xAAB3B7DB EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x447 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4E8 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x853828B6 EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x8EB4F434 EQ PUSH2 0x4B3 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x42A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x205C2878 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x205C2878 EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x367 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x79F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BB JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x84D JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x870 JUMP JUMPDEST PUSH2 0x3A8 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8FC JUMP JUMPDEST PUSH2 0x44F PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x93A JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x962 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x992 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xA17 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA47 JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA64 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAA JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x2BC PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB1B JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB69 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x68C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x2BC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x6E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBCC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x795 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x795 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x778 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AC CALLER DUP5 DUP5 PUSH2 0xC0E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7D7 DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST PUSH2 0x7D2 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0xD24 JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP6 DUP5 PUSH2 0xD3A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP5 DUP5 DUP5 PUSH2 0xDCC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x843 SWAP2 DUP7 SWAP2 PUSH2 0x83E SWAP1 DUP7 PUSH2 0x19E PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP6 DUP5 PUSH2 0xD3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87F DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP6 DUP5 PUSH2 0xF0B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7AC SWAP2 DUP6 SWAP1 PUSH2 0x83E SWAP1 DUP7 PUSH2 0xF98 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A PUSH2 0x8E7 DUP4 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST PUSH2 0x8F7 PUSH2 0x7B5 JUMP JUMPDEST PUSH2 0xFAA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x90B DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP4 DUP7 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x96E CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x97E DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x98C CALLER CALLER DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x795 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x76A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x795 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA23 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA33 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0xA41 CALLER CALLER DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA56 DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP4 DUP7 PUSH2 0xF0B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7AC SWAP2 DUP6 SWAP1 PUSH2 0x83E SWAP1 DUP7 PUSH2 0x19F PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAB6 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAC6 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7AC CALLER DUP5 DUP5 PUSH2 0xDCC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFE DUP4 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x86A CALLER CALLER DUP6 DUP5 PUSH2 0xF0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB16 PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB27 CALLER PUSH2 0x93A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB37 DUP3 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0xB45 CALLER DUP6 DUP4 DUP6 PUSH2 0xD3A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB5B DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP7 PUSH2 0xF0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBB0 DUP4 PUSH2 0x8EF PUSH2 0xC7D JUMP JUMPDEST SWAP1 POP PUSH2 0x7E5 CALLER DUP6 DUP4 DUP7 PUSH2 0xD3A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86A DUP3 PUSH2 0x7CA PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x3E8 DUP3 DUP2 MUL SWAP2 PUSH2 0xC00 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH2 0xC0A ADDRESS DUP3 PUSH2 0x104C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP6 MUL DUP2 PUSH2 0xD31 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD93 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1467 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD9D DUP5 DUP3 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xDC6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP5 PUSH2 0x11F5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xDF0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0xE14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0xE1F DUP4 DUP4 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE52 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE8E SWAP1 DUP3 PUSH2 0xF98 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF04 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1287 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1495 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xF8E SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 ADDRESS DUP6 PUSH2 0xFB7 JUMP JUMPDEST PUSH2 0xDC6 DUP4 DUP3 PUSH2 0x104C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7E5 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1287 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 DUP6 MUL DUP2 PUSH2 0xD31 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xDC6 SWAP1 DUP6 SWAP1 PUSH2 0x1295 JUMP JUMPDEST PUSH2 0x1058 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH2 0x1072 PUSH2 0x106D DUP3 PUSH2 0x1067 PUSH2 0x7B5 JUMP JUMPDEST SWAP1 PUSH2 0xF98 JUMP JUMPDEST PUSH2 0x13AB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10A2 SWAP1 DUP3 PUSH2 0xF98 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1129 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x1135 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1282 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1168 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x11A3 PUSH2 0x106D DUP3 PUSH2 0x119D PUSH2 0x7B5 JUMP JUMPDEST SWAP1 PUSH2 0x13B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1282 SWAP1 DUP5 SWAP1 PUSH2 0x1295 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC0A JUMPI PUSH2 0xC0A DUP2 PUSH2 0x13BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12FE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1360 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1365 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x137D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xDC6 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13A3 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1287 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 DUP4 DUP4 PUSH1 0x1 PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0x13E8 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x13EB JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID SSTORE PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206275726E55 PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206D696E74A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 0x28 0xE4 DIV COINBASE PUSH6 0xF8CBA4DAF660 MOD 0xAD CALL PUSH20 0xCB80F7C59E67D3491C5887EAB4227F064736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"924:341:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;4157:266:130;;;;;;;;;;;;;;;;-1:-1:-1;4157:266:130;;;;;;;;;:::i;5488:386:71:-;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3891:260:130:-;;;;;;;;;;;;;;;;-1:-1:-1;3891:260:130;;:::i;3620:265::-;;;;;;;;;;;;;;;;-1:-1:-1;3620:265:130;;;;;;;;;:::i;3156:81:71:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;5260:188:130:-;;;;;;;;;;;;;;;;-1:-1:-1;5260:188:130;;;;:::i;2232:254::-;;;;;;;;;;;;;;;;-1:-1:-1;2232:254:130;;:::i;5033:98::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4022:117:71;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;4429:294:130:-;;;:::i;1143:47::-;;;:::i;2448:85:71:-;;;:::i;2758:291:130:-;;;:::i;1707:253::-;;;;;;;;;;;;;;;;-1:-1:-1;1707:253:130;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;3055:295:130:-;;;;;;;;;;;;;;;;-1:-1:-1;3055:295:130;;;;:::i;4342:170:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;5643:179:130:-;;;;;;;;;;;;;;;;-1:-1:-1;5643:179:130;;:::i;3356:258::-;;;;;;;;;;;;;;;;-1:-1:-1;3356:258:130;;:::i;5137:117::-;;;:::i;4729:298::-;;;;;;;;;;;;;;;;-1:-1:-1;4729:298:130;;;;:::i;1966:260::-;;;;;;;;;;;;;;;;-1:-1:-1;1966:260:130;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;2492:260:130:-;;;;;;;;;;;;;;;;-1:-1:-1;2492:260:130;;;;;;;;;:::i;5454:183::-;;;;;;;;;;;;;;;;-1:-1:-1;5454:183:130;;:::i;1408:293::-;;;;;;;;;;;;;;;;-1:-1:-1;1408:293:130;;:::i;:::-;;2254:81:71;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;4157:266:130:-;4233:7;4252:14;4269:72;4291:7;4300:25;:23;:25::i;:::-;4327:13;:11;:13::i;:::-;4269:21;:72::i;:::-;4252:89;;4351:42;4361:10;4373:2;4377:7;4386:6;4351:9;:42::i;:::-;4410:6;4157:266;-1:-1:-1;;;4157:266:130:o;5488:386:71:-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3891:260:130:-;3953:7;3972:14;3989:72;4011:7;4020:25;:23;:25::i;3989:72::-;3972:89;;4071:50;4081:10;4093;4105:7;4114:6;4071:9;:50::i;:::-;4138:6;3891:260;-1:-1:-1;;3891:260:130:o;3620:265::-;3696:7;3715:14;3732:72;3754:7;3763:25;:23;:25::i;3732:72::-;3715:89;;3814:41;3823:10;3835:2;3839:7;3848:6;3814:8;:41::i;3156:81:71:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;5260:188:130:-;5336:7;5362:79;5382:16;5392:5;5382:9;:16::i;:::-;5400:25;:23;:25::i;:::-;5427:13;:11;:13::i;:::-;5362:19;:79::i;2232:254::-;2289:7;2308:15;2326:69;2346:6;2354:25;:23;:25::i;2326:69::-;2308:87;;2405:50;2415:10;2427;2439:7;2448:6;2405:9;:50::i;5033:98::-;5113:11;;;;;;;;5033:98::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;4429:294:130:-;4479:7;4498:14;4515:21;4525:10;4515:9;:21::i;:::-;4498:38;;4546:15;4564:69;4584:6;4592:25;:23;:25::i;4564:69::-;4546:87;;4643:50;4653:10;4665;4677:7;4686:6;4643:9;:50::i;:::-;-1:-1:-1;4710:6:130;-1:-1:-1;4429:294:130;:::o;1143:47::-;1185:5;1143:47;:::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;2758:291:130;2804:7;2823:14;2840:21;2850:10;2840:9;:21::i;:::-;2823:38;;2871:15;2889:69;2909:6;2917:25;:23;:25::i;2889:69::-;2871:87;;2968:50;2978:10;2990;3002:7;3011:6;2968:9;:50::i;:::-;3035:7;-1:-1:-1;;2758:291:130;:::o;1707:253::-;1764:7;1783:15;1801:69;1821:6;1829:25;:23;:25::i;1801:69::-;1783:87;;1880:49;1889:10;1901;1913:7;1922:6;1880:8;:49::i;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;3055:295:130:-;3113:7;3132:14;3149:21;3159:10;3149:9;:21::i;:::-;3132:38;;3180:15;3198:69;3218:6;3226:25;:23;:25::i;3198:69::-;3180:87;;3277:42;3287:10;3299:2;3303:7;3312:6;3277:9;:42::i;4342:170:71:-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;5643:179:130:-;5720:7;5746:69;5766:6;5774:25;:23;:25::i;3356:258::-;3417:7;3436:14;3453:72;3475:7;3484:25;:23;:25::i;3453:72::-;3436:89;;3535:49;3544:10;3556;3568:7;3577:6;3535:8;:49::i;5137:117::-;5196:7;5222:25;:23;:25::i;:::-;5215:32;;5137:117;:::o;4729:298::-;4791:7;4810:14;4827:21;4837:10;4827:9;:21::i;:::-;4810:38;;4858:15;4876:69;4896:6;4904:25;:23;:25::i;4876:69::-;4858:87;;4955:42;4965:10;4977:2;4981:7;4990:6;4955:9;:42::i;:::-;-1:-1:-1;5014:6:130;4729:298;-1:-1:-1;;4729:298:130:o;1966:260::-;2038:7;2057:15;2075:69;2095:6;2103:25;:23;:25::i;2075:69::-;2057:87;;2154:41;2163:10;2175:2;2179:7;2188:6;2154:8;:41::i;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2492:260:130:-;2563:7;2582:15;2600:69;2620:6;2628:25;:23;:25::i;2600:69::-;2582:87;;2679:42;2689:10;2701:2;2705:7;2714:6;2679:9;:42::i;5454:183::-;5532:7;5558:72;5580:7;5589:25;:23;:25::i;1408:293::-;1533:11;;1185:5;1487:29;;;;1526:126;;1533:11;;;;;;;1576:10;;1608:4;;1526:36;:126::i;:::-;1662:32;1676:4;1683:10;1662:5;:32::i;:::-;1408:293;;:::o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;6450:134:130:-;6540:11;;6533:44;;;;;;6571:4;6533:44;;;;;;-1:-1:-1;;6540:11:130;;;;;;6533:29;;:44;;;;;;;;;;;;;;6540:11;6533:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6533:44:130;;-1:-1:-1;6450:134:130;:::o;6590:222::-;6737:7;6789:16;6774:11;6764:7;:21;6763:42;;;;;;;6590:222;-1:-1:-1;;;;6590:222:130:o;6148:296::-;6299:1;6290:6;:10;6282:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:19;6368:4;6374:6;6362:5;:19::i;:::-;6399:11;;6392:45;;6399:11;;;;;6425:2;6429:7;6392:32;:45::i;:::-;6148:296;;;;:::o;7753:559:71:-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;5828:314:130:-;5978:1;5969:6;:10;5961:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6048:11;;6041:66;;6048:11;;;;;6078:4;6092;6099:7;6041:36;:66::i;:::-;6118:17;6124:2;6128:6;6118:5;:17::i;966:167:78:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;6818:218:130:-;6962:7;7018:11;6998:16;6989:6;:25;6988:41;;;;1734:250:77;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;:::-;1514:214;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"INITIAL_DEPOSIT()":"8eb4f434","UNDERLYING_ASSET_ADDRESS()":"b16a19de","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","increaseAllowance(address,uint256)":"39509351","initialize(uint256)":"fe4b84df","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","totalUnderlying()":"c70920bc","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INITIAL_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialRate\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"returns the address of the aToken's underlying asset\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockAaveAMPLToken.sol\":\"MockAaveAMPLToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IAToken.sol\":{\"keccak256\":\"0x77558371331d0989253759c9cd8e9de2c893276e6cc3b04d9162d437f4538725\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cf6a3a2920f9164db48114538eb68f8bc08ccb904ea1bb7802176e5ee1aefed7\",\"dweb:/ipfs/QmcQPmTLcGgBwsG5iByY1QBAyrovDvg7qpPGp2AEu2sF1k\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockAaveAMPLToken.sol\":{\"keccak256\":\"0x31ec45a07230dc647e544308f2457e7a96973b6317c8141459f62206ae732414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89dffc6997668afeca8683af7b2802628e305ab7f98f6ddb042e380c7ef8b4c6\",\"dweb:/ipfs/QmYgA8sZCK4Rk3VQkFycaYZSh8iS74DL8zyQoxThCatKZH\"]},\"contracts/test/MockUnbuttonERC20.sol\":{\"keccak256\":\"0x29425623db437987782c91421fe7b4f19875b4c5a220f70723f63ff2104dffb1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a304bd9775269a943bcd2e072ece864e6350213df1702c87d4596e4a49b3962b\",\"dweb:/ipfs/QmWj9nAAWxaEv1sp4KPjb8ugkdyYz5pvWxmMBvic1ePgRt\"]}},\"version\":1}"}},"contracts/test/MockBaseRelayerLibrary.sol":{"MockBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"version","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"input","type":"bytes"}],"name":"bytesTunnel","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"isChainedReference","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b50604051620019bd380380620019bd833981016040819052620000599162000154565b8181816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009557600080fd5b505afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d091906200020e565b6001600160601b0319606091821b81166080529083901b1660a052604051829030908390620000ff9062000146565b6200010d9392919062000234565b604051809103906000f0801580156200012a573d6000803e3d6000fd5b5060601b6001600160601b03191660c05250620002cf92505050565b6109f68062000fc783390190565b6000806040838503121562000167578182fd5b82516200017481620002b6565b60208401519092506001600160401b038082111562000191578283fd5b818501915085601f830112620001a5578283fd5b815181811115620001b4578384fd5b604051601f8201601f191681016020018381118282101715620001d5578586fd5b604052818152838201602001881015620001ed578485fd5b6200020082602083016020870162000283565b809450505050509250929050565b60006020828403121562000220578081fd5b81516200022d81620002b6565b9392505050565b600060018060a01b0380861683528085166020840152506060604083015282518060608401526200026d81608085016020870162000283565b601f01601f191691909101608001949350505050565b60005b83811015620002a057818101518382015260200162000286565b83811115620002b0576000848401525b50505050565b6001600160a01b0381168114620002cc57600080fd5b50565b60805160601c60a05160601c60c05160601c60e051610cb96200030e600039806107ac5250806101f75250806103345280610364525050610cb96000f3fe6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e53114610150578063ec6edf0014610163578063f3cab6851461019057610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b636600461097d565b6101b0565b6040516100c89190610b93565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec366004610a41565b6101b3565b005b3480156100ff57600080fd5b506101086101f5565b6040516100c89190610bc6565b6100f16101233660046108d4565b610219565b34801561013457600080fd5b50610108610362565b6100f161014b366004610a16565b610386565b6100f161015e366004610a71565b6103cd565b34801561016f57600080fd5b5061018361017e366004610a41565b6103d7565b6040516100c89190610b88565b6101a361019e366004610a41565b6103e8565b6040516100c89190610c1e565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb0787526101dd826103fa565b6040516101ea9190610c1e565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff841630148061023b575082155b61027a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027190610be7565b60405180910390fd5b606063fa6e671d60e01b33868660405160240161029993929190610ae1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251610308928691869101610aae565b60408051601f19818403018152919052905061035a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610425565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61038f816104aa565b156103a05761039d816103fa565b90505b6103c96103ab610362565b73ffffffffffffffffffffffffffffffffffffffff841690836104f1565b5050565b6103c9828261064f565b60006103e2826104aa565b92915050565b60006103f382610662565b9392505050565b600080600061040884610662565b9150915061041584610679565b156103f357600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104509190610a92565b6000604051808303816000865af19150503d806000811461048d576040519150601f19603f3d011682016040523d82523d6000602084013e610492565b606091505b50915091506104a182826106c0565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b80158015906105a257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061054f9030908690600401610b12565b60206040518083038186803b15801561056757600080fd5b505afa15801561057b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059f9190610a59565b15155b1561062b5761062b8363095ea7b360e01b8460006040516024016105c7929190610b39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106ea565b61064a8363095ea7b360e01b84846040516024016105c7929190610b62565b505050565b600061065a8361079d565b919091555050565b60008061066e8361079d565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b606082156106cf5750806103e2565b8151156106df5781518083602001fd5b6103e26101ae6107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516107139190610a92565b6000604051808303816000865af19150503d8060008114610750576040519150601f19603f3d011682016040523d82523d6000602084013e610755565b606091505b5091509150600082141561076d573d6000803e3d6000fd5b61079781516000148061078f57508180602001905181019061078f9190610961565b6101a2610828565b50505050565b600060016107aa83610836565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016107dc929190610ad3565b60408051808303601f1901815291905280516020909101200392915050565b610825817f42414c0000000000000000000000000000000000000000000000000000000000610859565b50565b816103c9576103c9816107fb565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600080600080606085870312156108e9578384fd5b84356108f481610c53565b9350602085013561090481610c75565b9250604085013567ffffffffffffffff80821115610920578384fd5b818701915087601f830112610933578384fd5b813581811115610941578485fd5b886020828501011115610952578485fd5b95989497505060200194505050565b600060208284031215610972578081fd5b81516103f381610c75565b6000602080838503121561098f578182fd5b823567ffffffffffffffff808211156109a6578384fd5b818501915085601f8301126109b9578384fd5b8135818111156109c7578485fd5b60405184601f19601f84011682010181811084821117156109e6578687fd5b60405281815283820185018810156109fc578586fd5b818585018683013790810190930193909352509392505050565b60008060408385031215610a28578182fd5b8235610a3381610c53565b946020939093013593505050565b600060208284031215610a52578081fd5b5035919050565b600060208284031215610a6a578081fd5b5051919050565b60008060408385031215610a83578182fd5b50508035926020909101359150565b60008251610aa4818460208701610c27565b9190910192915050565b60008451610ac0818460208901610c27565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152610bb2816040850160208701610c27565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610c42578181015183820152602001610c2a565b838111156107975750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b801515811461082557600080fdfea2646970667358221220668a52160cff9c163dfe267e1373627a8c463f8a9e0b79fc83f18ea10a96443764736f6c6343000701003360c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x19BD CODESIZE SUB DUP1 PUSH3 0x19BD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x154 JUMP JUMPDEST DUP2 DUP2 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD0 SWAP2 SWAP1 PUSH3 0x20E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 ADDRESS SWAP1 DUP4 SWAP1 PUSH3 0xFF SWAP1 PUSH3 0x146 JUMP JUMPDEST PUSH3 0x10D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x234 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x12A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH3 0x2CF SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x9F6 DUP1 PUSH3 0xFC7 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x167 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x174 DUP2 PUSH3 0x2B6 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x191 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1A5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1B4 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x1D5 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH3 0x1ED JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH3 0x200 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x283 JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x220 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x22D DUP2 PUSH3 0x2B6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP4 MSTORE DUP1 DUP6 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH3 0x26D DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x283 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x2A0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x286 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x2B0 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0xCB9 PUSH3 0x30E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7AC MSTORE POP DUP1 PUSH2 0x1F7 MSTORE POP DUP1 PUSH2 0x334 MSTORE DUP1 PUSH2 0x364 MSTORE POP POP PUSH2 0xCB9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x190 JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x97D JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x219 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x3CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x3D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB88 JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xC1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1DD DUP3 PUSH2 0x3FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EA SWAP2 SWAP1 PUSH2 0xC1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x23B JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x271 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x299 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x308 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x35A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x425 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x4AA JUMP JUMPDEST ISZERO PUSH2 0x3A0 JUMPI PUSH2 0x39D DUP2 PUSH2 0x3FA JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x3C9 PUSH2 0x3AB PUSH2 0x362 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x4F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3C9 DUP3 DUP3 PUSH2 0x64F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E2 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP3 PUSH2 0x662 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x408 DUP5 PUSH2 0x662 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x415 DUP5 PUSH2 0x679 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x450 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x48D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x492 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1 DUP3 DUP3 PUSH2 0x6C0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5A2 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x54F SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB12 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0xA59 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x62B JUMPI PUSH2 0x62B DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x64A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xB62 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65A DUP4 PUSH2 0x79D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66E DUP4 PUSH2 0x79D JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x6CF JUMPI POP DUP1 PUSH2 0x3E2 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x6DF JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3E2 PUSH2 0x1AE PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x713 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x750 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x755 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x76D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x797 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x78F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x78F SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x828 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x7AA DUP4 PUSH2 0x836 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7DC SWAP3 SWAP2 SWAP1 PUSH2 0xAD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x825 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x859 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x3C9 JUMPI PUSH2 0x3C9 DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0xC53 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x904 DUP2 PUSH2 0xC75 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x920 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x933 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x941 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x952 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x972 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3F3 DUP2 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x98F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9A6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9B9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x9E6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x9FC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA28 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA33 DUP2 PUSH2 0xC53 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA6A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA83 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xAA4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0xAC0 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xC27 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xBB2 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xC27 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC42 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x797 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x8A52160CFF9C16 RETURNDATASIZE INVALID 0x26 PUSH31 0x1373627A8C463F8A9E0B79FC83F18EA10A96443764736F6C63430007010033 PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9F6 CODESIZE SUB DUP1 PUSH2 0x9F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH2 0x39 DUP2 PUSH2 0x5D JUMP JUMPDEST POP POP PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x203 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x70 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x74 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC7 JUMP JUMPDEST POP PUSH2 0xEE SWAP3 SWAP2 POP PUSH2 0xF2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x126 DUP2 PUSH2 0x1EB JUMP JUMPDEST DUP1 SWAP4 POP POP PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH2 0x139 DUP2 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x155 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x168 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x176 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x1AF JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x1DC JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7C1 PUSH2 0x235 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x2F0 MSTORE POP DUP1 PUSH1 0x63 MSTORE DUP1 PUSH2 0x201 MSTORE POP PUSH2 0x7C1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"928:716:112:-:0;;;8361:42:94;8312:91;;1041:86:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1109:5;1116:7;2402:5:94;-1:-1:-1;;;;;2402:10:94;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:81;;;;;;;;2426:14:94;;;;;::::1;::::0;2464:50:::1;::::0;2435:5;;2499:4:::1;::::0;2506:7;;2464:50:::1;::::0;::::1;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2450:64:94::1;::::0;-1:-1:-1;;;;;;2450:64:94;::::1;::::0;-1:-1:-1;928:716:112;;-1:-1:-1;;;928:716:112;;;;;;;;;:::o;798:528:-1:-;;;955:2;943:9;934:7;930:23;926:32;923:2;;;-1:-1;;961:12;923:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;1160:2;1145:18;;1139:25;1013:89;;-1:-1;;;;;;1173:30;;;1170:2;;;-1:-1;;1206:12;1170:2;1293:6;1282:9;1278:22;;;459:3;452:4;444:6;440:17;436:27;426:2;;-1:-1;;467:12;426:2;507:6;501:13;1184:18;3236:6;3233:30;3230:2;;;-1:-1;;3266:12;3230:2;955;2893:9;3339;3320:17;;-1:-1;;3316:33;2925:17;;1160:2;2925:17;2985:34;;;3021:22;;;2982:62;2979:2;;;-1:-1;;3047:12;2979:2;955;3066:22;600:21;;;700:16;;;1160:2;700:16;697:25;-1:-1;694:2;;;-1:-1;;725:12;694:2;745:39;777:6;1160:2;676:5;672:16;1160:2;642:6;638:17;745:39;:::i;:::-;1226:84;;;;;;;917:409;;;;;:::o;1333:291::-;;1462:2;1450:9;1441:7;1437:23;1433:32;1430:2;;;-1:-1;;1468:12;1430:2;274:6;268:13;286:47;327:5;286:47;:::i;:::-;1520:88;1424:200;-1:-1;;;1424:200::o;2268:562::-;;1184:18;;4126:42;;;;3810:5;4115:54;1844:3;1837:65;4126:42;3810:5;4115:54;2665:2;2654:9;2650:18;1702:37;;2486:2;2702;2691:9;2687:18;2680:48;2059:5;3517:12;3674:6;2486:2;2475:9;2471:18;3662:19;2153:52;2198:6;3702:14;2475:9;3702:14;2665:2;2179:5;2175:16;2153:52;:::i;:::-;3339:9;4814:14;-1:-1;;4810:28;2217:39;;;;3702:14;2217:39;;2457:373;-1:-1;;;;2457:373::o;4470:268::-;4535:1;4542:101;4556:6;4553:1;4550:13;4542:101;;;4623:11;;;4617:18;4604:11;;;4597:39;4578:2;4571:10;4542:101;;;4658:6;4655:1;4652:13;4649:2;;;4535:1;4714:6;4709:3;4705:16;4698:27;4649:2;;4519:219;;;:::o;4851:147::-;-1:-1;;;;;4115:54;;4925:50;;4915:2;;4989:1;;4979:12;4915:2;4909:89;:::o;:::-;928:716:112;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14060":[{"length":32,"start":820},{"length":32,"start":868}],"14062":[{"length":32,"start":503}],"14433":[{"length":32,"start":1964}]},"linkReferences":{},"object":"6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e53114610150578063ec6edf0014610163578063f3cab6851461019057610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b636600461097d565b6101b0565b6040516100c89190610b93565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec366004610a41565b6101b3565b005b3480156100ff57600080fd5b506101086101f5565b6040516100c89190610bc6565b6100f16101233660046108d4565b610219565b34801561013457600080fd5b50610108610362565b6100f161014b366004610a16565b610386565b6100f161015e366004610a71565b6103cd565b34801561016f57600080fd5b5061018361017e366004610a41565b6103d7565b6040516100c89190610b88565b6101a361019e366004610a41565b6103e8565b6040516100c89190610c1e565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb0787526101dd826103fa565b6040516101ea9190610c1e565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff841630148061023b575082155b61027a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027190610be7565b60405180910390fd5b606063fa6e671d60e01b33868660405160240161029993929190610ae1565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251610308928691869101610aae565b60408051601f19818403018152919052905061035a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610425565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b61038f816104aa565b156103a05761039d816103fa565b90505b6103c96103ab610362565b73ffffffffffffffffffffffffffffffffffffffff841690836104f1565b5050565b6103c9828261064f565b60006103e2826104aa565b92915050565b60006103f382610662565b9392505050565b600080600061040884610662565b9150915061041584610679565b156103f357600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104509190610a92565b6000604051808303816000865af19150503d806000811461048d576040519150601f19603f3d011682016040523d82523d6000602084013e610492565b606091505b50915091506104a182826106c0565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b80158015906105a257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061054f9030908690600401610b12565b60206040518083038186803b15801561056757600080fd5b505afa15801561057b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059f9190610a59565b15155b1561062b5761062b8363095ea7b360e01b8460006040516024016105c7929190610b39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106ea565b61064a8363095ea7b360e01b84846040516024016105c7929190610b62565b505050565b600061065a8361079d565b919091555050565b60008061066e8361079d565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b606082156106cf5750806103e2565b8151156106df5781518083602001fd5b6103e26101ae6107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516107139190610a92565b6000604051808303816000865af19150503d8060008114610750576040519150601f19603f3d011682016040523d82523d6000602084013e610755565b606091505b5091509150600082141561076d573d6000803e3d6000fd5b61079781516000148061078f57508180602001905181019061078f9190610961565b6101a2610828565b50505050565b600060016107aa83610836565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016107dc929190610ad3565b60408051808303601f1901815291905280516020909101200392915050565b610825817f42414c0000000000000000000000000000000000000000000000000000000000610859565b50565b816103c9576103c9816107fb565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600080600080606085870312156108e9578384fd5b84356108f481610c53565b9350602085013561090481610c75565b9250604085013567ffffffffffffffff80821115610920578384fd5b818701915087601f830112610933578384fd5b813581811115610941578485fd5b886020828501011115610952578485fd5b95989497505060200194505050565b600060208284031215610972578081fd5b81516103f381610c75565b6000602080838503121561098f578182fd5b823567ffffffffffffffff808211156109a6578384fd5b818501915085601f8301126109b9578384fd5b8135818111156109c7578485fd5b60405184601f19601f84011682010181811084821117156109e6578687fd5b60405281815283820185018810156109fc578586fd5b818585018683013790810190930193909352509392505050565b60008060408385031215610a28578182fd5b8235610a3381610c53565b946020939093013593505050565b600060208284031215610a52578081fd5b5035919050565b600060208284031215610a6a578081fd5b5051919050565b60008060408385031215610a83578182fd5b50508035926020909101359150565b60008251610aa4818460208701610c27565b9190910192915050565b60008451610ac0818460208901610c27565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152610bb2816040850160208701610c27565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610c42578181015183820152602001610c2a565b838111156107975750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461082557600080fd5b801515811461082557600080fdfea2646970667358221220668a52160cff9c163dfe267e1373627a8c463f8a9e0b79fc83f18ea10a96443764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x190 JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x97D JUMP JUMPDEST PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x1B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x219 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x362 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x3CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x3D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB88 JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x19E CALLDATASIZE PUSH1 0x4 PUSH2 0xA41 JUMP JUMPDEST PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xC1E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1DD DUP3 PUSH2 0x3FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EA SWAP2 SWAP1 PUSH2 0xC1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x23B JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x271 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x299 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x308 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x35A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x425 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x38F DUP2 PUSH2 0x4AA JUMP JUMPDEST ISZERO PUSH2 0x3A0 JUMPI PUSH2 0x39D DUP2 PUSH2 0x3FA JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x3C9 PUSH2 0x3AB PUSH2 0x362 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x4F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3C9 DUP3 DUP3 PUSH2 0x64F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E2 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP3 PUSH2 0x662 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x408 DUP5 PUSH2 0x662 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x415 DUP5 PUSH2 0x679 JUMP JUMPDEST ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x450 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x48D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x492 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1 DUP3 DUP3 PUSH2 0x6C0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5A2 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x54F SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB12 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x567 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0xA59 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x62B JUMPI PUSH2 0x62B DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x64A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5C7 SWAP3 SWAP2 SWAP1 PUSH2 0xB62 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65A DUP4 PUSH2 0x79D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x66E DUP4 PUSH2 0x79D JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x6CF JUMPI POP DUP1 PUSH2 0x3E2 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x6DF JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3E2 PUSH2 0x1AE PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x713 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x750 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x755 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x76D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x797 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x78F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x78F SWAP2 SWAP1 PUSH2 0x961 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x828 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x7AA DUP4 PUSH2 0x836 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7DC SWAP3 SWAP2 SWAP1 PUSH2 0xAD3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x825 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x859 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x3C9 JUMPI PUSH2 0x3C9 DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8E9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0xC53 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x904 DUP2 PUSH2 0xC75 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x920 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x933 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x941 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x952 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x972 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3F3 DUP2 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x98F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9A6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9B9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x9E6 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x9FC JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA28 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA33 DUP2 PUSH2 0xC53 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA6A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA83 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xAA4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0xAC0 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xC27 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xBB2 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xC27 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC42 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x797 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x8A52160CFF9C16 RETURNDATASIZE INVALID 0x26 PUSH31 0x1373627A8C463F8A9E0B79FC83F18EA10A96443764736F6C63430007010033 ","sourceMap":"928:716:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1537:105;;;;;;;;;;-1:-1:-1;1537:105:112;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1398:133;;;;;;;;;;-1:-1:-1;1398:133:112;;;;;:::i;:::-;;:::i;:::-;;2621:101:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2836:466::-;;;;;;:::i;:::-;;:::i;2527:88::-;;;;;;;;;;;;;:::i;3480:287::-;;;;;;:::i;:::-;;:::i;1261:131:112:-;;;;;;:::i;:::-;;:::i;1133:122::-;;;;;;;;;;-1:-1:-1;1133:122:112;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4175:158:94:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1537:105:112:-;1630:5;1537:105::o;1398:133::-;1467:57;1493:30;1519:3;1493:25;:30::i;:::-;1467:57;;;;;;:::i;:::-;;;;;;;;1398:133;:::o;2621:101:94:-;2704:11;2621:101;:::o;2836:466::-;2991:24;;;3010:4;2991:24;;:37;;;3020:8;3019:9;2991:37;2983:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3074:17;3147:34;;;3183:10;3195:7;3204:8;3124:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3124:89:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:156;;;3227:13;;;;3094:156;;:::i;:::-;;;;-1:-1:-1;;3094:156:94;;;;;;;;;;-1:-1:-1;3261:34:94;:28;3269:6;3261:28;3094:156;3261:28;:34::i;:::-;;2836:466;;;;;:::o;2527:88::-;2602:6;2527:88;:::o;3480:287::-;3572:27;3592:6;3572:19;:27::i;:::-;3568:100;;;3624:33;3650:6;3624:25;:33::i;:::-;3615:42;;3568:100;3714:46;3740:10;:8;:10::i;:::-;3714:17;;;;3753:6;3714:17;:46::i;:::-;3480:287;;:::o;1261:131:112:-;1348:37;1374:3;1379:5;1348:25;:37::i;1133:122::-;1198:4;1221:27;1241:6;1221:19;:27::i;:::-;1214:34;1133:122;-1:-1:-1;;1133:122:112:o;4175:158:94:-;4258:13;4295:31;4322:3;4295:26;:31::i;:::-;4283:43;4175:158;-1:-1:-1;;;4175:158:94:o;7281:375::-;7356:7;7376:12;7390:13;7407:31;7434:3;7407:26;:31::i;:::-;7375:63;;;;7453:33;7482:3;7453:28;:33::i;:::-;7449:179;;;7602:1;7596:4;7589:15;7644:5;7281:375;-1:-1:-1;;;7281:375:94:o;3494:278:69:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;3494:278;-1:-1:-1;;;;;3494:278:69:o;5451:358:94:-;5653:66;5644:75;5736:66;5643:159;;5451:358::o;1001:507:77:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:77;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1332:53:77;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;6533:392:94:-;6624:12;6639:20;6655:3;6639:15;:20::i;:::-;6890:19;;;;-1:-1:-1;;6876:43:94:o;7850:404::-;7921:12;7935:13;7967:20;7983:3;7967:15;:20::i;:::-;7960:27;;8233:4;8227:11;8218:20;;8204:44;;;:::o;5926:505::-;6275:66;6266:75;6358:66;6265:159;;5926:505::o;5057:714:69:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:69;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:12;5703:7:69;:37::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;:::-;2324:914;;;;:::o;8410:595:94:-;8470:7;8996:1;8941:27;8964:3;8941:22;:27::i;:::-;8970:20;8924:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8924:67:94;;;;;;8914:78;;8924:67;8914:78;;;;8906:91;;8410:595;-1:-1:-1;;8410:595:94:o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;926:101::-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;9196:174:94:-;9296:66;9290:72;;9196:174::o;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1660:609:-1;;;;;1814:2;1802:9;1793:7;1789:23;1785:32;1782:2;;;-1:-1;;1820:12;1782:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1872:63;-1:-1;1972:2;2008:22;;206:20;231:30;206:20;231:30;:::i;:::-;1980:60;-1:-1;2105:2;2090:18;;2077:32;2129:18;2118:30;;;2115:2;;;-1:-1;;2151:12;2115:2;2236:6;2225:9;2221:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;2129:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1972:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1776:493;;;;-1:-1;;1972:2;668:17;;-1:-1;;;1776:493::o;2276:257::-;;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;-1:-1;;2394:12;2356:2;354:6;348:13;366:30;390:5;366:30;:::i;2540:345::-;;2653:2;;2641:9;2632:7;2628:23;2624:32;2621:2;;;-1:-1;;2659:12;2621:2;2717:17;2704:31;2755:18;;2747:6;2744:30;2741:2;;;-1:-1;;2777:12;2741:2;2852:6;2841:9;2837:22;;;868:3;861:4;853:6;849:17;845:27;835:2;;-1:-1;;876:12;835:2;923:6;910:20;2755:18;11637:6;11634:30;11631:2;;;-1:-1;;11667:12;11631:2;11301;11295:9;2653:2;-1:-1;;861:4;11725:6;11721:17;11717:33;11331:6;11327:17;;11438:6;11426:10;11423:22;2755:18;11390:10;11387:34;11384:62;11381:2;;;-1:-1;;11449:12;11381:2;11301;11468:22;1015:21;;;1115:16;;;;;1112:25;-1:-1;1109:2;;;-1:-1;;1140:12;1109:2;14044:6;2653:2;1057:6;1053:17;2653:2;1091:5;1087:16;14021:30;14082:16;;;;;;14075:27;;;;-1:-1;1091:5;2615:270;-1:-1;;;2615:270::o;2892:396::-;;;3028:2;3016:9;3007:7;3003:23;2999:32;2996:2;;;-1:-1;;3034:12;2996:2;1310:6;1297:20;1322:48;1364:5;1322:48;:::i;:::-;3086:78;3201:2;3240:22;;;;1449:20;;-1:-1;;;2990:298::o;3295:241::-;;3399:2;3387:9;3378:7;3374:23;3370:32;3367:2;;;-1:-1;;3405:12;3367:2;-1:-1;1449:20;;3361:175;-1:-1;3361:175::o;3543:263::-;;3658:2;3646:9;3637:7;3633:23;3629:32;3626:2;;;-1:-1;;3664:12;3626:2;-1:-1;1597:13;;3620:186;-1:-1;3620:186::o;3813:366::-;;;3934:2;3922:9;3913:7;3909:23;3905:32;3902:2;;;-1:-1;;3940:12;3902:2;-1:-1;;1449:20;;;4092:2;4131:22;;;1449:20;;-1:-1;3896:283::o;6884:271::-;;5571:5;11917:12;5682:52;5727:6;5722:3;5715:4;5708:5;5704:16;5682:52;:::i;:::-;5746:16;;;;;7018:137;-1:-1;;7018:137::o;7162:448::-;;5571:5;11917:12;5682:52;5727:6;5722:3;5715:4;5708:5;5704:16;5682:52;:::i;:::-;5746:16;;14044:6;14039:3;5746:16;14021:30;14082:16;;;14075:27;;;-1:-1;14082:16;7352:258;-1:-1;;7352:258::o;7617:392::-;4650:58;;;7870:2;7861:12;;4650:58;7972:12;;;7761:248::o;8016:464::-;13015:42;13004:54;;;4273:45;;13004:54;;;;8389:2;8374:18;;4273:45;12724:13;;12717:21;8466:2;8451:18;;4515:34;8209:2;8194:18;;8180:300::o;8487:333::-;13015:42;13004:54;;;4273:45;;13004:54;;8806:2;8791:18;;4273:45;8642:2;8627:18;;8613:207::o;8827:345::-;13015:42;13004:54;;;;4273:45;;13220:4;13209:16;9158:2;9143:18;;6197:56;8988:2;8973:18;;8959:213::o;9179:333::-;13015:42;13004:54;;;;4273:45;;9498:2;9483:18;;4650:58;9334:2;9319:18;;9305:207::o;9519:210::-;12724:13;;12717:21;4515:34;;9640:2;9625:18;;9611:118::o;9736:306::-;;9881:2;9902:17;9895:47;5203:5;11917:12;12073:6;9881:2;9870:9;9866:18;12061:19;5296:52;5341:6;12101:14;9870:9;12101:14;9881:2;5322:5;5318:16;5296:52;:::i;:::-;14643:2;14623:14;-1:-1;;14619:28;5360:39;;;;12101:14;5360:39;;9852:190;-1:-1;;9852:190::o;10049:272::-;13015:42;13004:54;;;;5870:75;;10201:2;10186:18;;10172:149::o;10587:416::-;10787:2;10801:47;;;6490:2;10772:18;;;12061:19;6526:33;12101:14;;;6506:54;6579:12;;;10758:245::o;11010:222::-;4650:58;;;11137:2;11122:18;;11108:124::o;14117:268::-;14182:1;14189:101;14203:6;14200:1;14197:13;14189:101;;;14270:11;;;14264:18;14251:11;;;14244:39;14225:2;14218:10;14189:101;;;14305:6;14302:1;14299:13;14296:2;;;-1:-1;;14182:1;14352:16;;14345:27;14166:219::o;14660:117::-;13015:42;14747:5;13004:54;14722:5;14719:35;14709:2;;14768:1;;14758:12;14784:111;14865:5;12724:13;12717:21;14843:5;14840:32;14830:2;;14886:1;;14876:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","bytesTunnel(bytes)":"56cc064e","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","isChainedReference(uint256)":"ec6edf00","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"bytesTunnel\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"isChainedReference\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary). This function does not alter the state in any way. It is not marked as view because it has to be `payable` in order to be used in a batch transaction. Use a static call to read the state off-chain.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBaseRelayerLibrary.sol\":\"MockBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0x90f015009b9eb5ef856d5bbdebcaf90ab53c0e4ddb26a289f81156fef607c5ac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://793d728e420243ea1940e517b18bdc8043b0aaa778af63fe334bce4c2cd815ba\",\"dweb:/ipfs/Qmdb1PqtyT6UnKDUCphasSmAj4nXn6YVwmUzuSveAgQzNn\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x39fa4329e480fdfd025ca692937d3d7857359eaf27faba07191dae56d374c75d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3c361b8e24e59c3fa6c79f058506e8484649b3082ca49974387d217ee0f0a3e8\",\"dweb:/ipfs/QmX53HeJGcEac72TRZyYppncdTpWRJjqGoXPCofmWgs56Q\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/test/MockBaseRelayerLibrary.sol\":{\"keccak256\":\"0x55048d955c4a4e14017b4d9c0023bdaa3451d7508a812799f53552b07273e083\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c023ead0ab402badb03c6d2bd76294ffd711b6446e536db3bfb5f8c9c36ce6c\",\"dweb:/ipfs/QmQVKo5GnA1jGH5kh6CJkPNxzmTnZs1LHMqbyAQw44zNkm\"]}},\"version\":1}"}},"contracts/test/MockBatchRelayerLibrary.sol":{"MockBatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"},{"internalType":"bool","name":"canCallUserCheckpoint","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"canCallUserCheckpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeCheckpoint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapEuler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"dieselAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapGearbox","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapShareToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapTetu","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapYearn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ICToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapCompoundV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IEulerToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"eulerProtocol","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapEuler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IGearboxDieselToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"mainAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapGearbox","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IShareToken","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapShareToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapTetu","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IYearnTokenVault","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapYearn","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101806040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b5060405162006d3f38038062006d3f833981016040819052620000599162000232565b83838383604051806020016040528060008152508383838784816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ac57600080fd5b505afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e791906200029c565b6001600160601b0319606091821b81166080529083901b1660a052604051829030908390620001169062000224565b6200012493929190620002c2565b604051809103906000f08015801562000141573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05294901b9093166101005250151560f81b61012052506001600160a01b03811662000181576000620001f8565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bd57600080fd5b505af1158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f891906200029c565b6001600160601b0319606091821b81166101405291901b1661016052506200034d975050505050505050565b6109f6806200634983390190565b6000806000806080858703121562000248578384fd5b8451620002558162000334565b6020860151909450620002688162000334565b60408601519093506200027b8162000334565b6060860151909250801515811462000291578182fd5b939692955090935050565b600060208284031215620002ae578081fd5b8151620002bb8162000334565b9392505050565b600060018060a01b0380861683526020818616818501526060604085015284519150816060850152825b828110156200030a57858101820151858201608001528101620002ec565b828111156200031c5783608084870101525b5050601f01601f191691909101608001949350505050565b6001600160a01b03811681146200034a57600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160f81c6101405160601c6101605160601c615f4d620003fc6000398061074a52806107f3528061081e5280610c9b5280610cc75280610d6a52806133a752806133d3525080610c7a5280610f85528061102952806134765250806108475280611784525080611343528061260f525080613e355250806122ad5250806123ad5280612706525050615f4d6000f3fe6080604052600436106102f25760003560e01c80637ab6e03c1161018f578063959fc17a116100e1578063d80952d51161008a578063efe6910811610064578063efe691081461065a578063f3cab6851461066d578063f4dd54b01461068d576102f2565b8063d80952d514610621578063db4c0e9114610634578063e8210e3c14610647576102f2565b8063b6d24737116100bb578063b6d24737146105db578063c518e531146105ee578063d293f2901461060e576102f2565b8063959fc17a146105a2578063abf6d399146105b5578063b064b376146105c8576102f2565b80638b35ac8d116101435780638d928af81161011d5780638d928af8146105675780638fe4624f1461057c578063941e849b1461058f576102f2565b80638b35ac8d1461052e5780638c57198b146105415780638d64cfbc14610554576102f2565b80637fd0e5d5116101745780637fd0e5d5146104e657806380db15bd14610508578063837f9bcb1461051b576102f2565b80637ab6e03c146104c05780637bc008f5146104d3576102f2565b8063433b0865116102485780635001fe75116101fc578063611b90dd116101d6578063611b90dd1461048757806365ca48041461049a5780636d307ea8146104ad576102f2565b80635001fe751461044157806352b88746146104545780635967b69614610467576102f2565b806348699d581161022d57806348699d58146104085780634e9d9bab1461041b5780634f06a70b1461042e576102f2565b8063433b0865146103e257806344b6ac74146103f5576102f2565b80631c982441116102aa5780632e6272ea116102845780632e6272ea146103a9578063311c5c57146103bc5780633f85d390146103cf576102f2565b80631c982441146103705780632c25efe1146103835780632cbec84e14610396576102f2565b806310f3aaff116102db57806310f3aaff1461031f578063138fdc2c1461034a578063183694461461035d576102f2565b80630e248fea146102f75780631089e5e31461030c575b600080fd5b61030a610305366004614b16565b6106a0565b005b61030a61031a366004614a98565b61073b565b34801561032b57600080fd5b50610334610845565b6040516103419190615a2e565b60405180910390f35b61030a610358366004614efb565b610869565b61030a61036b36600461528e565b610a6c565b61030a61037e366004614973565b610c75565b61030a610391366004614efb565b610d98565b61030a6103a4366004614a98565b610f76565b61030a6103b736600461538a565b611050565b61030a6103ca366004614efb565b611170565b61030a6103dd366004614acc565b611310565b61030a6103f036600461512c565b6113da565b61030a610403366004614efb565b611603565b61030a6104163660046149b8565b611782565b61030a610429366004614efb565b6117c8565b61030a61043c366004614efb565b611a23565b61030a61044f366004614efb565b611b34565b61030a61046236600461506f565b611cbf565b34801561047357600080fd5b5061030a610482366004615478565b611e63565b61030a610495366004614efb565b611ea5565b61030a6104a83660046150dc565b611f48565b61030a6104bb366004614efb565b612066565b61030a6104ce36600461512c565b6120a1565b61030a6104e13660046150dc565b6121a7565b3480156104f257600080fd5b506104fb6122ab565b6040516103419190615711565b61030a610516366004614a0b565b6122cf565b61030a610529366004614be6565b6123d3565b61030a61053c366004614efb565b6125a3565b61030a61054f366004614d5f565b6125df565b61030a610562366004614fd6565b61268a565b34801561057357600080fd5b506104fb612704565b61030a61058a366004614e6b565b612728565b61030a61059d366004614efb565b612952565b61030a6105b0366004614f55565b612a9d565b61030a6105c3366004614efb565b612b1a565b61030a6105d6366004614efb565b612bcd565b61030a6105e9366004615044565b612d10565b3480156105fa57600080fd5b5061030a6106093660046154a8565b612d4a565b61030a61061c366004614efb565b612d54565b61030a61062f366004614dc2565b612e14565b61030a610642366004614973565b6133a2565b61030a610655366004614efb565b61349d565b61030a610668366004614efb565b6134d8565b61068061067b366004615478565b613517565b6040516103419190615dbd565b61030a61069b366004614efb565b613529565b8060005b81811015610735578383828181106106b857fe5b90506020020160208101906106cd919061493b565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106f89190615711565b600060405180830381600087803b15801561071257600080fd5b505af1158015610726573d6000803e3d6000fd5b505050508060010190506106a4565b50505050565b61074482613655565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b81526004016107949190615dbd565b60206040518083038186803b1580156107ac57600080fd5b505afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190615490565b90506108196001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168461367b565b6107357f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a457600080fd5b505afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190614957565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190614957565b905061095f81838689613723565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109ac9087908990600090600401615dfc565b600060405180830381600087803b1580156109c657600080fd5b505af11580156109da573d6000803e3d6000fd5b50505050610a6383836001600160a01b0316634d778ad1876040518263ffffffff1660e01b8152600401610a0e9190615dbd565b60206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e9190615490565b61374e565b50505050505050565b33610a7a602089018961493b565b6001600160a01b03161480610aa3575030610a98602089018961493b565b6001600160a01b0316145b610ac85760405162461bcd60e51b8152600401610abf90615c1f565b60405180910390fd5b60005b8a51811015610b2d5760008b8281518110610ae257fe5b6020026020010151606001519050610af981613766565b15610b2457610b07816137ad565b8c8381518110610b1357fe5b602002602001015160600181815250505b50600101610acb565b506060610b38612704565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b72989796959493929190615adf565b6000604051808303818588803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610bc89190810190614b56565b905060005b82811015610c6657610bf3848483818110610be457fe5b90506040020160200135613766565b610c0f5760405162461bcd60e51b8152600401610abf90615cfb565b610c5e848483818110610c1e57fe5b90506040020160200135610c5984878786818110610c3857fe5b9050604002016000013581518110610c4c57fe5b60200260200101516137d8565b6137e4565b600101610bcd565b50505050505050505050505050565b610cc17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613723565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610d119190615dbd565b602060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190615490565b9050610d917f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190614957565b9050610e1981878588613723565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e61908690600401615dbd565b602060405180830381600087803b158015610e7b57600080fd5b505af1158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190615490565b15610ed05760405162461bcd60e51b8152600401610abf90615c8d565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610f18903090600401615711565b60206040518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190615490565b9050610a63878683866136f5565b610f7f82613655565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610fd09190615711565b6020604051808303818588803b158015610fe957600080fd5b505af1158015610ffd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110229190615490565b90506107357f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b3361105e602087018761493b565b6001600160a01b0316148061108757503061107c602087018761493b565b6001600160a01b0316145b6110a35760405162461bcd60e51b8152600401610abf90615c1f565b6110b08660800151613766565b156110c8576110c286608001516137ad565b60808701525b60006110d2612704565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016111049493929190615d32565b6020604051808303818588803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111569190615490565b905061116182613766565b15610a6357610a6382826137e4565b61117b8583866137f7565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b857600080fd5b505afa1580156111cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f09190614957565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611238908690600401615dbd565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a08231906112b2903090600401615711565b60206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190615490565b9050610a63828683866136f5565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061137c90879087903390600401615938565b602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190615490565b9050610735828261374e565b6113e383613766565b156113f4576113f1836137ad565b92505b60008261147357866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190614957565b6114e6565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ae57600080fd5b505af11580156114c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e69190614957565b90506001600160a01b038616301461152b576001600160a01b03861633146115205760405162461bcd60e51b8152600401610abf90615c1f565b61152b868286613843565b61153f6001600160a01b03821688866138df565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab879061158d908990899086908a9060040161590c565b602060405180830381600087803b1580156115a757600080fd5b505af11580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190615490565b90506115ea83613766565b156115f9576115f983826137e4565b5050505050505050565b61160e8583866137f7565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116839190614957565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a75906116cb908690600401615dbd565b602060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190615490565b1561173a5760405162461bcd60e51b8152600401610abf90615be8565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a08231906112b2903090600401615711565b7f0000000000000000000000000000000000000000000000000000000000000000156117b8576117b3838383613a2b565b6117c3565b6117c3838383613ade565b505050565b6117d38583866137f7565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b15801561181057600080fd5b505afa158015611824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118489190614957565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd9190614957565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d3599061192a9084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906000906004016158e9565b6040805180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197b91906154c9565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a08231906119c5903090600401615711565b60206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a159190615490565b90506115f9828783876136f5565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5e57600080fd5b505afa158015611a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a969190614957565b9050611aa481878588613723565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611ad6929190615dc6565b602060405180830381600087803b158015611af057600080fd5b505af1158015611b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b289190615490565b9050610a63838261374e565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6f57600080fd5b505afa158015611b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba79190614957565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190614957565b9050611c2a82828689613723565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c6194939291906157bd565b6040805180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb291906154c9565b9150506115f9848261374e565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cfa57600080fd5b505afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190614957565b9050611d4081878588613723565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d8b906000908790600401615703565b600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611e05903090600401615711565b60206040518083038186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e559190615490565b90506115f9888683866136f5565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb078752611e8d826137ad565b604051611e9a9190615dbd565b60405180910390a150565b611eb08583866137f7565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611ee29291906158d0565b602060405180830381600087803b158015611efc57600080fd5b505af1158015611f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f349190615490565b9050611f40828261374e565b505050505050565b611f538482856137f7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f9b908490600401615dbd565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050506001600160a01b0382163014610735576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561201857600080fd5b505afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190614957565b9050610d916001600160a01b0382168484613bf8565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5e57600080fd5b6120aa83613766565b156120bb576120b8836137ad565b92505b6001600160a01b03851630146120fe576001600160a01b03851633146120f35760405162461bcd60e51b8152600401610abf90615c1f565b6120fe858785613843565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d3599061214a908890889088906004016158e9565b6040805180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b91906154c9565b91505061116182613766565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e257600080fd5b505afa1580156121f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221a9190614957565b905061222881868487613723565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906122729085908790600401615dc6565b600060405180830381600087803b15801561228c57600080fd5b505af11580156122a0573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806122e4575082155b6123005760405162461bcd60e51b8152600401610abf90615c56565b606063fa6e671d60e01b33868660405160240161231f93929190615725565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161238e9286918691016156de565b60408051601f198184030181529190529050611f406001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613c17565b60005b84518110156124b357336001600160a01b03168582815181106123f557fe5b6020026020010151606001516001600160a01b0316148061243e5750306001600160a01b031685828151811061242757fe5b6020026020010151606001516001600160a01b0316145b61245a5760405162461bcd60e51b8152600401610abf90615c1f565b600085828151811061246857fe5b602002602001015160400151905061247f81613766565b156124aa5761248d816137ad565b86838151811061249957fe5b602002602001015160400181815250505b506001016123d6565b506124bc612704565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b81526004016124e89190615998565b6000604051808303818588803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050505060005b81811015610d9157612534838383818110610be457fe5b6125505760405162461bcd60e51b8152600401610abf90615cfb565b61259b83838381811061255f57fe5b905060400201602001358685858581811061257657fe5b905060400201600001358151811061258a57fe5b6020026020010151604001516137e4565b60010161251d565b6125ae8583866137f7565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611ee2929190615dc6565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906126509030908a908a908a908a908a908a90600401615870565b600060405180830381600087803b15801561266a57600080fd5b505af115801561267e573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876126a2612704565b88888888886040518863ffffffff1660e01b81526004016126c9979695949392919061582f565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03851633148061274757506001600160a01b03851630145b6127635760405162461bcd60e51b8152600401610abf90615c1f565b600061276e88613c91565b9050600061277b83613766565b61278657600061281b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a08231906127cb908990600401615711565b60206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281b9190615490565b905061282b888660400151613c97565b6040860152612838612704565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b815260040161286a9493929190615a39565b6000604051808303818588803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b50505050506128a583613766565b156122a0576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a08231906128f2908a90600401615711565b60206040518083038186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129429190615490565b905061267e84610c598385613d1e565b61295d8583866137f7565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e70906129c8906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615703565b600060405180830381600087803b1580156129e257600080fd5b505af11580156129f6573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3557600080fd5b505afa158015612a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6d9190614957565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112b29190615711565b876001600160a01b0316638fcbaf0c88612ab5612704565b8989898989896040518963ffffffff1660e01b8152600401612ade9897969594939291906157e6565b600060405180830381600087803b158015612af857600080fd5b505af1158015612b0c573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5557600080fd5b505afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614957565b9050612b9b81878588613723565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611ad69291906158d0565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c409190614957565b9050612c4e81878588613723565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612c96908690600401615dbd565b600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610f18903090600401615711565b612d1981613766565b15612d2a57612d27816137ad565b90505b612d46612d35612704565b6001600160a01b03841690836138df565b5050565b612d4682826137e4565b612d5f8583866137f7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612da7908590600401615dbd565b600060405180830381600087803b158015612dc157600080fd5b505af1158015612dd5573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3557600080fd5b6001600160a01b038516331480612e3357506001600160a01b03851630145b612e4f5760405162461bcd60e51b8152600401610abf90615c1f565b60608167ffffffffffffffff81118015612e6857600080fd5b50604051908082528060200260200182016040528015612e92578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612eae57600080fd5b50604051908082528060200260200182016040528015612ed8578160200160208202803683370190505b50905060005b8381101561304857612ef5858583818110610be457fe5b612f115760405162461bcd60e51b8152600401610abf90615cfb565b8551600090868684818110612f2257fe5b9050604002016000013581518110612f3657fe5b60200260200101519050866060015115612f8457612f5381613d34565b848381518110612f5f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061303f565b612f8d81613d37565b61301a57612f9a81613d34565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612fc59190615711565b60206040518083038186803b158015612fdd57600080fd5b505afa158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130159190615490565b613026565b876001600160a01b0316315b83838151811061303257fe5b6020026020010181815250505b50600101612ede565b508460600151156130df5761305b612704565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401613088929190615749565b60006040518083038186803b1580156130a057600080fd5b505afa1580156130b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130dc9190810190614d10565b90505b6130ed888660400151613d44565b60408601526130fa612704565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161312b9493929190615a39565b600060405180830381600087803b15801561314557600080fd5b505af1158015613159573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561317857600080fd5b506040519080825280602002602001820160405280156131a2578160200160208202803683370190505b50905085606001511561323f576131b7612704565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016131e4929190615749565b60006040518083038186803b1580156131fc57600080fd5b505afa158015613210573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132389190810190614d10565b905061333d565b60005b8481101561333b57865160009087878481811061325b57fe5b905060400201600001358151811061326f57fe5b6020026020010151905061328281613d37565b61330f5761328f81613d34565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016132ba9190615711565b60206040518083038186803b1580156132d257600080fd5b505afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190615490565b61331b565b886001600160a01b0316315b83838151811061332757fe5b602090810291909101015250600101613242565b505b60005b848110156126f75761339a86868381811061335757fe5b90506040020160200135610c5985848151811061337057fe5b602002602001015185858151811061338457fe5b6020026020010151613d1e90919063ffffffff16565b600101613340565b6133cd7f000000000000000000000000000000000000000000000000000000000000000083866137f7565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161341d9190615dbd565b602060405180830381600087803b15801561343757600080fd5b505af115801561344b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346f9190615490565b9050610d917f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b6134e38583866137f7565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611ee293929190615ddd565b600061352282613dba565b9392505050565b6135348583866137f7565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561357157600080fd5b505afa158015613585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a99190614957565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135f39086908890600401615dc6565b600060405180830381600087803b15801561360d57600080fd5b505af1158015613621573d6000803e3d6000fd5b50505050611f4082826001600160a01b0316635427c938866040518263ffffffff1660e01b8152600401610a0e9190615dbd565b600061366082613766565b61366a5781613673565b613673826137ad565b90505b919050565b61368a814710156101a3613dd1565b6000826001600160a01b0316826040516136a390613d34565b60006040518083038185875af1925050503d80600081146136e0576040519150601f19603f3d011682016040523d82523d6000602084013e6136e5565b606091505b505090506117c3816101a4613dd1565b6001600160a01b0383163014613719576137196001600160a01b0385168484613bf8565b610735818361374e565b60006137308584846137f7565b90506137466001600160a01b03861685836138df565b949350505050565b61375782613766565b15612d4657612d4682826137e4565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006137bb84613dba565b915091506137c884613ddf565b1561352257600082559392505050565b60ff81901d9081180390565b60006137ef83613e26565b919091555050565b600061380283613655565b90506001600160a01b0382163014613522576001600160a01b038216331461383c5760405162461bcd60e51b8152600401610abf90615c1f565b6135228285835b8061384d576117c3565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061387d57fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106138c857fe5b602002602001018181525050610d91858383613e84565b801580159061398357506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061393090309086906004016157a3565b60206040518083038186803b15801561394857600080fd5b505afa15801561395c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139809190615490565b15155b15613a0c57613a0c8363095ea7b360e01b8460006040516024016139a89291906158b4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613fd2565b6117c38363095ea7b360e01b84846040516024016139a89291906158d0565b8060005b81811015610d9157838382818110613a4357fe5b9050602002016020810190613a58919061493b565b6001600160a01b0316634b820093866040518263ffffffff1660e01b8152600401613a839190615711565b602060405180830381600087803b158015613a9d57600080fd5b505af1158015613ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad59190614d43565b50600101613a2f565b8060608167ffffffffffffffff81118015613af857600080fd5b50604051908082528060200260200182016040528015613b3257816020015b613b1f614523565b815260200190600190039081613b175790505b50905060005b82811015613bc4576040805160a081019091528060038152602001868684818110613b5f57fe5b9050602002016020810190613b74919061493b565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613bb157fe5b6020908102919091010152600101613b38565b50613bcd612704565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016122729190615998565b6117c38363a9059cbb60e01b84846040516024016139a89291906158d0565b606060006060846001600160a01b031684604051613c3591906156c2565b6000604051808303816000865af19150503d8060008114613c72576040519150601f19603f3d011682016040523d82523d6000602084013e613c77565b606091505b5091509150613c868282614072565b925050505b92915050565b60601c90565b60606000836003811115613ca757fe5b1415613cbd57613cb68261409c565b9050613c8b565b6001836003811115613ccb57fe5b1480613ce257506002836003811115613ce057fe5b145b80613cf857506003836003811115613cf657fe5b145b15613d0657613cb68261409c565b60405162461bcd60e51b8152600401610abf90615cc4565b6000613d2e838311156001613dd1565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613d5457fe5b1415613d6357613cb6826140d9565b6001836003811115613d7157fe5b1415613d8057613cb682614122565b6002836003811115613d8e57fe5b1415613d9d57613cb682614168565b6003836003811115613dab57fe5b1415613d0657613cb682614194565b600080613dc683613e26565b915081549050915091565b81612d4657612d46816141c7565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613e33836141f4565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613e65929190615703565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613e9e57600080fd5b50604051908082528060200260200182016040528015613ed857816020015b613ec5614523565b815260200190600190039081613ebd5790505b50905060005b8351811015613f70576040805160a081019091528060038152602001858381518110613f0657fe5b60200260200101516001600160a01b03168152602001848381518110613f2857fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613f5d57fe5b6020908102919091010152600101613ede565b50613f79612704565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613fa49190615998565b600060405180830381600087803b158015613fbe57600080fd5b505af11580156115f9573d6000803e3d6000fd5b60006060836001600160a01b031683604051613fee91906156c2565b6000604051808303816000865af19150503d806000811461402b576040519150601f19603f3d011682016040523d82523d6000602084013e614030565b606091505b50915091506000821415614048573d6000803e3d6000fd5b61073581516000148061406a57508180602001905181019061406a9190614d43565b6101a2613dd1565b60608215614081575080613c8b565b8151156140915781518083602001fd5b613c8b6101ae6141c7565b606060006140a983614217565b905060018160038111156140b957fe5b14156140d0576140c88361422d565b915050613676565b82915050613676565b606060006140e68361427f565b905060008160028111156140f657fe5b1415614105576140c883614295565b600181600281111561411357fe5b14156140d0576140c8836142f8565b6060600061412f8361427f565b600281111561413a57fe5b905060ff811661414e576140c8838261434b565b60015b60ff168160ff1614156140d0576140c883826143ad565b606060006141758361427f565b600281111561418057fe5b905060ff81166140d0576140c8838261434b565b606060006141a18361427f565b60028111156141ac57fe5b905060ff81166141c0576140c8838261434b565b6002614151565b6141f1817f42414c0000000000000000000000000000000000000000000000000000000000614408565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190613673919061521a565b606080600061423b84614469565b915091506142488261448c565b6142525783613746565b6001828260405160200161426893929190615aad565b604051602081830303815290604052949350505050565b600081806020019051810190613673919061519b565b60606000806142a3846144f6565b915091506142b082613766565b156142ee576142be826137ad565b9150600082826040516020016142d693929190615a8c565b60405160208183030381529060405292505050613676565b8392505050613676565b606060006143058361450d565b905061431081613766565b156140d05761431e816137ad565b9050600181604051602001614334929190615a75565b604051602081830303815290604052915050613676565b6060600080614359856144f6565b9150915061436682613766565b156143a357614374826137ad565b915083828260405160200161438b93929190615e2e565b60405160208183030381529060405292505050613c8b565b8492505050613c8b565b606060006143ba8461450d565b90506143c581613766565b156143ff576143d3816137ad565b905082816040516020016143e8929190615e1b565b604051602081830303815290604052915050613c8b565b83915050613c8b565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906144819190615236565b909590945092505050565b600080805b83518110156144ef5760008482815181106144a857fe5b602002602001015190506144bb81613766565b156144e6576144c9816137ad565b8583815181106144d557fe5b602002602001018181525050600192505b50600101614491565b5092915050565b6000808280602001905181019061448191906151e4565b60008180602001905181019061352291906151b7565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613c8b81615eda565b60008083601f84011261456f578182fd5b50813567ffffffffffffffff811115614586578182fd5b60208301915083602080830285010111156145a057600080fd5b9250929050565b600082601f8301126145b7578081fd5b81356145ca6145c582615e70565b615e49565b8181529150602080830190848101818402860182018710156145eb57600080fd5b60005b8481101561461357813561460181615eda565b845292820192908201906001016145ee565b505050505092915050565b600082601f83011261462e578081fd5b813561463c6145c582615e70565b818152915060208083019084810160005b84811015614613578135870160a080601f19838c0301121561466e57600080fd5b61467781615e49565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156146b957600080fd5b6146c78c88858701016147e9565b9082015286525050928201929082019060010161464d565b60008083601f8401126146f0578182fd5b50813567ffffffffffffffff811115614707578182fd5b6020830191508360206040830285010111156145a057600080fd5b600082601f830112614732578081fd5b81356147406145c582615e70565b81815291506020808301908481018184028601820187101561476157600080fd5b60005b8481101561461357813584529282019290820190600101614764565b600082601f830112614790578081fd5b815161479e6145c582615e70565b8181529150602080830190848101818402860182018710156147bf57600080fd5b60005b84811015614613578151845292820192908201906001016147c2565b8035613c8b81615eef565b600082601f8301126147f9578081fd5b813567ffffffffffffffff81111561480f578182fd5b6148226020601f19601f84011601615e49565b915080825283602082850101111561483957600080fd5b8060208401602084013760009082016020015292915050565b8035613c8b81615f0a565b803560028110613c8b57600080fd5b60006080828403121561487d578081fd5b6148876080615e49565b9050813567ffffffffffffffff808211156148a157600080fd5b6148ad858386016145a7565b835260208401359150808211156148c357600080fd5b6148cf85838601614722565b602084015260408401359150808211156148e857600080fd5b506148f5848285016147e9565b60408301525061490883606084016147de565b606082015292915050565b600060808284031215614924578081fd5b50919050565b803560ff81168114613c8b57600080fd5b60006020828403121561494c578081fd5b813561352281615eda565b600060208284031215614968578081fd5b815161352281615eda565b60008060008060808587031215614988578283fd5b843561499381615eda565b935060208501356149a381615eda565b93969395505050506040820135916060013590565b6000806000604084860312156149cc578081fd5b83356149d781615eda565b9250602084013567ffffffffffffffff8111156149f2578182fd5b6149fe8682870161455e565b9497909650939450505050565b60008060008060608587031215614a20578182fd5b8435614a2b81615eda565b93506020850135614a3b81615eef565b9250604085013567ffffffffffffffff80821115614a57578384fd5b818701915087601f830112614a6a578384fd5b813581811115614a78578485fd5b886020828501011115614a89578485fd5b95989497505060200194505050565b600080600060608486031215614aac578081fd5b8335614ab781615eda565b95602085013595506040909401359392505050565b600080600060408486031215614ae0578081fd5b833567ffffffffffffffff811115614af6578182fd5b614b028682870161455e565b909790965060209590950135949350505050565b60008060208385031215614b28578182fd5b823567ffffffffffffffff811115614b3e578283fd5b614b4a8582860161455e565b90969095509350505050565b60006020808385031215614b68578182fd5b825167ffffffffffffffff811115614b7e578283fd5b8301601f81018513614b8e578283fd5b8051614b9c6145c582615e70565b8181528381019083850185840285018601891015614bb8578687fd5b8694505b83851015614bda578051835260019490940193918501918501614bbc565b50979650505050505050565b60008060008060608587031215614bfb578182fd5b843567ffffffffffffffff80821115614c12578384fd5b818701915087601f830112614c25578384fd5b8135614c336145c582615e70565b808282526020808301925080860160a08d838288028a01011115614c5557898afd5b8997505b85881015614cd85780828f031215614c6f57898afd5b614c7881615e49565b614c828f84614852565b8152614c908f858501614553565b8482015260408301356040820152614cab8f60608501614553565b6060820152614cbd8f60808501614553565b60808201528552600197909701969382019390810190614c59565b509199508a013597505050604088013592505080821115614cf7578384fd5b50614d04878288016146df565b95989497509550505050565b600060208284031215614d21578081fd5b815167ffffffffffffffff811115614d37578182fd5b61374684828501614780565b600060208284031215614d54578081fd5b815161352281615eef565b60008060008060008060c08789031215614d77578384fd5b8635614d8281615eef565b95506020870135614d9281615eda565b945060408701359350614da8886060890161492a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614ddc578485fd5b873596506020880135614dee81615f0a565b95506040880135614dfe81615eda565b94506060880135614e0e81615eda565b9350608088013567ffffffffffffffff80821115614e2a578283fd5b614e368b838c0161486c565b945060a08a0135915080821115614e4b578283fd5b50614e588a828b016146df565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614e85578081fd5b873596506020880135614e9781615f0a565b95506040880135614ea781615eda565b94506060880135614eb781615eda565b9350608088013567ffffffffffffffff811115614ed2578182fd5b614ede8a828b0161486c565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614f12578283fd5b8535614f1d81615eda565b94506020860135614f2d81615eda565b93506040860135614f3d81615eda565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614f71578182fd5b8835614f7c81615eda565b97506020890135614f8c81615eda565b965060408901359550606089013594506080890135614faa81615eef565b9350614fb98a60a08b0161492a565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614ff0578081fd5b8735614ffb81615eda565b9650602088013561500b81615eda565b955060408801359450606088013593506150288960808a0161492a565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215615056578182fd5b823561506181615eda565b946020939093013593505050565b60008060008060008060c08789031215615087578384fd5b863561509281615eda565b955060208701356150a281615eda565b945060408701356150b281615eda565b935060608701356150c281615eda565b9598949750929560808101359460a0909101359350915050565b600080600080608085870312156150f1578182fd5b84356150fc81615eda565b9350602085013561510c81615eda565b9250604085013561511c81615eda565b9396929550929360600135925050565b60008060008060008060c08789031215615144578384fd5b863561514f81615eda565b9550602087013561515f81615eda565b9450604087013561516f81615eda565b935060608701359250608087013561518681615eef565b8092505060a087013590509295509295509295565b6000602082840312156151ac578081fd5b815161352281615efd565b600080604083850312156151c9578182fd5b82516151d481615efd565b6020939093015192949293505050565b6000806000606084860312156151f8578081fd5b835161520381615efd565b602085015160409095015190969495509392505050565b60006020828403121561522b578081fd5b815161352281615f0a565b60008060006060848603121561524a578081fd5b835161525581615f0a565b602085015190935067ffffffffffffffff811115615271578182fd5b61527d86828701614780565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e0312156152af578485fd5b6152b98d8d61485d565b9a5067ffffffffffffffff8060208e013511156152d4578586fd5b6152e48e60208f01358f0161461e565b9a508060408e013511156152f6578586fd5b6153068e60408f01358f0161455e565b909a5098506153188e60608f01614913565b97508060e08e0135111561532a578586fd5b61533a8e60e08f01358f0161455e565b90975095506101008d013594506101208d013593506101408d0135811015615360578283fd5b506153728d6101408e01358e016146df565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156153a3578384fd5b863567ffffffffffffffff808211156153ba578586fd5b9088019060c0828b0312156153cd578586fd5b6153d760c0615e49565b823581526153e88b6020850161485d565b602082015260408301356153fb81615eda565b604082015261540d8b60608501614553565b60608201526080830135608082015260a08301358281111561542d578788fd5b6154398c8286016147e9565b60a0830152508098505050506154528860208901614913565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b600060208284031215615489578081fd5b5035919050565b6000602082840312156154a1578081fd5b5051919050565b600080604083850312156154ba578182fd5b50508035926020909101359150565b600080604083850312156154db578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561553657813561551b81615eda565b6001600160a01b031687529582019590820190600101615508565b509495945050505050565b60008284526020808501945082825b8581101561553657813587529582019590820190600101615550565b6000815180845260208085019450808401835b838110156155365781518752958201959082019060010161557f565b15159052565b600081518084526155b9816020860160208601615e90565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156156125783516001600160a01b0316835292840192918401916001016155ed565b50508285015191508581038387015261562b818361556c565b925050506040830151848203604086015261564682826155a1565b915050606083015161565b606086018261559b565b509392505050565b803561566e81615eda565b6001600160a01b03908116835260208201359061568a82615eef565b90151560208401526040820135906156a182615eda565b16604083015260608101356156b581615eef565b8015156060840152505050565b600082516156d4818460208701615e90565b9190910192915050565b600084516156f0818460208901615e90565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b81811015615795578551851683529483019491830191600101615777565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561597b576020833561596081615eda565b6001600160a01b03168352928301929091019060010161594b565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015615a2157815180516159ca81615ec6565b8552808701516001600160a01b03168786015285810151868601526060808201516159f7828801826154ec565b505060809081015190615a0c868201836154ec565b505060a09390930192908501906001016159b5565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b03808616602084015280851660408401525060806060830152615a6b60808301846155cd565b9695505050505050565b60408101615a8284615ebc565b9281526020015290565b60608101615a9985615ebc565b938152602081019290925260409091015290565b6000615ab885615ec6565b84825260606020830152615acf606083018561556c565b9050826040830152949350505050565b6000610120808301615af08c615ed0565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615b97578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615b83818801836155a1565b978601979650505090830190600101615b17565b505050508381036040850152615bae818a8c6154f9565b915050615bbe6060840188615663565b82810360e0840152615bd1818688615541565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615d4d81615ed0565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615d9b6101a08401826155a1565b915050615dab6020830186615663565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615e6857600080fd5b604052919050565b600067ffffffffffffffff821115615e86578081fd5b5060209081020190565b60005b83811015615eab578181015183820152602001615e93565b838111156107355750506000910152565b600381106141f157fe5b600481106141f157fe5b600281106141f157fe5b6001600160a01b03811681146141f157600080fd5b80151581146141f157600080fd5b600381106141f157600080fd5b600481106141f157600080fdfea2646970667358221220092e94f5f693f20dbbc9926943dc24b7ad7ff971060b13567e18ea07bd5138e864736f6c6343000701003360c060405234801561001057600080fd5b506040516109f63803806109f683398101604081905261002f91610107565b806100398161005d565b5050600180556001600160601b0319606092831b8116608052911b1660a052610203565b8051610070906000906020840190610074565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b557805160ff19168380011785556100e2565b828001600101855582156100e2579182015b828111156100e25782518255916020019190600101906100c7565b506100ee9291506100f2565b5090565b5b808211156100ee57600081556001016100f3565b60008060006060848603121561011b578283fd5b8351610126816101eb565b80935050602080850151610139816101eb565b60408601519093506001600160401b0380821115610155578384fd5b818701915087601f830112610168578384fd5b815181811115610176578485fd5b604051601f8201601f1916810185018381118282101715610195578687fd5b60405281815283820185018a10156101ab578586fd5b8592505b818310156101cc57838301850151818401860152918401916101af565b818311156101dc57858583830101525b80955050505050509250925092565b6001600160a01b038116811461020057600080fd5b50565b60805160601c60a05160601c6107c1610235600039806101dd52806102f05250806063528061020152506107c16000f3fe6080604052600436106100435760003560e01c806354fd4d50146100935780637678922e146100be5780638d928af8146100e0578063ac9650d8146100f55761008e565b3661008e5761008c3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610206610115565b005b600080fd5b34801561009f57600080fd5b506100a8610127565b6040516100b591906106d7565b60405180910390f35b3480156100ca57600080fd5b506100d36101db565b6040516100b59190610638565b3480156100ec57600080fd5b506100d36101ff565b610108610103366004610560565b610223565b6040516100b59190610659565b81610123576101238161034f565b5050565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156101d15780601f106101a6576101008083540402835291602001916101d1565b820191906000526020600020905b8154815290600101906020018083116101b457829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061022d61037c565b8167ffffffffffffffff8111801561024457600080fd5b5060405190808252806020026020018201604052801561027857816020015b60608152602001906001900390816102635790505b50905060005b828110156103385761031984848381811061029557fe5b90506020028101906102a791906106f1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692915050610395565b82828151811061032557fe5b602090810291909101015260010161027e565b50610341610418565b610349610429565b92915050565b610379817f42414c000000000000000000000000000000000000000000000000000000000061042f565b50565b61038e60026001541415610190610115565b6002600155565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103c09190610619565b600060405180830381855af49150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104aa565b95945050505050565b4780156103795761037933826104d4565b60018055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156104b9575080610349565b8151156104c95781518083602001fd5b6103496101ae61034f565b6104e3814710156101a3610115565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161050990610635565b60006040518083038185875af1925050503d8060008114610546576040519150601f19603f3d011682016040523d82523d6000602084013e61054b565b606091505b5050905061055b816101a4610115565b505050565b60008060208385031215610572578182fd5b823567ffffffffffffffff80821115610589578384fd5b818501915085601f83011261059c578384fd5b8135818111156105aa578485fd5b86602080830285010111156105bd578485fd5b60209290920196919550909350505050565b600081518084526105e781602086016020860161075b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161062b81846020870161075b565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156106ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526106b88583516105cf565b9450928501929085019060010161067e565b5092979650505050505050565b6000602082526106ea60208301846105cf565b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610725578283fd5b83018035915067ffffffffffffffff82111561073f578283fd5b60200191503681900382131561075457600080fd5b9250929050565b60005b8381101561077657818101518382015260200161075e565b83811115610785576000848401525b5050505056fea2646970667358221220a48df7ee263b9ec1f02e43e8caae1e9f83bc81f5da0de345a64a78afaf6947f364736f6c63430007010033","opcodes":"PUSH2 0x180 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x6D3F CODESIZE SUB DUP1 PUSH3 0x6D3F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x232 JUMP JUMPDEST DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP DUP4 DUP4 DUP4 DUP8 DUP5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xE7 SWAP2 SWAP1 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP3 SWAP1 ADDRESS SWAP1 DUP4 SWAP1 PUSH3 0x116 SWAP1 PUSH3 0x224 JUMP JUMPDEST PUSH3 0x124 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP5 SWAP1 SHL SWAP1 SWAP4 AND PUSH2 0x100 MSTORE POP ISZERO ISZERO PUSH1 0xF8 SHL PUSH2 0x120 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x181 JUMPI PUSH1 0x0 PUSH3 0x1F8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1F8 SWAP2 SWAP1 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x140 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x160 MSTORE POP PUSH3 0x34D SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x9F6 DUP1 PUSH3 0x6349 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x248 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x255 DUP2 PUSH3 0x334 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x268 DUP2 PUSH3 0x334 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x27B DUP2 PUSH3 0x334 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x291 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2AE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x2BB DUP2 PUSH3 0x334 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP7 AND DUP2 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0x60 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x30A JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP2 ADD PUSH3 0x2EC JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x31C JUMPI DUP4 PUSH1 0x80 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0xF8 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x5F4D PUSH3 0x3FC PUSH1 0x0 CODECOPY DUP1 PUSH2 0x74A MSTORE DUP1 PUSH2 0x7F3 MSTORE DUP1 PUSH2 0x81E MSTORE DUP1 PUSH2 0xC9B MSTORE DUP1 PUSH2 0xCC7 MSTORE DUP1 PUSH2 0xD6A MSTORE DUP1 PUSH2 0x33A7 MSTORE DUP1 PUSH2 0x33D3 MSTORE POP DUP1 PUSH2 0xC7A MSTORE DUP1 PUSH2 0xF85 MSTORE DUP1 PUSH2 0x1029 MSTORE DUP1 PUSH2 0x3476 MSTORE POP DUP1 PUSH2 0x847 MSTORE DUP1 PUSH2 0x1784 MSTORE POP DUP1 PUSH2 0x1343 MSTORE DUP1 PUSH2 0x260F MSTORE POP DUP1 PUSH2 0x3E35 MSTORE POP DUP1 PUSH2 0x22AD MSTORE POP DUP1 PUSH2 0x23AD MSTORE DUP1 PUSH2 0x2706 MSTORE POP POP PUSH2 0x5F4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AB6E03C GT PUSH2 0x18F JUMPI DUP1 PUSH4 0x959FC17A GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xD80952D5 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEFE69108 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xF4DD54B0 EQ PUSH2 0x68D JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x647 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x60E JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x959FC17A EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0xB064B376 EQ PUSH2 0x5C8 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D GT PUSH2 0x143 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x11D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x941E849B EQ PUSH2 0x58F JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x554 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 GT PUSH2 0x174 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0x837F9BCB EQ PUSH2 0x51B JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x4C0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x4D3 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x248 JUMPI DUP1 PUSH4 0x5001FE75 GT PUSH2 0x1FC JUMPI DUP1 PUSH4 0x611B90DD GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x4AD JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x5001FE75 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x52B88746 EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x467 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x48699D58 GT PUSH2 0x22D JUMPI DUP1 PUSH4 0x48699D58 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x4E9D9BAB EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0x4F06A70B EQ PUSH2 0x42E JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x44B6AC74 EQ PUSH2 0x3F5 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x2AA JUMPI DUP1 PUSH4 0x2E6272EA GT PUSH2 0x284 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x311C5C57 EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x3CF JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x2C25EFE1 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x396 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x10F3AAFF GT PUSH2 0x2DB JUMPI DUP1 PUSH4 0x10F3AAFF EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0x138FDC2C EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x35D JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x30C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30A PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B16 JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30A PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x4A98 JUMP JUMPDEST PUSH2 0x73B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x334 PUSH2 0x845 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30A PUSH2 0x358 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x36B CALLDATASIZE PUSH1 0x4 PUSH2 0x528E JUMP JUMPDEST PUSH2 0xA6C JUMP JUMPDEST PUSH2 0x30A PUSH2 0x37E CALLDATASIZE PUSH1 0x4 PUSH2 0x4973 JUMP JUMPDEST PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0xD98 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A98 JUMP JUMPDEST PUSH2 0xF76 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x538A JUMP JUMPDEST PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1170 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x512C JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x30A PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x416 CALLDATASIZE PUSH1 0x4 PUSH2 0x49B8 JUMP JUMPDEST PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x429 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x17C8 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x43C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x462 CALLDATASIZE PUSH1 0x4 PUSH2 0x506F JUMP JUMPDEST PUSH2 0x1CBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x1E63 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x495 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1EA5 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x50DC JUMP JUMPDEST PUSH2 0x1F48 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4BB CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2066 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x512C JUMP JUMPDEST PUSH2 0x20A1 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x50DC JUMP JUMPDEST PUSH2 0x21A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB PUSH2 0x22AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x516 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A0B JUMP JUMPDEST PUSH2 0x22CF JUMP JUMPDEST PUSH2 0x30A PUSH2 0x529 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE6 JUMP JUMPDEST PUSH2 0x23D3 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x53C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x25A3 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x4D5F JUMP JUMPDEST PUSH2 0x25DF JUMP JUMPDEST PUSH2 0x30A PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD6 JUMP JUMPDEST PUSH2 0x268A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB PUSH2 0x2704 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x4E6B JUMP JUMPDEST PUSH2 0x2728 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2952 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F55 JUMP JUMPDEST PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2BCD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5044 JUMP JUMPDEST PUSH2 0x2D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A8 JUMP JUMPDEST PUSH2 0x2D4A JUMP JUMPDEST PUSH2 0x30A PUSH2 0x61C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2D54 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x62F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DC2 JUMP JUMPDEST PUSH2 0x2E14 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x4973 JUMP JUMPDEST PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x349D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x34D8 JUMP JUMPDEST PUSH2 0x680 PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x3517 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x69B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x3529 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x6B8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F8 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x6A4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x744 DUP3 PUSH2 0x3655 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB0E38900 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x794 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7E4 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x819 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x367B JUMP JUMPDEST PUSH2 0x735 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8DC SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2495A599 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x951 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x95F DUP2 DUP4 DUP7 DUP10 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9AA5D46200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9AA5D462 SWAP1 PUSH2 0x9AC SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DFC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA63 DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4D778AD1 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA0E SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x374E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0xA7A PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xAA3 JUMPI POP ADDRESS PUSH2 0xA98 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAE2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0xAF9 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0xB24 JUMPI PUSH2 0xB07 DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xACB JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0xB38 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB72 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5ADF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xBC8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B56 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC66 JUMPI PUSH2 0xBF3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3766 JUMP JUMPDEST PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST PUSH2 0xC5E DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xC1E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC59 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0xC4C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x37D8 JUMP JUMPDEST PUSH2 0x37E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xBCD JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCC1 PUSH32 0x0 PUSH32 0x0 DUP5 DUP8 PUSH2 0x3723 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA598CB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD11 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD63 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0B SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0xE19 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA0712D6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xA0712D68 SWAP1 PUSH2 0xE61 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEB3 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO PUSH2 0xED0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF68 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP8 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0xF7F DUP3 PUSH2 0x3655 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFD0 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1022 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x735 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST CALLER PUSH2 0x105E PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1087 JUMPI POP ADDRESS PUSH2 0x107C PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x10B0 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x10C8 JUMPI PUSH2 0x10C2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x10D2 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1156 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x1161 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0xA63 JUMPI PUSH2 0xA63 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH2 0x117B DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11F0 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1238 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x12B2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1302 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP3 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0x137C SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5938 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13CE SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x735 DUP3 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x13E3 DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x13F4 JUMPI PUSH2 0x13F1 DUP4 PUSH2 0x37AD JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1473 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x144A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x146E SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x14E6 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E6 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x152B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x1520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x152B DUP7 DUP3 DUP7 PUSH2 0x3843 JUMP JUMPDEST PUSH2 0x153F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x38DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x158D SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x590C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15DF SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15EA DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x15F9 JUMPI PUSH2 0x15F9 DUP4 DUP3 PUSH2 0x37E4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x160E DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1683 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDB006A7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xDB006A75 SWAP1 PUSH2 0x16CB SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x171D SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO PUSH2 0x173A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5BE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12B2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x17B8 JUMPI PUSH2 0x17B3 DUP4 DUP4 DUP4 PUSH2 0x3A2B JUMP JUMPDEST PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x17C3 DUP4 DUP4 DUP4 PUSH2 0x3ADE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x17D3 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1824 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1848 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18BD SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x192A SWAP1 DUP5 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x58E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1957 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197B SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x19C5 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A15 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15F9 DUP3 DUP8 DUP4 DUP8 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A96 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AA4 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6E553F65 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B28 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP4 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BA7 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BF8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C1C SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2A DUP3 DUP3 DUP7 DUP10 PUSH2 0x3723 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFBF178DB DUP5 DUP9 DUP9 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C61 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CB2 SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x15F9 DUP5 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D32 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D40 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE2BBB15800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x1D8B SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1E05 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E55 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15F9 DUP9 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1E8D DUP3 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E9A SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1EB0 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA785A5E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F34 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F40 DUP3 DUP3 PUSH2 0x374E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F53 DUP5 DUP3 DUP6 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1F9B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x735 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x202C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2050 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20AA DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x20BB JUMPI PUSH2 0x20B8 DUP4 PUSH2 0x37AD JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x20FE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x20F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x20FE DUP6 DUP8 DUP6 PUSH2 0x3843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x214A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2177 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219B SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1161 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x221A SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2228 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x2272 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x22E4 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2300 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C56 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x231F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5725 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x238E SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x56DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1F40 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x24B3 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243E JUMPI POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2427 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x245A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2468 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH2 0x247F DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x24AA JUMPI PUSH2 0x248D DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2499 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x23D6 JUMP JUMPDEST POP PUSH2 0x24BC PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2515 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0x2534 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH2 0x2550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST PUSH2 0x259B DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x255F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP7 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2576 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x258A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x37E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x251D JUMP JUMPDEST PUSH2 0x25AE DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xF714CE DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP3 SWAP2 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x2650 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5870 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x267E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x26A2 PUSH2 0x2704 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x582F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2747 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2763 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x276E DUP9 PUSH2 0x3C91 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x277B DUP4 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x2786 JUMPI PUSH1 0x0 PUSH2 0x281B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x27CB SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x281B SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x282B DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3C97 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x2838 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x28A5 DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x22A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28F2 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x290A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x291E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2942 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x267E DUP5 PUSH2 0xC59 DUP4 DUP6 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x295D DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x441A3E7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x441A3E70 SWAP1 PUSH2 0x29C8 SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 ADD PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6D SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12B2 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x2AB5 PUSH2 0x2704 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2ADE SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B8D SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B9B DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F4F21E2 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C40 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C4E DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2C96 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0xF18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH2 0x2D19 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x2D2A JUMPI PUSH2 0x2D27 DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2D46 PUSH2 0x2D35 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x38DF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2D46 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH2 0x2D5F DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2DA7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2E33 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2E4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E92 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2ED8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3048 JUMPI PUSH2 0x2EF5 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH2 0x2F11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2F22 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2F36 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2F84 JUMPI PUSH2 0x2F53 DUP2 PUSH2 0x3D34 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F5F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x303F JUMP JUMPDEST PUSH2 0x2F8D DUP2 PUSH2 0x3D37 JUMP JUMPDEST PUSH2 0x301A JUMPI PUSH2 0x2F9A DUP2 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FC5 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3015 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x3026 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3032 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2EDE JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x30DF JUMPI PUSH2 0x305B PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3088 SWAP3 SWAP2 SWAP1 PUSH2 0x5749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x30DC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4D10 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x30ED DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3D44 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x30FA PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x312B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3159 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31A2 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x323F JUMPI PUSH2 0x31B7 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31E4 SWAP3 SWAP2 SWAP1 PUSH2 0x5749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3238 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4D10 JUMP JUMPDEST SWAP1 POP PUSH2 0x333D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x333B JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x325B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x326F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3282 DUP2 PUSH2 0x3D37 JUMP JUMPDEST PUSH2 0x330F JUMPI PUSH2 0x328F DUP2 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BA SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x330A SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x331B JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3327 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x3242 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x26F7 JUMPI PUSH2 0x339A DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x3357 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC59 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3370 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3384 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3D1E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3340 JUMP JUMPDEST PUSH2 0x33CD PUSH32 0x0 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDE0E9A3E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x341D SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x344B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x346F SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34E3 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBA087652 DUP5 DUP7 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3522 DUP3 PUSH2 0x3DBA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3534 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3585 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35A9 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5FE138B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x5FE138B SWAP1 PUSH2 0x35F3 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x360D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3621 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1F40 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5427C938 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA0E SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3660 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x366A JUMPI DUP2 PUSH2 0x3673 JUMP JUMPDEST PUSH2 0x3673 DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x368A DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x36A3 SWAP1 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36E0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36E5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x17C3 DUP2 PUSH2 0x1A4 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x3719 JUMPI PUSH2 0x3719 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x735 DUP2 DUP4 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3730 DUP6 DUP5 DUP5 PUSH2 0x37F7 JUMP JUMPDEST SWAP1 POP PUSH2 0x3746 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 DUP4 PUSH2 0x38DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3757 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x2D46 JUMPI PUSH2 0x2D46 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x37BB DUP5 PUSH2 0x3DBA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x37C8 DUP5 PUSH2 0x3DDF JUMP JUMPDEST ISZERO PUSH2 0x3522 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37EF DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3802 DUP4 PUSH2 0x3655 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x3522 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x383C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x3522 DUP3 DUP6 DUP4 JUMPDEST DUP1 PUSH2 0x384D JUMPI PUSH2 0x17C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x387D JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38C8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD91 DUP6 DUP4 DUP4 PUSH2 0x3E84 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3983 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x3930 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x57A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x3A0C JUMPI PUSH2 0x3A0C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3FD2 JUMP JUMPDEST PUSH2 0x17C3 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD91 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x3A43 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3A58 SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A83 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AD5 SWAP2 SWAP1 PUSH2 0x4D43 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3A2F JUMP JUMPDEST DUP1 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3B32 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3B1F PUSH2 0x4523 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3B17 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3BC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x3B5F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3B74 SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3BB1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3B38 JUMP JUMPDEST POP PUSH2 0x3BCD PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2272 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH2 0x17C3 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C35 SWAP2 SWAP1 PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C72 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C77 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3C86 DUP3 DUP3 PUSH2 0x4072 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CA7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CBD JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x409C JUMP JUMPDEST SWAP1 POP PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CCB JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x3CE2 JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CE0 JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x3CF8 JUMPI POP PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CF6 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x3D06 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2E DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3DD1 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D54 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D63 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x40D9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D71 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D80 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4122 JUMP JUMPDEST PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D8E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D9D JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4168 JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAB JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D06 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4194 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3DC6 DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0x2D46 JUMPI PUSH2 0x2D46 DUP2 PUSH2 0x41C7 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3E33 DUP4 PUSH2 0x41F4 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E65 SWAP3 SWAP2 SWAP1 PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3ED8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3EC5 PUSH2 0x4523 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3EBD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3F70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3F5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3EDE JUMP JUMPDEST POP PUSH2 0x3F79 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FA4 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3FEE SWAP2 SWAP1 PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x402B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4030 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x4048 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x735 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x406A JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x406A SWAP2 SWAP1 PUSH2 0x4D43 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4081 JUMPI POP DUP1 PUSH2 0x3C8B JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4091 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3C8B PUSH2 0x1AE PUSH2 0x41C7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40A9 DUP4 PUSH2 0x4217 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40B9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x422D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40E6 DUP4 PUSH2 0x427F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x40F6 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4105 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x4295 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4113 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x42F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x412F DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x413A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x414E JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x43AD JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4175 DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4180 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x41A1 DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x41AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x41C0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x41F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x4408 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3673 SWAP2 SWAP1 PUSH2 0x521A JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x423B DUP5 PUSH2 0x4469 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4248 DUP3 PUSH2 0x448C JUMP JUMPDEST PUSH2 0x4252 JUMPI DUP4 PUSH2 0x3746 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4268 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3673 SWAP2 SWAP1 PUSH2 0x519B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x42A3 DUP5 PUSH2 0x44F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x42B0 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x42EE JUMPI PUSH2 0x42BE DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x42D6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3676 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4305 DUP4 PUSH2 0x450D JUMP JUMPDEST SWAP1 POP PUSH2 0x4310 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x431E DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4334 SWAP3 SWAP2 SWAP1 PUSH2 0x5A75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x4359 DUP6 PUSH2 0x44F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4366 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x4374 DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x438B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3C8B JUMP JUMPDEST DUP5 SWAP3 POP POP POP PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x43BA DUP5 PUSH2 0x450D JUMP JUMPDEST SWAP1 POP PUSH2 0x43C5 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x43FF JUMPI PUSH2 0x43D3 DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x43E8 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3C8B JUMP JUMPDEST DUP4 SWAP2 POP POP PUSH2 0x3C8B JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4481 SWAP2 SWAP1 PUSH2 0x5236 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x44EF JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x44A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x44BB DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x44E6 JUMPI PUSH2 0x44C9 DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x44D5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4491 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4481 SWAP2 SWAP1 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3522 SWAP2 SWAP1 PUSH2 0x51B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x456F JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4586 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x45A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x45B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x45CA PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST PUSH2 0x5E49 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x45EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD PUSH2 0x4601 DUP2 PUSH2 0x5EDA JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45EE JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x462E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x463C PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x466E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4677 DUP2 PUSH2 0x5E49 JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x46B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C7 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x47E9 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x464D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x46F0 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4707 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x45A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4732 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4740 PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4764 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4790 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x479E PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x47BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x47C2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5EEF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x480F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4822 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x5E49 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5F0A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3C8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x487D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4887 PUSH1 0x80 PUSH2 0x5E49 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x48A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48AD DUP6 DUP4 DUP7 ADD PUSH2 0x45A7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x48C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48CF DUP6 DUP4 DUP7 ADD PUSH2 0x4722 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x48E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48F5 DUP5 DUP3 DUP6 ADD PUSH2 0x47E9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x4908 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x47DE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4924 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3C8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x494C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3522 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4968 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4988 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4993 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x49A3 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x49CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x49D7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x49F2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x49FE DUP7 DUP3 DUP8 ADD PUSH2 0x455E JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4A20 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4A2B DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4A3B DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A57 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A6A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4A78 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4A89 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4AAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4AB7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4AE0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4AF6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4B02 DUP7 DUP3 DUP8 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B28 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B3E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4B4A DUP6 DUP3 DUP7 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B68 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B7E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x4B8E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4B9C PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x4BB8 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x4BDA JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x4BBC JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BFB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4C12 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4C25 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4C33 PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD PUSH1 0xA0 DUP14 DUP4 DUP3 DUP9 MUL DUP11 ADD ADD GT ISZERO PUSH2 0x4C55 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP8 POP JUMPDEST DUP6 DUP9 LT ISZERO PUSH2 0x4CD8 JUMPI DUP1 DUP3 DUP16 SUB SLT ISZERO PUSH2 0x4C6F JUMPI DUP10 DUP11 REVERT JUMPDEST PUSH2 0x4C78 DUP2 PUSH2 0x5E49 JUMP JUMPDEST PUSH2 0x4C82 DUP16 DUP5 PUSH2 0x4852 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4C90 DUP16 DUP6 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST DUP5 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4CAB DUP16 PUSH1 0x60 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4CBD DUP16 PUSH1 0x80 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP6 MSTORE PUSH1 0x1 SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C59 JUMP JUMPDEST POP SWAP2 SWAP10 POP DUP11 ADD CALLDATALOAD SWAP8 POP POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x4CF7 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4D04 DUP8 DUP3 DUP9 ADD PUSH2 0x46DF JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D21 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D37 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3746 DUP5 DUP3 DUP6 ADD PUSH2 0x4780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D54 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EEF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D77 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4D82 DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4D92 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4DA8 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4DDC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4DEE DUP2 PUSH2 0x5F0A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4DFE DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4E0E DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4E2A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4E36 DUP12 DUP4 DUP13 ADD PUSH2 0x486C JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4E4B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4E58 DUP11 DUP3 DUP12 ADD PUSH2 0x46DF JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4E85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4E97 DUP2 PUSH2 0x5F0A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4EA7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4EB7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4ED2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4EDE DUP11 DUP3 DUP12 ADD PUSH2 0x486C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F12 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F1D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F2D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4F3D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4F71 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4F7C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4F8C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x4FAA DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP4 POP PUSH2 0x4FB9 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4FF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4FFB DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x500B DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x5028 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5056 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5061 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5087 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5092 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x50A2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x50B2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x50C2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x50F1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x50FC DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x510C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x511C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5144 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x514F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x515F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x516F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x5186 DUP2 PUSH2 0x5EEF JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51AC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x51C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x51D4 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5203 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x522B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5F0A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x524A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5255 DUP2 PUSH2 0x5F0A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5271 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x527D DUP7 DUP3 DUP8 ADD PUSH2 0x4780 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x52AF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x52B9 DUP14 DUP14 PUSH2 0x485D JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x52D4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x52E4 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x461E JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x52F6 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5306 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x5318 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x4913 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x532A JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x533A DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x5360 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x5372 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x46DF JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x53A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x53BA JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x53CD JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x53D7 PUSH1 0xC0 PUSH2 0x5E49 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x53E8 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x485D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x53FB DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x540D DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x542D JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x5439 DUP13 DUP3 DUP7 ADD PUSH2 0x47E9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x5452 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x4913 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5489 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54A1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54BA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54DB JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 CALLDATALOAD PUSH2 0x551B DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5508 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5550 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x557F JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55B9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E90 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5612 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x55ED JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x562B DUP2 DUP4 PUSH2 0x556C JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x5646 DUP3 DUP3 PUSH2 0x55A1 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x565B PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x559B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x566E DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x568A DUP3 PUSH2 0x5EEF JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x56A1 DUP3 PUSH2 0x5EDA JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x56B5 DUP2 PUSH2 0x5EEF JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x56D4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5E90 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x56F0 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x5E90 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5795 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5777 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x597B JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x5960 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x594B JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5A21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x59CA DUP2 PUSH2 0x5EC6 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x59F7 DUP3 DUP9 ADD DUP3 PUSH2 0x54EC JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x5A0C DUP7 DUP3 ADD DUP4 PUSH2 0x54EC JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59B5 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5A6B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55CD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5A82 DUP5 PUSH2 0x5EBC JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5A99 DUP6 PUSH2 0x5EBC JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AB8 DUP6 PUSH2 0x5EC6 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5ACF PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x556C JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x5AF0 DUP13 PUSH2 0x5ED0 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5B97 JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x5B83 DUP2 DUP9 ADD DUP4 PUSH2 0x55A1 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5B17 JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5BAE DUP2 DUP11 DUP13 PUSH2 0x54F9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5BBE PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x5663 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x5BD1 DUP2 DUP7 DUP9 PUSH2 0x5541 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x756E7772617070696E67206661696C6564000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x7772617070696E67206661696C65640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x554E48414E444C45445F504F4F4C5F4B494E4400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x5D4D DUP2 PUSH2 0x5ED0 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x5D9B PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x55A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5DAB PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5E86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EAB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E93 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x735 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0x2E SWAP5 CREATE2 0xF6 SWAP4 CALLCODE 0xD 0xBB 0xC9 SWAP3 PUSH10 0x43DC24B7AD7FF971060B SGT JUMP PUSH31 0x18EA07BD5138E864736F6C6343000701003360C06040523480156100105760 STOP DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9F6 CODESIZE SUB DUP1 PUSH2 0x9F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x107 JUMP JUMPDEST DUP1 PUSH2 0x39 DUP2 PUSH2 0x5D JUMP JUMPDEST POP POP PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x203 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x70 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x74 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE2 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC7 JUMP JUMPDEST POP PUSH2 0xEE SWAP3 SWAP2 POP PUSH2 0xF2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x126 DUP2 PUSH2 0x1EB JUMP JUMPDEST DUP1 SWAP4 POP POP PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH2 0x139 DUP2 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x155 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x168 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x176 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x195 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH2 0x1AB JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x1CC JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH2 0x1AF JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x1DC JUMPI DUP6 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x7C1 PUSH2 0x235 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x2F0 MSTORE POP DUP1 PUSH1 0x63 MSTORE DUP1 PUSH2 0x201 MSTORE POP PUSH2 0x7C1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x7678922E EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF5 JUMPI PUSH2 0x8E JUMP JUMPDEST CALLDATASIZE PUSH2 0x8E JUMPI PUSH2 0x8C CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA8 PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x638 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0x560 JUMP JUMPDEST PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB5 SWAP2 SWAP1 PUSH2 0x659 JUMP JUMPDEST DUP2 PUSH2 0x123 JUMPI PUSH2 0x123 DUP2 PUSH2 0x34F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1D1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x22D PUSH2 0x37C JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x278 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x263 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x338 JUMPI PUSH2 0x319 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x295 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x6F1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x395 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x325 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27E JUMP JUMPDEST POP PUSH2 0x341 PUSH2 0x418 JUMP JUMPDEST PUSH2 0x349 PUSH2 0x429 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x379 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x42F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x38E PUSH1 0x2 PUSH1 0x1 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x619 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4AA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH2 0x379 CALLER DUP3 PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B9 JUMPI POP DUP1 PUSH2 0x349 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x349 PUSH2 0x1AE PUSH2 0x34F JUMP JUMPDEST PUSH2 0x4E3 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x509 SWAP1 PUSH2 0x635 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x54B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x55B DUP2 PUSH2 0x1A4 PUSH2 0x115 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x572 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x589 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x59C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5AA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x5E7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x75B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x62B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x75B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6CA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x6B8 DUP6 DUP4 MLOAD PUSH2 0x5CF JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67E JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x6EA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x725 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x776 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x75E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x785 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG4 DUP14 0xF7 0xEE 0x26 EXTCODESIZE SWAP15 0xC1 CREATE 0x2E NUMBER 0xE8 0xCA 0xAE 0x1E SWAP16 DUP4 0xBC DUP2 CREATE2 0xDA 0xD 0xE3 GASLIMIT 0xA6 0x4A PUSH25 0xAFAF6947F364736F6C63430007010033000000000000000000 ","sourceMap":"828:588:113:-:0;;;8361:42:94;8312:91;;943:203:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1094:5;1101:6;1109;1117:21;1875:326:86;;;;;;;;;;;;2085:6;2106;2114:21;2056:5;2063:7;2402:5:94;-1:-1:-1;;;;;2402:10:94;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:81;;;;;;;;2426:14:94;;;;;::::1;::::0;2464:50:::1;::::0;2435:5;;2499:4:::1;::::0;2506:7;;2464:50:::1;::::0;::::1;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2450:64:94::1;::::0;;;;;::::1;::::0;1593:32:98;;;;;;;;-1:-1:-1;1635:46:98;;;;;;-1:-1:-1;;;;;;1662:19:101;;:66;;1726:1;1662:66;;;1700:6;-1:-1:-1;;;;;1684:30:101;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1653:75:101;;;;;;;;1738:34;;;;;;-1:-1:-1;828:588:113;;-1:-1:-1;;;;;;;;828:588:113;;;;;;;;;:::o;1009:772:-1:-;;;;;1225:3;1213:9;1204:7;1200:23;1196:33;1193:2;;;-1:-1;;1232:12;1193:2;597:6;591:13;609:48;651:5;609:48;:::i;:::-;1410:2;1475:22;;420:13;1284:89;;-1:-1;438:48;420:13;438:48;:::i;:::-;1544:2;1617:22;;241:13;1418:89;;-1:-1;259:56;241:13;259:56;:::i;:::-;1686:2;1733:22;;80:13;1552:97;;-1:-1;4057:13;;4050:21;5509:32;;5499:2;;-1:-1;;5545:12;5499:2;1187:594;;;;-1:-1;1187:594;;-1:-1;;1187:594::o;1788:291::-;;1917:2;1905:9;1896:7;1892:23;1888:32;1885:2;;;-1:-1;;1923:12;1885:2;767:6;761:13;779:47;820:5;779:47;:::i;:::-;1975:88;1879:200;-1:-1;;;1879:200::o;3023:562::-;;4728:42;;;;;;3973:5;4717:54;2599:3;2592:65;3420:2;4728:42;3973:5;4717:54;3420:2;3409:9;3405:18;2457:37;3241:2;3457;3446:9;3442:18;3435:48;2814:5;3680:12;2767:53;;3837:6;3241:2;3230:9;3226:18;3825:19;-1:-1;5144:101;5158:6;5155:1;5152:13;5144:101;;;5225:11;;;;;5219:18;5206:11;;;3865:14;5206:11;5199:39;5173:10;;5144:101;;;5260:6;5257:1;5254:13;5251:2;;;-1:-1;3865:14;5316:6;3230:9;5307:16;;5300:27;5251:2;-1:-1;;5432:7;5416:14;-1:-1;;5412:28;2972:39;;;;3865:14;2972:39;;3212:373;-1:-1;;;;3212:373::o;5571:163::-;-1:-1;;;;;4717:54;;5653:58;;5643:2;;5725:1;;5715:12;5643:2;5637:97;:::o;:::-;828:588:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14060":[{"length":32,"start":9133},{"length":32,"start":9990}],"14062":[{"length":32,"start":8877}],"14433":[{"length":32,"start":15925}],"14838":[{"length":32,"start":4931},{"length":32,"start":9743}],"14840":[{"length":32,"start":2119},{"length":32,"start":6020}],"15519":[{"length":32,"start":3194},{"length":32,"start":3973},{"length":32,"start":4137},{"length":32,"start":13430}],"15521":[{"length":32,"start":1866},{"length":32,"start":2035},{"length":32,"start":2078},{"length":32,"start":3227},{"length":32,"start":3271},{"length":32,"start":3434},{"length":32,"start":13223},{"length":32,"start":13267}]},"linkReferences":{},"object":"6080604052600436106102f25760003560e01c80637ab6e03c1161018f578063959fc17a116100e1578063d80952d51161008a578063efe6910811610064578063efe691081461065a578063f3cab6851461066d578063f4dd54b01461068d576102f2565b8063d80952d514610621578063db4c0e9114610634578063e8210e3c14610647576102f2565b8063b6d24737116100bb578063b6d24737146105db578063c518e531146105ee578063d293f2901461060e576102f2565b8063959fc17a146105a2578063abf6d399146105b5578063b064b376146105c8576102f2565b80638b35ac8d116101435780638d928af81161011d5780638d928af8146105675780638fe4624f1461057c578063941e849b1461058f576102f2565b80638b35ac8d1461052e5780638c57198b146105415780638d64cfbc14610554576102f2565b80637fd0e5d5116101745780637fd0e5d5146104e657806380db15bd14610508578063837f9bcb1461051b576102f2565b80637ab6e03c146104c05780637bc008f5146104d3576102f2565b8063433b0865116102485780635001fe75116101fc578063611b90dd116101d6578063611b90dd1461048757806365ca48041461049a5780636d307ea8146104ad576102f2565b80635001fe751461044157806352b88746146104545780635967b69614610467576102f2565b806348699d581161022d57806348699d58146104085780634e9d9bab1461041b5780634f06a70b1461042e576102f2565b8063433b0865146103e257806344b6ac74146103f5576102f2565b80631c982441116102aa5780632e6272ea116102845780632e6272ea146103a9578063311c5c57146103bc5780633f85d390146103cf576102f2565b80631c982441146103705780632c25efe1146103835780632cbec84e14610396576102f2565b806310f3aaff116102db57806310f3aaff1461031f578063138fdc2c1461034a578063183694461461035d576102f2565b80630e248fea146102f75780631089e5e31461030c575b600080fd5b61030a610305366004614b16565b6106a0565b005b61030a61031a366004614a98565b61073b565b34801561032b57600080fd5b50610334610845565b6040516103419190615a2e565b60405180910390f35b61030a610358366004614efb565b610869565b61030a61036b36600461528e565b610a6c565b61030a61037e366004614973565b610c75565b61030a610391366004614efb565b610d98565b61030a6103a4366004614a98565b610f76565b61030a6103b736600461538a565b611050565b61030a6103ca366004614efb565b611170565b61030a6103dd366004614acc565b611310565b61030a6103f036600461512c565b6113da565b61030a610403366004614efb565b611603565b61030a6104163660046149b8565b611782565b61030a610429366004614efb565b6117c8565b61030a61043c366004614efb565b611a23565b61030a61044f366004614efb565b611b34565b61030a61046236600461506f565b611cbf565b34801561047357600080fd5b5061030a610482366004615478565b611e63565b61030a610495366004614efb565b611ea5565b61030a6104a83660046150dc565b611f48565b61030a6104bb366004614efb565b612066565b61030a6104ce36600461512c565b6120a1565b61030a6104e13660046150dc565b6121a7565b3480156104f257600080fd5b506104fb6122ab565b6040516103419190615711565b61030a610516366004614a0b565b6122cf565b61030a610529366004614be6565b6123d3565b61030a61053c366004614efb565b6125a3565b61030a61054f366004614d5f565b6125df565b61030a610562366004614fd6565b61268a565b34801561057357600080fd5b506104fb612704565b61030a61058a366004614e6b565b612728565b61030a61059d366004614efb565b612952565b61030a6105b0366004614f55565b612a9d565b61030a6105c3366004614efb565b612b1a565b61030a6105d6366004614efb565b612bcd565b61030a6105e9366004615044565b612d10565b3480156105fa57600080fd5b5061030a6106093660046154a8565b612d4a565b61030a61061c366004614efb565b612d54565b61030a61062f366004614dc2565b612e14565b61030a610642366004614973565b6133a2565b61030a610655366004614efb565b61349d565b61030a610668366004614efb565b6134d8565b61068061067b366004615478565b613517565b6040516103419190615dbd565b61030a61069b366004614efb565b613529565b8060005b81811015610735578383828181106106b857fe5b90506020020160208101906106cd919061493b565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016106f89190615711565b600060405180830381600087803b15801561071257600080fd5b505af1158015610726573d6000803e3d6000fd5b505050508060010190506106a4565b50505050565b61074482613655565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0e38900846040518263ffffffff1660e01b81526004016107949190615dbd565b60206040518083038186803b1580156107ac57600080fd5b505afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190615490565b90506108196001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168461367b565b6107357f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a457600080fd5b505afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190614957565b90506000816001600160a01b0316632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190614957565b905061095f81838689613723565b6040517f9aa5d4620000000000000000000000000000000000000000000000000000000081529094506001600160a01b03831690639aa5d462906109ac9087908990600090600401615dfc565b600060405180830381600087803b1580156109c657600080fd5b505af11580156109da573d6000803e3d6000fd5b50505050610a6383836001600160a01b0316634d778ad1876040518263ffffffff1660e01b8152600401610a0e9190615dbd565b60206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e9190615490565b61374e565b50505050505050565b33610a7a602089018961493b565b6001600160a01b03161480610aa3575030610a98602089018961493b565b6001600160a01b0316145b610ac85760405162461bcd60e51b8152600401610abf90615c1f565b60405180910390fd5b60005b8a51811015610b2d5760008b8281518110610ae257fe5b6020026020010151606001519050610af981613766565b15610b2457610b07816137ad565b8c8381518110610b1357fe5b602002602001015160600181815250505b50600101610acb565b506060610b38612704565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610b72989796959493929190615adf565b6000604051808303818588803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610bc89190810190614b56565b905060005b82811015610c6657610bf3848483818110610be457fe5b90506040020160200135613766565b610c0f5760405162461bcd60e51b8152600401610abf90615cfb565b610c5e848483818110610c1e57fe5b90506040020160200135610c5984878786818110610c3857fe5b9050604002016000013581518110610c4c57fe5b60200260200101516137d8565b6137e4565b600101610bcd565b50505050505050505050505050565b610cc17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008487613723565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea598cb0846040518263ffffffff1660e01b8152600401610d119190615dbd565b602060405180830381600087803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190615490565b9050610d917f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b5050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190614957565b9050610e1981878588613723565b6040517fa0712d680000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063a0712d6890610e61908690600401615dbd565b602060405180830381600087803b158015610e7b57600080fd5b505af1158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190615490565b15610ed05760405162461bcd60e51b8152600401610abf90615c8d565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038816906370a0823190610f18903090600401615711565b60206040518083038186803b158015610f3057600080fd5b505afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190615490565b9050610a63878683866136f5565b610f7f82613655565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610fd09190615711565b6020604051808303818588803b158015610fe957600080fd5b505af1158015610ffd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110229190615490565b90506107357f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b3361105e602087018761493b565b6001600160a01b0316148061108757503061107c602087018761493b565b6001600160a01b0316145b6110a35760405162461bcd60e51b8152600401610abf90615c1f565b6110b08660800151613766565b156110c8576110c286608001516137ad565b60808701525b60006110d2612704565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b81526004016111049493929190615d32565b6020604051808303818588803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111569190615490565b905061116182613766565b15610a6357610a6382826137e4565b61117b8583866137f7565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b857600080fd5b505afa1580156111cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f09190614957565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611238908690600401615dbd565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a08231906112b2903090600401615711565b60206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190615490565b9050610a63828683866136f5565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f73849061137c90879087903390600401615938565b602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190615490565b9050610735828261374e565b6113e383613766565b156113f4576113f1836137ad565b92505b60008261147357866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190614957565b6114e6565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ae57600080fd5b505af11580156114c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e69190614957565b90506001600160a01b038616301461152b576001600160a01b03861633146115205760405162461bcd60e51b8152600401610abf90615c1f565b61152b868286613843565b61153f6001600160a01b03821688866138df565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab879061158d908990899086908a9060040161590c565b602060405180830381600087803b1580156115a757600080fd5b505af11580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190615490565b90506115ea83613766565b156115f9576115f983826137e4565b5050505050505050565b61160e8583866137f7565b91506000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116839190614957565b6040517fdb006a750000000000000000000000000000000000000000000000000000000081529091506001600160a01b0387169063db006a75906116cb908690600401615dbd565b602060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190615490565b1561173a5760405162461bcd60e51b8152600401610abf90615be8565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a08231906112b2903090600401615711565b7f0000000000000000000000000000000000000000000000000000000000000000156117b8576117b3838383613a2b565b6117c3565b6117c3838383613ade565b505050565b6117d38583866137f7565b91506000856001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b15801561181057600080fd5b505afa158015611824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118489190614957565b90506000866001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd9190614957565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063ead5d3599061192a9084907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906000906004016158e9565b6040805180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197b91906154c9565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038316906370a08231906119c5903090600401615711565b60206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a159190615490565b90506115f9828783876136f5565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5e57600080fd5b505afa158015611a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a969190614957565b9050611aa481878588613723565b92506000866001600160a01b0316636e553f6585876040518363ffffffff1660e01b8152600401611ad6929190615dc6565b602060405180830381600087803b158015611af057600080fd5b505af1158015611b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b289190615490565b9050610a63838261374e565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b6f57600080fd5b505afa158015611b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba79190614957565b90506000866001600160a01b031663eb3beb296040518163ffffffff1660e01b815260040160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190614957565b9050611c2a82828689613723565b93506000816001600160a01b031663fbf178db84888860006040518563ffffffff1660e01b8152600401611c6194939291906157bd565b6040805180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb291906154c9565b9150506115f9848261374e565b6000866001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cfa57600080fd5b505afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190614957565b9050611d4081878588613723565b6040517fe2bbb1580000000000000000000000000000000000000000000000000000000081529093506001600160a01b0388169063e2bbb15890611d8b906000908790600401615703565b600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b038a1691506370a0823190611e05903090600401615711565b60206040518083038186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e559190615490565b90506115f9888683866136f5565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb078752611e8d826137ad565b604051611e9a9190615dbd565b60405180910390a150565b611eb08583866137f7565b91506000856001600160a01b031663ea785a5e85856040518363ffffffff1660e01b8152600401611ee29291906158d0565b602060405180830381600087803b158015611efc57600080fd5b505af1158015611f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f349190615490565b9050611f40828261374e565b505050505050565b611f538482856137f7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690632e1a7d4d90611f9b908490600401615dbd565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050506001600160a01b0382163014610735576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561201857600080fd5b505afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190614957565b9050610d916001600160a01b0382168484613bf8565b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5e57600080fd5b6120aa83613766565b156120bb576120b8836137ad565b92505b6001600160a01b03851630146120fe576001600160a01b03851633146120f35760405162461bcd60e51b8152600401610abf90615c1f565b6120fe858785613843565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d3599061214a908890889088906004016158e9565b6040805180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b91906154c9565b91505061116182613766565b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e257600080fd5b505afa1580156121f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221a9190614957565b905061222881868487613723565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690636e553f65906122729085908790600401615dc6565b600060405180830381600087803b15801561228c57600080fd5b505af11580156122a0573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806122e4575082155b6123005760405162461bcd60e51b8152600401610abf90615c56565b606063fa6e671d60e01b33868660405160240161231f93929190615725565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161238e9286918691016156de565b60408051601f198184030181529190529050611f406001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613c17565b60005b84518110156124b357336001600160a01b03168582815181106123f557fe5b6020026020010151606001516001600160a01b0316148061243e5750306001600160a01b031685828151811061242757fe5b6020026020010151606001516001600160a01b0316145b61245a5760405162461bcd60e51b8152600401610abf90615c1f565b600085828151811061246857fe5b602002602001015160400151905061247f81613766565b156124aa5761248d816137ad565b86838151811061249957fe5b602002602001015160400181815250505b506001016123d6565b506124bc612704565b6001600160a01b0316630e8e3e8484866040518363ffffffff1660e01b81526004016124e89190615998565b6000604051808303818588803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050505060005b81811015610d9157612534838383818110610be457fe5b6125505760405162461bcd60e51b8152600401610abf90615cfb565b61259b83838381811061255f57fe5b905060400201602001358685858581811061257657fe5b905060400201600001358151811061258a57fe5b6020026020010151604001516137e4565b60010161251d565b6125ae8583866137f7565b91506000856001600160a01b031662f714ce84866040518363ffffffff1660e01b8152600401611ee2929190615dc6565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906126509030908a908a908a908a908a908a90600401615870565b600060405180830381600087803b15801561266a57600080fd5b505af115801561267e573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876126a2612704565b88888888886040518863ffffffff1660e01b81526004016126c9979695949392919061582f565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03851633148061274757506001600160a01b03851630145b6127635760405162461bcd60e51b8152600401610abf90615c1f565b600061276e88613c91565b9050600061277b83613766565b61278657600061281b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a08231906127cb908990600401615711565b60206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281b9190615490565b905061282b888660400151613c97565b6040860152612838612704565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b815260040161286a9493929190615a39565b6000604051808303818588803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b50505050506128a583613766565b156122a0576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a08231906128f2908a90600401615711565b60206040518083038186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129429190615490565b905061267e84610c598385613d1e565b61295d8583866137f7565b6040517f441a3e700000000000000000000000000000000000000000000000000000000081529092506001600160a01b0386169063441a3e70906129c8906000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401615703565b600060405180830381600087803b1580156129e257600080fd5b505af11580156129f6573d6000803e3d6000fd5b505050506000856001600160a01b0316637158da7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3557600080fd5b505afa158015612a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6d9190614957565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112b29190615711565b876001600160a01b0316638fcbaf0c88612ab5612704565b8989898989896040518963ffffffff1660e01b8152600401612ade9897969594939291906157e6565b600060405180830381600087803b158015612af857600080fd5b505af1158015612b0c573d6000803e3d6000fd5b505050505050505050505050565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5557600080fd5b505afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190614957565b9050612b9b81878588613723565b92506000866001600160a01b0316632f4f21e286866040518363ffffffff1660e01b8152600401611ad69291906158d0565b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c409190614957565b9050612c4e81878588613723565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081529093506001600160a01b0387169063b6b55f2590612c96908690600401615dbd565b600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190610f18903090600401615711565b612d1981613766565b15612d2a57612d27816137ad565b90505b612d46612d35612704565b6001600160a01b03841690836138df565b5050565b612d4682826137e4565b612d5f8583866137f7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529092506001600160a01b03861690632e1a7d4d90612da7908590600401615dbd565b600060405180830381600087803b158015612dc157600080fd5b505af1158015612dd5573d6000803e3d6000fd5b505050506000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3557600080fd5b6001600160a01b038516331480612e3357506001600160a01b03851630145b612e4f5760405162461bcd60e51b8152600401610abf90615c1f565b60608167ffffffffffffffff81118015612e6857600080fd5b50604051908082528060200260200182016040528015612e92578160200160208202803683370190505b50905060608267ffffffffffffffff81118015612eae57600080fd5b50604051908082528060200260200182016040528015612ed8578160200160208202803683370190505b50905060005b8381101561304857612ef5858583818110610be457fe5b612f115760405162461bcd60e51b8152600401610abf90615cfb565b8551600090868684818110612f2257fe5b9050604002016000013581518110612f3657fe5b60200260200101519050866060015115612f8457612f5381613d34565b848381518110612f5f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061303f565b612f8d81613d37565b61301a57612f9a81613d34565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612fc59190615711565b60206040518083038186803b158015612fdd57600080fd5b505afa158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130159190615490565b613026565b876001600160a01b0316315b83838151811061303257fe5b6020026020010181815250505b50600101612ede565b508460600151156130df5761305b612704565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b8152600401613088929190615749565b60006040518083038186803b1580156130a057600080fd5b505afa1580156130b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130dc9190810190614d10565b90505b6130ed888660400151613d44565b60408601526130fa612704565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161312b9493929190615a39565b600060405180830381600087803b15801561314557600080fd5b505af1158015613159573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561317857600080fd5b506040519080825280602002602001820160405280156131a2578160200160208202803683370190505b50905085606001511561323f576131b7612704565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016131e4929190615749565b60006040518083038186803b1580156131fc57600080fd5b505afa158015613210573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132389190810190614d10565b905061333d565b60005b8481101561333b57865160009087878481811061325b57fe5b905060400201600001358151811061326f57fe5b6020026020010151905061328281613d37565b61330f5761328f81613d34565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016132ba9190615711565b60206040518083038186803b1580156132d257600080fd5b505afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190615490565b61331b565b886001600160a01b0316315b83838151811061332757fe5b602090810291909101015250600101613242565b505b60005b848110156126f75761339a86868381811061335757fe5b90506040020160200135610c5985848151811061337057fe5b602002602001015185858151811061338457fe5b6020026020010151613d1e90919063ffffffff16565b600101613340565b6133cd7f000000000000000000000000000000000000000000000000000000000000000083866137f7565b915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de0e9a3e846040518263ffffffff1660e01b815260040161341d9190615dbd565b602060405180830381600087803b15801561343757600080fd5b505af115801561344b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346f9190615490565b9050610d917f00000000000000000000000000000000000000000000000000000000000000008583856136f5565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b6134e38583866137f7565b91506000856001600160a01b031663ba0876528486306040518463ffffffff1660e01b8152600401611ee293929190615ddd565b600061352282613dba565b9392505050565b6135348583866137f7565b91506000856001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561357157600080fd5b505afa158015613585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a99190614957565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906305fe138b906135f39086908890600401615dc6565b600060405180830381600087803b15801561360d57600080fd5b505af1158015613621573d6000803e3d6000fd5b50505050611f4082826001600160a01b0316635427c938866040518263ffffffff1660e01b8152600401610a0e9190615dbd565b600061366082613766565b61366a5781613673565b613673826137ad565b90505b919050565b61368a814710156101a3613dd1565b6000826001600160a01b0316826040516136a390613d34565b60006040518083038185875af1925050503d80600081146136e0576040519150601f19603f3d011682016040523d82523d6000602084013e6136e5565b606091505b505090506117c3816101a4613dd1565b6001600160a01b0383163014613719576137196001600160a01b0385168484613bf8565b610735818361374e565b60006137308584846137f7565b90506137466001600160a01b03861685836138df565b949350505050565b61375782613766565b15612d4657612d4682826137e4565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006137bb84613dba565b915091506137c884613ddf565b1561352257600082559392505050565b60ff81901d9081180390565b60006137ef83613e26565b919091555050565b600061380283613655565b90506001600160a01b0382163014613522576001600160a01b038216331461383c5760405162461bcd60e51b8152600401610abf90615c1f565b6135228285835b8061384d576117c3565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061387d57fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106138c857fe5b602002602001018181525050610d91858383613e84565b801580159061398357506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e9061393090309086906004016157a3565b60206040518083038186803b15801561394857600080fd5b505afa15801561395c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139809190615490565b15155b15613a0c57613a0c8363095ea7b360e01b8460006040516024016139a89291906158b4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613fd2565b6117c38363095ea7b360e01b84846040516024016139a89291906158d0565b8060005b81811015610d9157838382818110613a4357fe5b9050602002016020810190613a58919061493b565b6001600160a01b0316634b820093866040518263ffffffff1660e01b8152600401613a839190615711565b602060405180830381600087803b158015613a9d57600080fd5b505af1158015613ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad59190614d43565b50600101613a2f565b8060608167ffffffffffffffff81118015613af857600080fd5b50604051908082528060200260200182016040528015613b3257816020015b613b1f614523565b815260200190600190039081613b175790505b50905060005b82811015613bc4576040805160a081019091528060038152602001868684818110613b5f57fe5b9050602002016020810190613b74919061493b565b6001600160a01b0316815260200160018152602001876001600160a01b03168152602001876001600160a01b0316815250828281518110613bb157fe5b6020908102919091010152600101613b38565b50613bcd612704565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016122729190615998565b6117c38363a9059cbb60e01b84846040516024016139a89291906158d0565b606060006060846001600160a01b031684604051613c3591906156c2565b6000604051808303816000865af19150503d8060008114613c72576040519150601f19603f3d011682016040523d82523d6000602084013e613c77565b606091505b5091509150613c868282614072565b925050505b92915050565b60601c90565b60606000836003811115613ca757fe5b1415613cbd57613cb68261409c565b9050613c8b565b6001836003811115613ccb57fe5b1480613ce257506002836003811115613ce057fe5b145b80613cf857506003836003811115613cf657fe5b145b15613d0657613cb68261409c565b60405162461bcd60e51b8152600401610abf90615cc4565b6000613d2e838311156001613dd1565b50900390565b90565b6001600160a01b03161590565b60606000836003811115613d5457fe5b1415613d6357613cb6826140d9565b6001836003811115613d7157fe5b1415613d8057613cb682614122565b6002836003811115613d8e57fe5b1415613d9d57613cb682614168565b6003836003811115613dab57fe5b1415613d0657613cb682614194565b600080613dc683613e26565b915081549050915091565b81612d4657612d46816141c7565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001613e33836141f4565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613e65929190615703565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015613e9e57600080fd5b50604051908082528060200260200182016040528015613ed857816020015b613ec5614523565b815260200190600190039081613ebd5790505b50905060005b8351811015613f70576040805160a081019091528060038152602001858381518110613f0657fe5b60200260200101516001600160a01b03168152602001848381518110613f2857fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110613f5d57fe5b6020908102919091010152600101613ede565b50613f79612704565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613fa49190615998565b600060405180830381600087803b158015613fbe57600080fd5b505af11580156115f9573d6000803e3d6000fd5b60006060836001600160a01b031683604051613fee91906156c2565b6000604051808303816000865af19150503d806000811461402b576040519150601f19603f3d011682016040523d82523d6000602084013e614030565b606091505b50915091506000821415614048573d6000803e3d6000fd5b61073581516000148061406a57508180602001905181019061406a9190614d43565b6101a2613dd1565b60608215614081575080613c8b565b8151156140915781518083602001fd5b613c8b6101ae6141c7565b606060006140a983614217565b905060018160038111156140b957fe5b14156140d0576140c88361422d565b915050613676565b82915050613676565b606060006140e68361427f565b905060008160028111156140f657fe5b1415614105576140c883614295565b600181600281111561411357fe5b14156140d0576140c8836142f8565b6060600061412f8361427f565b600281111561413a57fe5b905060ff811661414e576140c8838261434b565b60015b60ff168160ff1614156140d0576140c883826143ad565b606060006141758361427f565b600281111561418057fe5b905060ff81166140d0576140c8838261434b565b606060006141a18361427f565b60028111156141ac57fe5b905060ff81166141c0576140c8838261434b565b6002614151565b6141f1817f42414c0000000000000000000000000000000000000000000000000000000000614408565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190613673919061521a565b606080600061423b84614469565b915091506142488261448c565b6142525783613746565b6001828260405160200161426893929190615aad565b604051602081830303815290604052949350505050565b600081806020019051810190613673919061519b565b60606000806142a3846144f6565b915091506142b082613766565b156142ee576142be826137ad565b9150600082826040516020016142d693929190615a8c565b60405160208183030381529060405292505050613676565b8392505050613676565b606060006143058361450d565b905061431081613766565b156140d05761431e816137ad565b9050600181604051602001614334929190615a75565b604051602081830303815290604052915050613676565b6060600080614359856144f6565b9150915061436682613766565b156143a357614374826137ad565b915083828260405160200161438b93929190615e2e565b60405160208183030381529060405292505050613c8b565b8492505050613c8b565b606060006143ba8461450d565b90506143c581613766565b156143ff576143d3816137ad565b905082816040516020016143e8929190615e1b565b604051602081830303815290604052915050613c8b565b83915050613c8b565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000828060200190518101906144819190615236565b909590945092505050565b600080805b83518110156144ef5760008482815181106144a857fe5b602002602001015190506144bb81613766565b156144e6576144c9816137ad565b8583815181106144d557fe5b602002602001018181525050600192505b50600101614491565b5092915050565b6000808280602001905181019061448191906151e4565b60008180602001905181019061352291906151b7565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035613c8b81615eda565b60008083601f84011261456f578182fd5b50813567ffffffffffffffff811115614586578182fd5b60208301915083602080830285010111156145a057600080fd5b9250929050565b600082601f8301126145b7578081fd5b81356145ca6145c582615e70565b615e49565b8181529150602080830190848101818402860182018710156145eb57600080fd5b60005b8481101561461357813561460181615eda565b845292820192908201906001016145ee565b505050505092915050565b600082601f83011261462e578081fd5b813561463c6145c582615e70565b818152915060208083019084810160005b84811015614613578135870160a080601f19838c0301121561466e57600080fd5b61467781615e49565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156146b957600080fd5b6146c78c88858701016147e9565b9082015286525050928201929082019060010161464d565b60008083601f8401126146f0578182fd5b50813567ffffffffffffffff811115614707578182fd5b6020830191508360206040830285010111156145a057600080fd5b600082601f830112614732578081fd5b81356147406145c582615e70565b81815291506020808301908481018184028601820187101561476157600080fd5b60005b8481101561461357813584529282019290820190600101614764565b600082601f830112614790578081fd5b815161479e6145c582615e70565b8181529150602080830190848101818402860182018710156147bf57600080fd5b60005b84811015614613578151845292820192908201906001016147c2565b8035613c8b81615eef565b600082601f8301126147f9578081fd5b813567ffffffffffffffff81111561480f578182fd5b6148226020601f19601f84011601615e49565b915080825283602082850101111561483957600080fd5b8060208401602084013760009082016020015292915050565b8035613c8b81615f0a565b803560028110613c8b57600080fd5b60006080828403121561487d578081fd5b6148876080615e49565b9050813567ffffffffffffffff808211156148a157600080fd5b6148ad858386016145a7565b835260208401359150808211156148c357600080fd5b6148cf85838601614722565b602084015260408401359150808211156148e857600080fd5b506148f5848285016147e9565b60408301525061490883606084016147de565b606082015292915050565b600060808284031215614924578081fd5b50919050565b803560ff81168114613c8b57600080fd5b60006020828403121561494c578081fd5b813561352281615eda565b600060208284031215614968578081fd5b815161352281615eda565b60008060008060808587031215614988578283fd5b843561499381615eda565b935060208501356149a381615eda565b93969395505050506040820135916060013590565b6000806000604084860312156149cc578081fd5b83356149d781615eda565b9250602084013567ffffffffffffffff8111156149f2578182fd5b6149fe8682870161455e565b9497909650939450505050565b60008060008060608587031215614a20578182fd5b8435614a2b81615eda565b93506020850135614a3b81615eef565b9250604085013567ffffffffffffffff80821115614a57578384fd5b818701915087601f830112614a6a578384fd5b813581811115614a78578485fd5b886020828501011115614a89578485fd5b95989497505060200194505050565b600080600060608486031215614aac578081fd5b8335614ab781615eda565b95602085013595506040909401359392505050565b600080600060408486031215614ae0578081fd5b833567ffffffffffffffff811115614af6578182fd5b614b028682870161455e565b909790965060209590950135949350505050565b60008060208385031215614b28578182fd5b823567ffffffffffffffff811115614b3e578283fd5b614b4a8582860161455e565b90969095509350505050565b60006020808385031215614b68578182fd5b825167ffffffffffffffff811115614b7e578283fd5b8301601f81018513614b8e578283fd5b8051614b9c6145c582615e70565b8181528381019083850185840285018601891015614bb8578687fd5b8694505b83851015614bda578051835260019490940193918501918501614bbc565b50979650505050505050565b60008060008060608587031215614bfb578182fd5b843567ffffffffffffffff80821115614c12578384fd5b818701915087601f830112614c25578384fd5b8135614c336145c582615e70565b808282526020808301925080860160a08d838288028a01011115614c5557898afd5b8997505b85881015614cd85780828f031215614c6f57898afd5b614c7881615e49565b614c828f84614852565b8152614c908f858501614553565b8482015260408301356040820152614cab8f60608501614553565b6060820152614cbd8f60808501614553565b60808201528552600197909701969382019390810190614c59565b509199508a013597505050604088013592505080821115614cf7578384fd5b50614d04878288016146df565b95989497509550505050565b600060208284031215614d21578081fd5b815167ffffffffffffffff811115614d37578182fd5b61374684828501614780565b600060208284031215614d54578081fd5b815161352281615eef565b60008060008060008060c08789031215614d77578384fd5b8635614d8281615eef565b95506020870135614d9281615eda565b945060408701359350614da8886060890161492a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215614ddc578485fd5b873596506020880135614dee81615f0a565b95506040880135614dfe81615eda565b94506060880135614e0e81615eda565b9350608088013567ffffffffffffffff80821115614e2a578283fd5b614e368b838c0161486c565b945060a08a0135915080821115614e4b578283fd5b50614e588a828b016146df565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614e85578081fd5b873596506020880135614e9781615f0a565b95506040880135614ea781615eda565b94506060880135614eb781615eda565b9350608088013567ffffffffffffffff811115614ed2578182fd5b614ede8a828b0161486c565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600060a08688031215614f12578283fd5b8535614f1d81615eda565b94506020860135614f2d81615eda565b93506040860135614f3d81615eda565b94979396509394606081013594506080013592915050565b600080600080600080600080610100898b031215614f71578182fd5b8835614f7c81615eda565b97506020890135614f8c81615eda565b965060408901359550606089013594506080890135614faa81615eef565b9350614fb98a60a08b0161492a565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614ff0578081fd5b8735614ffb81615eda565b9650602088013561500b81615eda565b955060408801359450606088013593506150288960808a0161492a565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215615056578182fd5b823561506181615eda565b946020939093013593505050565b60008060008060008060c08789031215615087578384fd5b863561509281615eda565b955060208701356150a281615eda565b945060408701356150b281615eda565b935060608701356150c281615eda565b9598949750929560808101359460a0909101359350915050565b600080600080608085870312156150f1578182fd5b84356150fc81615eda565b9350602085013561510c81615eda565b9250604085013561511c81615eda565b9396929550929360600135925050565b60008060008060008060c08789031215615144578384fd5b863561514f81615eda565b9550602087013561515f81615eda565b9450604087013561516f81615eda565b935060608701359250608087013561518681615eef565b8092505060a087013590509295509295509295565b6000602082840312156151ac578081fd5b815161352281615efd565b600080604083850312156151c9578182fd5b82516151d481615efd565b6020939093015192949293505050565b6000806000606084860312156151f8578081fd5b835161520381615efd565b602085015160409095015190969495509392505050565b60006020828403121561522b578081fd5b815161352281615f0a565b60008060006060848603121561524a578081fd5b835161525581615f0a565b602085015190935067ffffffffffffffff811115615271578182fd5b61527d86828701614780565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e0312156152af578485fd5b6152b98d8d61485d565b9a5067ffffffffffffffff8060208e013511156152d4578586fd5b6152e48e60208f01358f0161461e565b9a508060408e013511156152f6578586fd5b6153068e60408f01358f0161455e565b909a5098506153188e60608f01614913565b97508060e08e0135111561532a578586fd5b61533a8e60e08f01358f0161455e565b90975095506101008d013594506101208d013593506101408d0135811015615360578283fd5b506153728d6101408e01358e016146df565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156153a3578384fd5b863567ffffffffffffffff808211156153ba578586fd5b9088019060c0828b0312156153cd578586fd5b6153d760c0615e49565b823581526153e88b6020850161485d565b602082015260408301356153fb81615eda565b604082015261540d8b60608501614553565b60608201526080830135608082015260a08301358281111561542d578788fd5b6154398c8286016147e9565b60a0830152508098505050506154528860208901614913565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b600060208284031215615489578081fd5b5035919050565b6000602082840312156154a1578081fd5b5051919050565b600080604083850312156154ba578182fd5b50508035926020909101359150565b600080604083850312156154db578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561553657813561551b81615eda565b6001600160a01b031687529582019590820190600101615508565b509495945050505050565b60008284526020808501945082825b8581101561553657813587529582019590820190600101615550565b6000815180845260208085019450808401835b838110156155365781518752958201959082019060010161557f565b15159052565b600081518084526155b9816020860160208601615e90565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156156125783516001600160a01b0316835292840192918401916001016155ed565b50508285015191508581038387015261562b818361556c565b925050506040830151848203604086015261564682826155a1565b915050606083015161565b606086018261559b565b509392505050565b803561566e81615eda565b6001600160a01b03908116835260208201359061568a82615eef565b90151560208401526040820135906156a182615eda565b16604083015260608101356156b581615eef565b8015156060840152505050565b600082516156d4818460208701615e90565b9190910192915050565b600084516156f0818460208901615e90565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b81811015615795578551851683529483019491830191600101615777565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561597b576020833561596081615eda565b6001600160a01b03168352928301929091019060010161594b565b5080925050506001600160a01b0383166020830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015615a2157815180516159ca81615ec6565b8552808701516001600160a01b03168786015285810151868601526060808201516159f7828801826154ec565b505060809081015190615a0c868201836154ec565b505060a09390930192908501906001016159b5565b5091979650505050505050565b901515815260200190565b60008582526001600160a01b03808616602084015280851660408401525060806060830152615a6b60808301846155cd565b9695505050505050565b60408101615a8284615ebc565b9281526020015290565b60608101615a9985615ebc565b938152602081019290925260409091015290565b6000615ab885615ec6565b84825260606020830152615acf606083018561556c565b9050826040830152949350505050565b6000610120808301615af08c615ed0565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015615b97578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615b83818801836155a1565b978601979650505090830190600101615b17565b505050508381036040850152615bae818a8c6154f9565b915050615bbe6060840188615663565b82810360e0840152615bd1818688615541565b915050826101008301529998505050505050505050565b60208082526011908201527f756e7772617070696e67206661696c6564000000000000000000000000000000604082015260600190565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b6020808252600f908201527f7772617070696e67206661696c65640000000000000000000000000000000000604082015260600190565b60208082526013908201527f554e48414e444c45445f504f4f4c5f4b494e4400000000000000000000000000604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151615d4d81615ed0565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152615d9b6101a08401826155a1565b915050615dab6020830186615663565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715615e6857600080fd5b604052919050565b600067ffffffffffffffff821115615e86578081fd5b5060209081020190565b60005b83811015615eab578181015183820152602001615e93565b838111156107355750506000910152565b600381106141f157fe5b600481106141f157fe5b600281106141f157fe5b6001600160a01b03811681146141f157600080fd5b80151581146141f157600080fd5b600381106141f157600080fd5b600481106141f157600080fdfea2646970667358221220092e94f5f693f20dbbc9926943dc24b7ad7ff971060b13567e18ea07bd5138e864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2F2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7AB6E03C GT PUSH2 0x18F JUMPI DUP1 PUSH4 0x959FC17A GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xD80952D5 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEFE69108 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xF4DD54B0 EQ PUSH2 0x68D JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x621 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x647 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x5EE JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x60E JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x959FC17A EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0xB064B376 EQ PUSH2 0x5C8 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D GT PUSH2 0x143 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x11D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x567 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x941E849B EQ PUSH2 0x58F JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x8B35AC8D EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x554 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 GT PUSH2 0x174 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x4E6 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0x837F9BCB EQ PUSH2 0x51B JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x4C0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x4D3 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x248 JUMPI DUP1 PUSH4 0x5001FE75 GT PUSH2 0x1FC JUMPI DUP1 PUSH4 0x611B90DD GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x487 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x4AD JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x5001FE75 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x52B88746 EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x467 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x48699D58 GT PUSH2 0x22D JUMPI DUP1 PUSH4 0x48699D58 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x4E9D9BAB EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0x4F06A70B EQ PUSH2 0x42E JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0x44B6AC74 EQ PUSH2 0x3F5 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x2AA JUMPI DUP1 PUSH4 0x2E6272EA GT PUSH2 0x284 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x311C5C57 EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x3CF JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x2C25EFE1 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x396 JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0x10F3AAFF GT PUSH2 0x2DB JUMPI DUP1 PUSH4 0x10F3AAFF EQ PUSH2 0x31F JUMPI DUP1 PUSH4 0x138FDC2C EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x35D JUMPI PUSH2 0x2F2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x30C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30A PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B16 JUMP JUMPDEST PUSH2 0x6A0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30A PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x4A98 JUMP JUMPDEST PUSH2 0x73B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x334 PUSH2 0x845 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x30A PUSH2 0x358 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x36B CALLDATASIZE PUSH1 0x4 PUSH2 0x528E JUMP JUMPDEST PUSH2 0xA6C JUMP JUMPDEST PUSH2 0x30A PUSH2 0x37E CALLDATASIZE PUSH1 0x4 PUSH2 0x4973 JUMP JUMPDEST PUSH2 0xC75 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0xD98 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A98 JUMP JUMPDEST PUSH2 0xF76 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x538A JUMP JUMPDEST PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1170 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x4ACC JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x512C JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x30A PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x416 CALLDATASIZE PUSH1 0x4 PUSH2 0x49B8 JUMP JUMPDEST PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x429 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x17C8 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x43C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1A23 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x44F CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x462 CALLDATASIZE PUSH1 0x4 PUSH2 0x506F JUMP JUMPDEST PUSH2 0x1CBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH2 0x482 CALLDATASIZE PUSH1 0x4 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x1E63 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x495 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x1EA5 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x50DC JUMP JUMPDEST PUSH2 0x1F48 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4BB CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2066 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x512C JUMP JUMPDEST PUSH2 0x20A1 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x4E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x50DC JUMP JUMPDEST PUSH2 0x21A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB PUSH2 0x22AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x516 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A0B JUMP JUMPDEST PUSH2 0x22CF JUMP JUMPDEST PUSH2 0x30A PUSH2 0x529 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BE6 JUMP JUMPDEST PUSH2 0x23D3 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x53C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x25A3 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x4D5F JUMP JUMPDEST PUSH2 0x25DF JUMP JUMPDEST PUSH2 0x30A PUSH2 0x562 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD6 JUMP JUMPDEST PUSH2 0x268A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB PUSH2 0x2704 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x58A CALLDATASIZE PUSH1 0x4 PUSH2 0x4E6B JUMP JUMPDEST PUSH2 0x2728 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2952 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F55 JUMP JUMPDEST PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2BCD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5044 JUMP JUMPDEST PUSH2 0x2D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH2 0x609 CALLDATASIZE PUSH1 0x4 PUSH2 0x54A8 JUMP JUMPDEST PUSH2 0x2D4A JUMP JUMPDEST PUSH2 0x30A PUSH2 0x61C CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x2D54 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x62F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DC2 JUMP JUMPDEST PUSH2 0x2E14 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x642 CALLDATASIZE PUSH1 0x4 PUSH2 0x4973 JUMP JUMPDEST PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x30A PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x349D JUMP JUMPDEST PUSH2 0x30A PUSH2 0x668 CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x34D8 JUMP JUMPDEST PUSH2 0x680 PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x3517 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x341 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH2 0x30A PUSH2 0x69B CALLDATASIZE PUSH1 0x4 PUSH2 0x4EFB JUMP JUMPDEST PUSH2 0x3529 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x6B8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x6CD SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F8 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x726 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x6A4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x744 DUP3 PUSH2 0x3655 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB0E38900 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x794 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7E4 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x819 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x367B JUMP JUMPDEST PUSH2 0x735 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8DC SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2495A599 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x951 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x95F DUP2 DUP4 DUP7 DUP10 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9AA5D46200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9AA5D462 SWAP1 PUSH2 0x9AC SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DFC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xA63 DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4D778AD1 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA0E SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x374E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH2 0xA7A PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xAA3 JUMPI POP ADDRESS PUSH2 0xA98 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0xB2D JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAE2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0xAF9 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0xB24 JUMPI PUSH2 0xB07 DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xACB JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0xB38 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB72 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5ADF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xBC8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4B56 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC66 JUMPI PUSH2 0xBF3 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3766 JUMP JUMPDEST PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST PUSH2 0xC5E DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xC1E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC59 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0xC4C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x37D8 JUMP JUMPDEST PUSH2 0x37E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xBCD JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCC1 PUSH32 0x0 PUSH32 0x0 DUP5 DUP8 PUSH2 0x3723 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA598CB0 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD11 SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD63 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE0B SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0xE19 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA0712D6800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xA0712D68 SWAP1 PUSH2 0xE61 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEB3 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO PUSH2 0xED0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xF18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF68 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP8 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH2 0xF7F DUP3 PUSH2 0x3655 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFD0 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1022 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x735 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST CALLER PUSH2 0x105E PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1087 JUMPI POP ADDRESS PUSH2 0x107C PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x10B0 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x10C8 JUMPI PUSH2 0x10C2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0x10D2 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1104 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1156 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x1161 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0xA63 JUMPI PUSH2 0xA63 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH2 0x117B DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11F0 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1238 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x12B2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1302 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP3 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0x137C SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x5938 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13CE SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x735 DUP3 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH2 0x13E3 DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x13F4 JUMPI PUSH2 0x13F1 DUP4 PUSH2 0x37AD JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1473 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x144A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x146E SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x14E6 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14E6 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x152B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x1520 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x152B DUP7 DUP3 DUP7 PUSH2 0x3843 JUMP JUMPDEST PUSH2 0x153F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x38DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x158D SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x590C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15DF SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15EA DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x15F9 JUMPI PUSH2 0x15F9 DUP4 DUP3 PUSH2 0x37E4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x160E DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1683 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDB006A7500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xDB006A75 SWAP1 PUSH2 0x16CB SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x171D SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO PUSH2 0x173A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5BE8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12B2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH32 0x0 ISZERO PUSH2 0x17B8 JUMPI PUSH2 0x17B3 DUP4 DUP4 DUP4 PUSH2 0x3A2B JUMP JUMPDEST PUSH2 0x17C3 JUMP JUMPDEST PUSH2 0x17C3 DUP4 DUP4 DUP4 PUSH2 0x3ADE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x17D3 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1824 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1848 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18BD SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x192A SWAP1 DUP5 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x58E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1957 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197B SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x19C5 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A15 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15F9 DUP3 DUP8 DUP4 DUP8 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A96 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1AA4 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6E553F65 DUP6 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B28 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xA63 DUP4 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BA7 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEB3BEB29 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BF8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C1C SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2A DUP3 DUP3 DUP7 DUP10 PUSH2 0x3723 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFBF178DB DUP5 DUP9 DUP9 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C61 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CB2 SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x15F9 DUP5 DUP3 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D0E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D32 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D40 DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE2BBB15800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE2BBB158 SWAP1 PUSH2 0x1D8B SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1E05 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E55 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x15F9 DUP9 DUP7 DUP4 DUP7 PUSH2 0x36F5 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1E8D DUP3 PUSH2 0x37AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E9A SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1EB0 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEA785A5E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F34 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F40 DUP3 DUP3 PUSH2 0x374E JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F53 DUP5 DUP3 DUP6 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1F9B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x735 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2018 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x202C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2050 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x20AA DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x20BB JUMPI PUSH2 0x20B8 DUP4 PUSH2 0x37AD JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x20FE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x20F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x20FE DUP6 DUP8 DUP6 PUSH2 0x3843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x214A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x58E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2177 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219B SWAP2 SWAP1 PUSH2 0x54C9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1161 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x221A SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2228 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x2272 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x22E4 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2300 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C56 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x231F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5725 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x238E SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x56DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1F40 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x3C17 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x24B3 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x23F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x243E JUMPI POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2427 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x245A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2468 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH2 0x247F DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x24AA JUMPI PUSH2 0x248D DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2499 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x23D6 JUMP JUMPDEST POP PUSH2 0x24BC PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24E8 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2515 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0x2534 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH2 0x2550 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST PUSH2 0x259B DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x255F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP7 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2576 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x258A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x37E4 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x251D JUMP JUMPDEST PUSH2 0x25AE DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0xF714CE DUP5 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP3 SWAP2 SWAP1 PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x2650 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5870 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x266A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x267E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x26A2 PUSH2 0x2704 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x582F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2747 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2763 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x276E DUP9 PUSH2 0x3C91 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x277B DUP4 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x2786 JUMPI PUSH1 0x0 PUSH2 0x281B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x27CB SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x281B SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x282B DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3C97 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x2838 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x286A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x28A5 DUP4 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x22A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28F2 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x290A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x291E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2942 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0x267E DUP5 PUSH2 0xC59 DUP4 DUP6 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x295D DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x441A3E7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x441A3E70 SWAP1 PUSH2 0x29C8 SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 ADD PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7158DA7C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A6D SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12B2 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x2AB5 PUSH2 0x2704 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2ADE SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B8D SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B9B DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2F4F21E2 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C40 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C4E DUP2 DUP8 DUP6 DUP9 PUSH2 0x3723 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2C96 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0xF18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5711 JUMP JUMPDEST PUSH2 0x2D19 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x2D2A JUMPI PUSH2 0x2D27 DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2D46 PUSH2 0x2D35 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x38DF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2D46 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH2 0x2D5F DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2DA7 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2E33 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2E4F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E92 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2EAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2ED8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3048 JUMPI PUSH2 0x2EF5 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH2 0x2F11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CFB JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2F22 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2F36 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2F84 JUMPI PUSH2 0x2F53 DUP2 PUSH2 0x3D34 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F5F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x303F JUMP JUMPDEST PUSH2 0x2F8D DUP2 PUSH2 0x3D37 JUMP JUMPDEST PUSH2 0x301A JUMPI PUSH2 0x2F9A DUP2 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FC5 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2FF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3015 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x3026 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3032 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2EDE JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x30DF JUMPI PUSH2 0x305B PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3088 SWAP3 SWAP2 SWAP1 PUSH2 0x5749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x30DC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4D10 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x30ED DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3D44 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x30FA PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x312B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A39 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3159 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31A2 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x323F JUMPI PUSH2 0x31B7 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31E4 SWAP3 SWAP2 SWAP1 PUSH2 0x5749 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3210 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3238 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4D10 JUMP JUMPDEST SWAP1 POP PUSH2 0x333D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x333B JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x325B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x326F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3282 DUP2 PUSH2 0x3D37 JUMP JUMPDEST PUSH2 0x330F JUMPI PUSH2 0x328F DUP2 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BA SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x330A SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST PUSH2 0x331B JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3327 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x3242 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x26F7 JUMPI PUSH2 0x339A DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x3357 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC59 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3370 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3384 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3D1E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3340 JUMP JUMPDEST PUSH2 0x33CD PUSH32 0x0 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDE0E9A3E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x341D SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x344B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x346F SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST SWAP1 POP PUSH2 0xD91 PUSH32 0x0 DUP6 DUP4 DUP6 PUSH2 0x36F5 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34E3 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBA087652 DUP5 DUP7 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3522 DUP3 PUSH2 0x3DBA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3534 DUP6 DUP4 DUP7 PUSH2 0x37F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3585 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35A9 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5FE138B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x5FE138B SWAP1 PUSH2 0x35F3 SWAP1 DUP7 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x360D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3621 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1F40 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5427C938 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA0E SWAP2 SWAP1 PUSH2 0x5DBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3660 DUP3 PUSH2 0x3766 JUMP JUMPDEST PUSH2 0x366A JUMPI DUP2 PUSH2 0x3673 JUMP JUMPDEST PUSH2 0x3673 DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x368A DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x36A3 SWAP1 PUSH2 0x3D34 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36E0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36E5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x17C3 DUP2 PUSH2 0x1A4 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x3719 JUMPI PUSH2 0x3719 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x735 DUP2 DUP4 PUSH2 0x374E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3730 DUP6 DUP5 DUP5 PUSH2 0x37F7 JUMP JUMPDEST SWAP1 POP PUSH2 0x3746 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 DUP4 PUSH2 0x38DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3757 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x2D46 JUMPI PUSH2 0x2D46 DUP3 DUP3 PUSH2 0x37E4 JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x37BB DUP5 PUSH2 0x3DBA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x37C8 DUP5 PUSH2 0x3DDF JUMP JUMPDEST ISZERO PUSH2 0x3522 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37EF DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3802 DUP4 PUSH2 0x3655 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x3522 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ PUSH2 0x383C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5C1F JUMP JUMPDEST PUSH2 0x3522 DUP3 DUP6 DUP4 JUMPDEST DUP1 PUSH2 0x384D JUMPI PUSH2 0x17C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x387D JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38C8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD91 DUP6 DUP4 DUP4 PUSH2 0x3E84 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3983 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x3930 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x57A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x5490 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x3A0C JUMPI PUSH2 0x3A0C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3FD2 JUMP JUMPDEST PUSH2 0x17C3 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD91 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x3A43 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3A58 SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B820093 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A83 SWAP2 SWAP1 PUSH2 0x5711 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AD5 SWAP2 SWAP1 PUSH2 0x4D43 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3A2F JUMP JUMPDEST DUP1 PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3B32 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3B1F PUSH2 0x4523 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3B17 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3BC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x3B5F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3B74 SWAP2 SWAP1 PUSH2 0x493B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3BB1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3B38 JUMP JUMPDEST POP PUSH2 0x3BCD PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2272 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH2 0x17C3 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x39A8 SWAP3 SWAP2 SWAP1 PUSH2 0x58D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3C35 SWAP2 SWAP1 PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C72 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C77 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3C86 DUP3 DUP3 PUSH2 0x4072 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CA7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3CBD JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x409C JUMP JUMPDEST SWAP1 POP PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CCB JUMPI INVALID JUMPDEST EQ DUP1 PUSH2 0x3CE2 JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CE0 JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x3CF8 JUMPI POP PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3CF6 JUMPI INVALID JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x3D06 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x409C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABF SWAP1 PUSH2 0x5CC4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2E DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3DD1 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D54 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D63 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x40D9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D71 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D80 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4122 JUMP JUMPDEST PUSH1 0x2 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3D8E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D9D JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4168 JUMP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAB JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3D06 JUMPI PUSH2 0x3CB6 DUP3 PUSH2 0x4194 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3DC6 DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST DUP2 PUSH2 0x2D46 JUMPI PUSH2 0x2D46 DUP2 PUSH2 0x41C7 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3E33 DUP4 PUSH2 0x41F4 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3E65 SWAP3 SWAP2 SWAP1 PUSH2 0x5703 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3ED8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3EC5 PUSH2 0x4523 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x3EBD JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3F70 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3F5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3EDE JUMP JUMPDEST POP PUSH2 0x3F79 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FA4 SWAP2 SWAP1 PUSH2 0x5998 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3FEE SWAP2 SWAP1 PUSH2 0x56C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x402B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4030 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x4048 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x735 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x406A JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x406A SWAP2 SWAP1 PUSH2 0x4D43 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3DD1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4081 JUMPI POP DUP1 PUSH2 0x3C8B JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4091 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3C8B PUSH2 0x1AE PUSH2 0x41C7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40A9 DUP4 PUSH2 0x4217 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x40B9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x422D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x40E6 DUP4 PUSH2 0x427F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x40F6 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4105 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x4295 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4113 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 PUSH2 0x42F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x412F DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x413A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x414E JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x43AD JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4175 DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4180 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x40D0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x41A1 DUP4 PUSH2 0x427F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x41AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 AND PUSH2 0x41C0 JUMPI PUSH2 0x40C8 DUP4 DUP3 PUSH2 0x434B JUMP JUMPDEST PUSH1 0x2 PUSH2 0x4151 JUMP JUMPDEST PUSH2 0x41F1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x4408 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3673 SWAP2 SWAP1 PUSH2 0x521A JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x423B DUP5 PUSH2 0x4469 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4248 DUP3 PUSH2 0x448C JUMP JUMPDEST PUSH2 0x4252 JUMPI DUP4 PUSH2 0x3746 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4268 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AAD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3673 SWAP2 SWAP1 PUSH2 0x519B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x42A3 DUP5 PUSH2 0x44F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x42B0 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x42EE JUMPI PUSH2 0x42BE DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x42D6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5A8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3676 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x4305 DUP4 PUSH2 0x450D JUMP JUMPDEST SWAP1 POP PUSH2 0x4310 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x40D0 JUMPI PUSH2 0x431E DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4334 SWAP3 SWAP2 SWAP1 PUSH2 0x5A75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x4359 DUP6 PUSH2 0x44F6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4366 DUP3 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x4374 DUP3 PUSH2 0x37AD JUMP JUMPDEST SWAP2 POP DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x438B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3C8B JUMP JUMPDEST DUP5 SWAP3 POP POP POP PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x43BA DUP5 PUSH2 0x450D JUMP JUMPDEST SWAP1 POP PUSH2 0x43C5 DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x43FF JUMPI PUSH2 0x43D3 DUP2 PUSH2 0x37AD JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x43E8 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3C8B JUMP JUMPDEST DUP4 SWAP2 POP POP PUSH2 0x3C8B JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4481 SWAP2 SWAP1 PUSH2 0x5236 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x44EF JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x44A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x44BB DUP2 PUSH2 0x3766 JUMP JUMPDEST ISZERO PUSH2 0x44E6 JUMPI PUSH2 0x44C9 DUP2 PUSH2 0x37AD JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x44D5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4491 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4481 SWAP2 SWAP1 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3522 SWAP2 SWAP1 PUSH2 0x51B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x456F JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4586 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x45A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x45B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x45CA PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST PUSH2 0x5E49 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x45EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD PUSH2 0x4601 DUP2 PUSH2 0x5EDA JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45EE JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x462E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x463C PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x466E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4677 DUP2 PUSH2 0x5E49 JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x46B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46C7 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x47E9 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x464D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x46F0 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4707 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x45A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4732 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4740 PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4764 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4790 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x479E PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x47BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4613 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x47C2 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5EEF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x480F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4822 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x5E49 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C8B DUP2 PUSH2 0x5F0A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3C8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x487D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4887 PUSH1 0x80 PUSH2 0x5E49 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x48A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48AD DUP6 DUP4 DUP7 ADD PUSH2 0x45A7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x48C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48CF DUP6 DUP4 DUP7 ADD PUSH2 0x4722 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x48E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48F5 DUP5 DUP3 DUP6 ADD PUSH2 0x47E9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x4908 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x47DE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4924 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3C8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x494C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3522 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4968 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4988 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4993 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x49A3 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x49CC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x49D7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x49F2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x49FE DUP7 DUP3 DUP8 ADD PUSH2 0x455E JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4A20 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4A2B DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4A3B DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A57 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A6A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4A78 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4A89 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4AAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4AB7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4AE0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4AF6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4B02 DUP7 DUP3 DUP8 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B28 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B3E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4B4A DUP6 DUP3 DUP7 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B68 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4B7E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x4B8E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4B9C PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x4BB8 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x4BDA JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x4BBC JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BFB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4C12 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4C25 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4C33 PUSH2 0x45C5 DUP3 PUSH2 0x5E70 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD PUSH1 0xA0 DUP14 DUP4 DUP3 DUP9 MUL DUP11 ADD ADD GT ISZERO PUSH2 0x4C55 JUMPI DUP10 DUP11 REVERT JUMPDEST DUP10 SWAP8 POP JUMPDEST DUP6 DUP9 LT ISZERO PUSH2 0x4CD8 JUMPI DUP1 DUP3 DUP16 SUB SLT ISZERO PUSH2 0x4C6F JUMPI DUP10 DUP11 REVERT JUMPDEST PUSH2 0x4C78 DUP2 PUSH2 0x5E49 JUMP JUMPDEST PUSH2 0x4C82 DUP16 DUP5 PUSH2 0x4852 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4C90 DUP16 DUP6 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST DUP5 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4CAB DUP16 PUSH1 0x60 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4CBD DUP16 PUSH1 0x80 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE DUP6 MSTORE PUSH1 0x1 SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4C59 JUMP JUMPDEST POP SWAP2 SWAP10 POP DUP11 ADD CALLDATALOAD SWAP8 POP POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x4CF7 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4D04 DUP8 DUP3 DUP9 ADD PUSH2 0x46DF JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D21 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D37 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3746 DUP5 DUP3 DUP6 ADD PUSH2 0x4780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D54 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EEF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D77 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x4D82 DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4D92 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x4DA8 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4DDC JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4DEE DUP2 PUSH2 0x5F0A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4DFE DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4E0E DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4E2A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4E36 DUP12 DUP4 DUP13 ADD PUSH2 0x486C JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4E4B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4E58 DUP11 DUP3 DUP12 ADD PUSH2 0x46DF JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4E85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4E97 DUP2 PUSH2 0x5F0A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4EA7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4EB7 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4ED2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4EDE DUP11 DUP3 DUP12 ADD PUSH2 0x486C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F12 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F1D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F2D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4F3D DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4F71 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4F7C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4F8C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x4FAA DUP2 PUSH2 0x5EEF JUMP JUMPDEST SWAP4 POP PUSH2 0x4FB9 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4FF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4FFB DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x500B DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x5028 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x492A JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5056 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5061 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5087 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5092 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x50A2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x50B2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x50C2 DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x50F1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x50FC DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x510C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x511C DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5144 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x514F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x515F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x516F DUP2 PUSH2 0x5EDA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x5186 DUP2 PUSH2 0x5EEF JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51AC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x51C9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x51D4 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x51F8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5203 DUP2 PUSH2 0x5EFD JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x522B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3522 DUP2 PUSH2 0x5F0A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x524A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x5255 DUP2 PUSH2 0x5F0A JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5271 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x527D DUP7 DUP3 DUP8 ADD PUSH2 0x4780 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x52AF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x52B9 DUP14 DUP14 PUSH2 0x485D JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x52D4 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x52E4 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x461E JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x52F6 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x5306 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x5318 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x4913 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x532A JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x533A DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x5360 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x5372 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x46DF JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x53A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x53BA JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x53CD JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x53D7 PUSH1 0xC0 PUSH2 0x5E49 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x53E8 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x485D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x53FB DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x540D DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x4553 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x542D JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x5439 DUP13 DUP3 DUP7 ADD PUSH2 0x47E9 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x5452 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x4913 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5489 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x54A1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54BA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x54DB JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 CALLDATALOAD PUSH2 0x551B DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5508 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5550 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5536 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x557F JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55B9 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x5E90 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5612 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x55ED JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x562B DUP2 DUP4 PUSH2 0x556C JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x5646 DUP3 DUP3 PUSH2 0x55A1 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x565B PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x559B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x566E DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x568A DUP3 PUSH2 0x5EEF JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x56A1 DUP3 PUSH2 0x5EDA JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x56B5 DUP2 PUSH2 0x5EEF JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x56D4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5E90 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x56F0 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x5E90 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5795 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5777 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x597B JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x5960 DUP2 PUSH2 0x5EDA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x594B JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5A21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x59CA DUP2 PUSH2 0x5EC6 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x59F7 DUP3 DUP9 ADD DUP3 PUSH2 0x54EC JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x5A0C DUP7 DUP3 ADD DUP4 PUSH2 0x54EC JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59B5 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x5A6B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55CD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x5A82 DUP5 PUSH2 0x5EBC JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x5A99 DUP6 PUSH2 0x5EBC JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AB8 DUP6 PUSH2 0x5EC6 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5ACF PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x556C JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x5AF0 DUP13 PUSH2 0x5ED0 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5B97 JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x5B83 DUP2 DUP9 ADD DUP4 PUSH2 0x55A1 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5B17 JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5BAE DUP2 DUP11 DUP13 PUSH2 0x54F9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5BBE PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x5663 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x5BD1 DUP2 DUP7 DUP9 PUSH2 0x5541 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x756E7772617070696E67206661696C6564000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH32 0x7772617070696E67206661696C65640000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x554E48414E444C45445F504F4F4C5F4B494E4400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x5D4D DUP2 PUSH2 0x5ED0 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x5D9B PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x55A1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5DAB PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x5663 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5E68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5E86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EAB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5E93 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x735 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x41F1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x41F1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0x2E SWAP5 CREATE2 0xF6 SWAP4 CALLCODE 0xD 0xBB 0xC9 SWAP3 PUSH10 0x43DC24B7AD7FF971060B SGT JUMP PUSH31 0x18EA07BD5138E864736F6C6343000701003300000000000000000000000000 ","sourceMap":"828:588:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3741:241:98;;;;;;:::i;:::-;;:::i;:::-;;2998:930:101;;;;;;:::i;:::-;;:::i;1926:108:98:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1121:844:99;;;;;;:::i;:::-;;:::i;3603:1525:106:-;;;;;;:::i;:::-;;:::i;1785:402:101:-;;;;;;:::i;:::-;;:::i;1120:1023:95:-;;;;;;:::i;:::-;;:::i;2660:332:101:-;;;;;;:::i;:::-;;:::i;2894:703:106:-;;;;;;:::i;:::-;;:::i;1707:549:104:-;;;;;;:::i;:::-;;:::i;3204:231:98:-;;;;;;:::i;:::-;;:::i;1441:1264:92:-;;;;;;:::i;:::-;;:::i;2149:985:95:-;;;;;;:::i;:::-;;:::i;4155:291:98:-;;;;;;:::i;:::-;;:::i;2010:1000:103:-;;;;;;:::i;:::-;;:::i;1112:518:108:-;;;;;;:::i;:::-;;:::i;1185:819:103:-;;;;;;:::i;:::-;;:::i;1234:710:97:-;;;;;;:::i;:::-;;:::i;1281:133:113:-;;;;;;;;;;-1:-1:-1;1281:133:113;;;;;:::i;:::-;;:::i;2650:421:105:-;;;;;;:::i;:::-;;:::i;2483:715:98:-;;;;;;:::i;:::-;;:::i;1113:482:96:-;;;;;;:::i;:::-;;:::i;2711:1004:92:-;;;;;;:::i;:::-;;:::i;2040:437:98:-;;;;;;:::i;:::-;;:::i;2621:101:94:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2836:466::-;;;;;;:::i;:::-;;:::i;5134:1008:106:-;;;;;;:::i;:::-;;:::i;1636:422:108:-;;;;;;:::i;:::-;;:::i;3441:294:98:-;;;;;;:::i;:::-;;:::i;1328:280:107:-;;;;;;:::i;:::-;;:::i;2527:88:94:-;;;;;;;;;;;;;:::i;6236:1496:106:-;;;;;;:::i;:::-;;:::i;1950:968:97:-;;;;;;:::i;:::-;;:::i;1614:315:107:-;;;;;;:::i;:::-;;:::i;1828:524:105:-;;;;;;:::i;:::-;;:::i;1108:593:104:-;;;;;;:::i;:::-;;:::i;3480:287:94:-;;;;;;:::i;:::-;;:::i;1152:123:113:-;;;;;;;;;;-1:-1:-1;1152:123:113;;;;;:::i;:::-;;:::i;1164:703:102:-;;;;;;:::i;:::-;;:::i;11707:2544:106:-;;;;;;:::i;:::-;;:::i;2193:461:101:-;;;;;;:::i;:::-;;:::i;1873:693:102:-;;;;;;:::i;:::-;;:::i;1601:404:96:-;;;;;;:::i;:::-;;:::i;4175:158:94:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1971:764:99:-;;;;;;:::i;:::-;;:::i;3741:241:98:-;3857:6;3837:17;3880:96;3900:9;3896:1;:13;3880:96;;;3930:6;;3937:1;3930:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3930:23:98;;3954:10;3930:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:3;;;;;3880:96;;;;3741:241;;;:::o;2998:930:101:-;3149:22;3164:6;3149:14;:22::i;:::-;3140:31;;3292:14;3309:7;-1:-1:-1;;;;;3309:24:101;;3334:6;3309:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3292:49;-1:-1:-1;3791:43:101;-1:-1:-1;;;;;3807:7:101;3791:35;3827:6;3791:35;:43::i;:::-;3845:76;3877:7;3886:9;3897:6;3905:15;3845:31;:76::i;1926:108:98:-;2005:22;1926:108;:::o;1121:844:99:-;1329:26;1372:12;-1:-1:-1;;;;;1372:18:99;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1329:64;;1403:17;1430:12;-1:-1:-1;;;;;1430:28:99;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1403:58;;1600:95;1641:10;1661:12;1676:10;1688:6;1600:40;:95::i;:::-;1824:51;;;;;1587:108;;-1:-1:-1;;;;;;1824:25:99;;;;;:51;;1587:108;;1862:9;;1873:1;;1824:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:72;1907:15;1924:12;-1:-1:-1;;;;;1924:21:99;;1946:10;1924:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1886:20;:72::i;:::-;1121:844;;;;;;;:::o;3603:1525:106:-;3970:10;3954:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3954:26:106;;:59;;;-1:-1:-1;4008:4:106;3984:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3984:29:106;;3954:59;3946:88;;;;-1:-1:-1;;;3946:88:106;;;;;;;:::i;:::-;;;;;;;;;4050:9;4045:230;4069:5;:12;4065:1;:16;4045:230;;;4102:14;4119:5;4125:1;4119:8;;;;;;;;;;;;;;:15;;;4102:32;;4152:27;4172:6;4152:19;:27::i;:::-;4148:117;;;4217:33;4243:6;4217:25;:33::i;:::-;4199:5;4205:1;4199:8;;;;;;;;;;;;;;:15;;:51;;;;;4148:117;-1:-1:-1;4083:3:106;;4045:230;;;;4285:23;4311:10;:8;:10::i;:::-;-1:-1:-1;;;;;4311:20:106;;4340:5;4348:4;4354:5;4361:6;;4369:5;4376:6;;4384:8;4311:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4311:82:106;;;;;;;;;;;;:::i;:::-;4285:108;;4409:9;4404:718;4424:27;;;4404:718;;;4480:44;4500:16;;4517:1;4500:19;;;;;;;;;;;;:23;;;4480:19;:44::i;:::-;4472:82;;;;-1:-1:-1;;;4472:82:106;;;;;;;:::i;:::-;5015:96;5041:16;;5058:1;5041:19;;;;;;;;;;;;:23;;;5066:44;5075:7;5083:16;;5100:1;5083:19;;;;;;;;;;;;:25;;;5075:34;;;;;;;;;;;;;;5066:8;:44::i;:::-;5015:25;:96::i;:::-;4453:3;;4404:718;;;;3603:1525;;;;;;;;;;;;:::o;1785:402:101:-;1954:82;1995:6;2011:7;2021:6;2029;1954:40;:82::i;:::-;1945:91;;2047:14;2072:7;-1:-1:-1;;;;;2064:21:101;;2086:6;2064:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2047:46;;2104:76;2136:7;2145:9;2156:6;2164:15;2104:31;:76::i;:::-;1785:402;;;;;:::o;1120:1023:95:-;1315:16;1341:12;-1:-1:-1;;;;;1341:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1315:52;;1386:90;1427:9;1446:12;1461:6;1469;1386:40;:90::i;:::-;1899:25;;;;;1377:99;;-1:-1:-1;;;;;;1899:17:95;;;;;:25;;1377:99;;1899:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;1891:58;;;;-1:-1:-1;;;1891:58:95;;;;;;;:::i;:::-;1992:37;;;;;1960:29;;-1:-1:-1;;;;;1992:22:95;;;;;:37;;2023:4;;1992:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:69;;2040:96;2072:12;2086:9;2097:21;2120:15;2040:31;:96::i;2660:332:101:-;2804:22;2819:6;2804:14;:22::i;:::-;2795:31;;2837:14;2854:6;-1:-1:-1;;;;;2854:13:101;;2876:6;2893:4;2854:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2837:62;;2910:75;2942:6;2950:9;2961:6;2969:15;2910:31;:75::i;2894:703:106:-;3161:10;3145:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3145:26:106;;:59;;;-1:-1:-1;3199:4:106;3175:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;3175:29:106;;3145:59;3137:88;;;;-1:-1:-1;;;3137:88:106;;;;;;;:::i;:::-;3240:38;3260:10;:17;;;3240:19;:38::i;:::-;3236:133;;;3314:44;3340:10;:17;;;3314:25;:44::i;:::-;3294:17;;;:64;3236:133;3379:14;3396:10;:8;:10::i;:::-;-1:-1:-1;;;;;3396:15:106;;3420:5;3428:10;3440:5;3447;3454:8;3396:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3379:84;;3478:36;3498:15;3478:19;:36::i;:::-;3474:117;;;3530:50;3556:15;3573:6;3530:25;:50::i;1707:549:104:-;1915:56;1942:12;1956:6;1964;1915:26;:56::i;:::-;1906:65;;1982:16;2008:12;-1:-1:-1;;;;;2008:23:104;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:29;;;;;1982:52;;-1:-1:-1;;;;;;2044:21:104;;;;;:29;;2066:6;;2044:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2113:34:104;;;;;2083:27;;-1:-1:-1;;;;;;2113:19:104;;;-1:-1:-1;2113:19:104;;:34;;2141:4;;2113:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:64;;2158:91;2190:9;2201;2212:19;2233:15;2158:31;:91::i;3204:231:98:-;3322:47;;;;;3302:17;;-1:-1:-1;;;;;3322:15:98;:27;;;;:47;;3350:6;;;;3358:10;;3322:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3302:67;;3380:48;3401:15;3418:9;3380:20;:48::i;1441:1264:92:-;1682:27;1702:6;1682:19;:27::i;:::-;1678:100;;;1734:33;1760:6;1734:25;:33::i;:::-;1725:42;;1678:100;1960:19;1982:14;:59;;2021:11;-1:-1:-1;;;;;2021:18:92;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:59;;;1999:11;-1:-1:-1;;;;;1999:17:92;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:81;-1:-1:-1;;;;;;2231:23:92;;2249:4;2231:23;2227:157;;-1:-1:-1;;;;;2278:20:92;;2288:10;2278:20;2270:49;;;;-1:-1:-1;;;2270:49:92;;;;;;;:::i;:::-;2333:40;2344:6;2352:12;2366:6;2333:10;:40::i;:::-;2394:54;-1:-1:-1;;;;;2394:24:92;;2427:11;2441:6;2394:24;:54::i;:::-;2514:57;;;;;2497:14;;-1:-1:-1;;;;;2514:19:92;;;;;:57;;2534:9;;2545:6;;2497:14;;2556;;2514:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2497:74;;2586:36;2606:15;2586:19;:36::i;:::-;2582:117;;;2638:50;2664:15;2681:6;2638:25;:50::i;:::-;1441:1264;;;;;;;;:::o;2149:985:95:-;2355:56;2382:12;2396:6;2404;2355:26;:56::i;:::-;2346:65;;2422:16;2448:12;-1:-1:-1;;;;;2448:23:95;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2896:27;;;;;2422:52;;-1:-1:-1;;;;;;2896:19:95;;;;;:27;;2916:6;;2896:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;2888:62;;;;-1:-1:-1;;;2888:62:95;;;;;;;:::i;:::-;2991:34;;;;;2961:27;;-1:-1:-1;;;;;2991:19:95;;;;;:34;;3019:4;;2991:34;;;:::i;4155:291:98:-;4267:22;4263:177;;;4305:48;4340:4;4346:6;;4305:34;:48::i;:::-;4263:177;;;4384:45;4416:4;4422:6;;4384:31;:45::i;:::-;4155:291;;;:::o;2010:1000:103:-;2220:56;2247:12;2261:6;2269;2220:26;:56::i;:::-;2211:65;;2349:10;2362:12;-1:-1:-1;;;;;2362:17:103;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2349:32;;2391:22;2423:12;-1:-1:-1;;;;;2423:18:103;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2775:65;;;;;2391:53;;-1:-1:-1;;;;;;2775:13:103;;;;;:65;;2391:53;;2815:17;;2834:5;;2775:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2868:40:103;;;;;2851:14;;-1:-1:-1;;;;;2868:25:103;;;;;:40;;2902:4;;2868:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2851:57;;2919:84;2951:15;2968:9;2979:6;2987:15;2919:31;:84::i;1112:518:108:-;1311:17;1338:12;-1:-1:-1;;;;;1338:18:108;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1311:48;;1379:91;1420:10;1440:12;1455:6;1463;1379:40;:91::i;:::-;1370:100;;1481:29;1513:12;-1:-1:-1;;;;;1513:20:108;;1534:6;1542:9;1513:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1481:71;;1563:60;1584:15;1601:21;1563:20;:60::i;1185:819:103:-;1469:22;1501:12;-1:-1:-1;;;;;1501:18:103;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1469:53;;1594:10;1607:12;-1:-1:-1;;;;;1607:17:103;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1594:32;;1646:88;1687:15;1712:4;1719:6;1727;1646:40;:88::i;:::-;1637:97;;1856:14;1874:4;-1:-1:-1;;;;;1874:15:103;;1898;1916:9;1927:6;1935:5;1874:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1853:88;;;1952:45;1973:15;1990:6;1952:20;:45::i;1234:710:97:-;1459:17;1486:12;-1:-1:-1;;;;;1486:28:97;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1459:58;;1537:83;1578:10;1590:13;1605:6;1613;1537:40;:83::i;:::-;1719:31;;;;;1528:92;;-1:-1:-1;;;;;;1719:20:97;;;;;:31;;1740:1;;1528:92;;1719:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1793:37:97;;;;;1761:29;;-1:-1:-1;;;;;;1793:22:97;;;-1:-1:-1;1793:22:97;;:37;;1824:4;;1793:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1761:69;;1841:96;1873:12;1887:9;1898:21;1921:15;1841:31;:96::i;1281:133:113:-;1350:57;1376:30;1402:3;1376:25;:30::i;:::-;1350:57;;;;;;:::i;:::-;;;;;;;;1281:133;:::o;2650:421:105:-;2866:56;2893:12;2907:6;2915;2866:26;:56::i;:::-;2857:65;;2933:24;2960:12;-1:-1:-1;;;;;2960:19:105;;2980:9;2991:6;2960:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2933:65;;3009:55;3030:15;3047:16;3009:20;:55::i;:::-;2650:421;;;;;;:::o;2483:715:98:-;2661:49;2688:5;2695:6;2703;2661:26;:49::i;:::-;2828:22;;;;;2652:58;;-1:-1:-1;;;;;;2828:14:98;;;;;:22;;2652:58;;2828:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3050:26:98;;3071:4;3050:26;3046:146;;3092:15;3110:5;-1:-1:-1;;;;;3110:14:98;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3092:34;-1:-1:-1;3141:40:98;-1:-1:-1;;;;;3141:21:98;;3163:9;3174:6;3141:21;:40::i;1113:482:96:-;1306:17;1333:12;-1:-1:-1;;;;;1333:18:96;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2711:1004:92;2951:27;2971:6;2951:19;:27::i;:::-;2947:100;;;3003:33;3029:6;3003:25;:33::i;:::-;2994:42;;2947:100;-1:-1:-1;;;;;3238:23:92;;3256:4;3238:23;3234:156;;-1:-1:-1;;;;;3285:20:92;;3295:10;3285:20;3277:49;;;;-1:-1:-1;;;3277:49:92;;;;;;;:::i;:::-;3340:39;3351:6;3359:11;3372:6;3340:10;:39::i;:::-;3528:53;;;;;3510:14;;-1:-1:-1;;;;;3528:20:92;;;;;:53;;3549:9;;3560:6;;3568:12;;3528:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:74;;;3596:36;3616:15;3596:19;:36::i;2040:437:98:-;2291:15;2309:5;-1:-1:-1;;;;;2309:14:98;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2291:34;;2345:82;2386:8;2404:5;2412:6;2420;2345:40;:82::i;:::-;2438:32;;;;;2336:91;;-1:-1:-1;;;;;;2438:13:98;;;;;:32;;2336:91;;2460:9;;2438:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:437;;;;;:::o;2621:101:94:-;2704:11;2621:101;:::o;2836:466::-;-1:-1:-1;;;;;2991:24:94;;3010:4;2991:24;;:37;;;3020:8;3019:9;2991:37;2983:81;;;;-1:-1:-1;;;2983:81:94;;;;;;;:::i;:::-;3074:17;3147:34;;;3183:10;3195:7;3204:8;3124:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3124:89:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:156;;;3227:13;;;;3094:156;;:::i;:::-;;;;-1:-1:-1;;3094:156:94;;;;;;;;;;-1:-1:-1;3261:34:94;-1:-1:-1;;;;;3269:6:94;3261:28;3094:156;3261:28;:34::i;5134:1008:106:-;5318:9;5313:329;5337:3;:10;5333:1;:14;5313:329;;;5393:10;-1:-1:-1;;;;;5376:27:106;:3;5380:1;5376:6;;;;;;;;;;;;;;:13;;;-1:-1:-1;;;;;5376:27:106;;:61;;;;5432:4;-1:-1:-1;;;;;5407:30:106;:3;5411:1;5407:6;;;;;;;;;;;;;;:13;;;-1:-1:-1;;;;;5407:30:106;;5376:61;5368:90;;;;-1:-1:-1;;;5368:90:106;;;;;;;:::i;:::-;5473:14;5490:3;5494:1;5490:6;;;;;;;;;;;;;;:13;;;5473:30;;5521:27;5541:6;5521:19;:27::i;:::-;5517:115;;;5584:33;5610:6;5584:25;:33::i;:::-;5568:3;5572:1;5568:6;;;;;;;;;;;;;;:13;;:49;;;;;5517:115;-1:-1:-1;5349:3:106;;5313:329;;;;5652:10;:8;:10::i;:::-;-1:-1:-1;;;;;5652:28:106;;5689:5;5697:3;5652:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5876:9;5871:265;5891:27;;;5871:265;;;5947:44;5967:16;;5984:1;5967:19;;;;;;5947:44;5939:82;;;;-1:-1:-1;;;5939:82:106;;;;;;;:::i;:::-;6036:89;6062:16;;6079:1;6062:19;;;;;;;;;;;;:23;;;6087:3;6091:16;;6108:1;6091:19;;;;;;;;;;;;:25;;;6087:30;;;;;;;;;;;;;;:37;;;6036:25;:89::i;:::-;5920:3;;5871:265;;1636:422:108;1846:73;1888:12;1904:6;1912;1846:26;:73::i;:::-;1837:82;;1930:18;1951:12;-1:-1:-1;;;;;1951:21:108;;1973:6;1981:9;1951:40;;;;;;;;;;;;;;;;:::i;3441:294:98:-;3632:96;;;;;-1:-1:-1;;;;;3632:15:98;:46;;;;:96;;3687:4;;3694:8;;3704:4;;3710:8;;3720:1;;3723;;3726;;3632:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3441:294;;;;;;:::o;1328:280:107:-;1535:5;-1:-1:-1;;;;;1535:12:107;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2527:88:94:-;2602:6;2527:88;:::o;6236:1496:106:-;-1:-1:-1;;;;;6496:20:106;;6506:10;6496:20;;:47;;-1:-1:-1;;;;;;6520:23:106;;6538:4;6520:23;6496:47;6488:76;;;;-1:-1:-1;;;6488:76:106;;;;;;;:::i;:::-;6885:10;6905:34;6932:6;6905:26;:34::i;:::-;6885:55;;6950:32;6985:36;7005:15;6985:19;:36::i;:::-;:67;;7051:1;6985:67;;;7024:24;;;;;-1:-1:-1;;;;;7024:13:106;;;;;:24;;7038:9;;7024:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6950:102;;7082:63;7122:4;7128:7;:16;;;7082:39;:63::i;:::-;7063:16;;;:82;7156:10;:8;:10::i;:::-;-1:-1:-1;;;;;7156:19:106;;7184:5;7192:6;7200;7208:9;7219:7;7156:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7242:36;7262:15;7242:19;:36::i;:::-;7238:488;;;7586:24;;;;;7558:25;;-1:-1:-1;;;;;7586:13:106;;;;;:24;;7600:9;;7586:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7558:52;-1:-1:-1;7624:91:106;7650:15;7667:47;7558:52;7689:24;7667:21;:47::i;1950:968:97:-;2155:56;2182:12;2196:6;2204;2155:26;:56::i;:::-;2600:37;;;;;2146:65;;-1:-1:-1;;;;;;2600:21:97;;;;;:37;;2622:1;;1210:17;;2600:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:16;2704:12;-1:-1:-1;;;;;2704:28:97;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2678:57;;2745:27;2775:9;-1:-1:-1;;;;;2775:19:97;;2803:4;2775:34;;;;;;;;;;;;;;;:::i;1614:315:107:-;1848:5;-1:-1:-1;;;;;1848:12:107;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;1828:524:105:-;2034:22;2066:12;-1:-1:-1;;;;;2066:23:105;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2034:58;;2113:97;2154:15;2179:12;2194:7;2203:6;2113:40;:97::i;:::-;2103:107;;2221:18;2242:12;-1:-1:-1;;;;;2242:23:105;;2266:9;2277:7;2242:43;;;;;;;;;;;;;;;;:::i;1108:593:104:-;1305:17;1332:12;-1:-1:-1;;;;;1332:23:104;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1305:53;;1378:91;1419:10;1439:12;1454:6;1462;1378:40;:91::i;:::-;1480:28;;;;;1369:100;;-1:-1:-1;;;;;;1480:20:104;;;;;:28;;1369:100;;1480:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1550:37:104;;;;;1518:29;;-1:-1:-1;;;;;;1550:22:104;;;-1:-1:-1;1550:22:104;;:37;;1581:4;;1550:37;;;:::i;3480:287:94:-;3572:27;3592:6;3572:19;:27::i;:::-;3568:100;;;3624:33;3650:6;3624:25;:33::i;:::-;3615:42;;3568:100;3714:46;3740:10;:8;:10::i;:::-;-1:-1:-1;;;;;3714:17:94;;;3753:6;3714:17;:46::i;:::-;3480:287;;:::o;1152:123:113:-;1231:37;1257:3;1262:5;1231:25;:37::i;1164:703:102:-;1384:54;1411:10;1423:6;1431;1384:26;:54::i;:::-;1513:27;;;;;1375:63;;-1:-1:-1;;;;;;1513:19:102;;;;;:27;;1375:63;;1513:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:22;1583:10;-1:-1:-1;;;;;1583:16:102;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11707:2544:106;-1:-1:-1;;;;;11972:20:106;;11982:10;11972:20;;:47;;-1:-1:-1;;;;;;11996:23:106;;12014:4;11996:23;11972:47;11964:76;;;;-1:-1:-1;;;11964:76:106;;;;;;;:::i;:::-;12218:29;12263:16;12250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12250:37:106;-1:-1:-1;12218:69:106;-1:-1:-1;12386:41:106;12444:16;12430:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12430:38:106;;12386:82;;12483:9;12478:486;12498:27;;;12478:486;;;12554:44;12574:16;;12591:1;12574:19;;;;;;12554:44;12546:82;;;;-1:-1:-1;;;12546:82:106;;;;;;;:::i;:::-;12658:14;;12643:12;;12673:16;;12690:1;12673:19;;;;;;;;;;;;:25;;;12658:41;;;;;;;;;;;;;;12643:56;;12717:7;:25;;;12713:241;;;12781:16;12791:5;12781:9;:16::i;:::-;12762:13;12776:1;12762:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;12762:35:106;;;-1:-1:-1;;;;;12762:35:106;;;;;12713:241;;;12866:13;12873:5;12866:6;:13::i;:::-;:73;;12902:16;12912:5;12902:9;:16::i;:::-;-1:-1:-1;;;;;12902:26:106;;12929:9;12902:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12866:73;;;12882:9;-1:-1:-1;;;;;12882:17:106;;12866:73;12836:24;12861:1;12836:27;;;;;;;;;;;;;:103;;;;;12713:241;-1:-1:-1;12527:3:106;;12478:486;;;;12977:7;:25;;;12973:138;;;13045:10;:8;:10::i;:::-;-1:-1:-1;;;;;13045:29:106;;13075:9;13086:13;13045:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13045:55:106;;;;;;;;;;;;:::i;:::-;13018:82;;12973:138;13165:63;13205:4;13211:7;:16;;;13165:39;:63::i;:::-;13146:16;;;:82;13238:10;:8;:10::i;:::-;-1:-1:-1;;;;;13238:19:106;;13258:6;13266;13274:9;13285:7;13238:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13363:44:106;;-1:-1:-1;13424:16:106;;-1:-1:-1;;13410:38:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13410:38:106;;13363:85;;13462:7;:25;;;13458:478;;;13533:10;:8;:10::i;:::-;-1:-1:-1;;;;;13533:29:106;;13563:9;13574:13;13533:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13533:55:106;;;;;;;;;;;;:::i;:::-;13503:85;;13458:478;;;13624:9;13619:307;13639:27;;;13619:307;;;13706:14;;13691:12;;13721:16;;13738:1;13721:19;;;;;;;;;;;;:25;;;13706:41;;;;;;;;;;;;;;13691:56;;13798:13;13805:5;13798:6;:13::i;:::-;:113;;13874:16;13884:5;13874:9;:16::i;:::-;-1:-1:-1;;;;;13874:26:106;;13901:9;13874:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13798:113;;;13834:9;-1:-1:-1;;;;;13834:17:106;;13798:113;13765:27;13793:1;13765:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;13668:3:106;;13619:307;;;;13458:478;14010:9;14005:240;14025:27;;;14005:240;;;14073:161;14116:16;;14133:1;14116:19;;;;;;;;;;;;:23;;;14157:63;14192:24;14217:1;14192:27;;;;;;;;;;;;;;14157;14185:1;14157:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;14073:161::-;14054:3;;14005:240;;2193:461:101;2365:51;2392:7;2401:6;2409;2365:26;:51::i;:::-;2356:60;;2522:14;2539:7;-1:-1:-1;;;;;2539:14:101;;2554:6;2539:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2522:39;;2572:75;2604:6;2612:9;2623:6;2631:15;2572:31;:75::i;1873:693:102:-;2082:22;2114:10;-1:-1:-1;;;;;2114:16:102;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:404:96;1805:56;1832:12;1846:6;1854;1805:26;:56::i;:::-;1796:65;;1872:14;1889:12;-1:-1:-1;;;;;1889:19:96;;1909:6;1917:9;1936:4;1889:53;;;;;;;;;;;;;;;;;:::i;4175:158:94:-;4258:13;4295:31;4322:3;4295:26;:31::i;:::-;4283:43;4175:158;-1:-1:-1;;;4175:158:94:o;1971:764:99:-;2198:79;2240:12;2256;2270:6;2198:26;:79::i;:::-;2183:94;;2514:26;2557:12;-1:-1:-1;;;;;2557:18:99;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2588:53;;;;;2514:64;;-1:-1:-1;;;;;;2588:28:99;;;;;:53;;2617:12;;2631:9;;2588:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2652:76;2673:15;2690:12;-1:-1:-1;;;;;2690:23:99;;2714:12;2690:37;;;;;;;;;;;;;;;:::i;3518:163:100:-;3576:7;3602:27;3622:6;3602:19;:27::i;:::-;:72;;3668:6;3602:72;;;3632:33;3658:6;3632:25;:33::i;:::-;3595:79;;3518:163;;;;:::o;2421:369:69:-;2502:78;2536:6;2511:21;:31;;11425:3:12;2502:8:69;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:69;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11488:3:12;2732:8:69;:51::i;3883:328:100:-;-1:-1:-1;;;;;4059:26:100;;4080:4;4059:26;4055:94;;4101:37;-1:-1:-1;;;;;4101:18:100;;4120:9;4131:6;4101:18;:37::i;:::-;4159:45;4180:15;4197:6;4159:20;:45::i;2337:329::-;2506:22;2557:49;2584:5;2591:6;2599;2557:26;:49::i;:::-;2540:66;-1:-1:-1;2617:42:100;-1:-1:-1;;;;;2617:17:100;;2635:7;2540:66;2617:17;:42::i;:::-;2337:329;;;;;;:::o;4395:213::-;4489:36;4509:15;4489:19;:36::i;:::-;4485:117;;;4541:50;4567:15;4584:6;4541:25;:50::i;5451:358:94:-;5653:66;5644:75;5736:66;5643:159;;5451:358::o;7281:375::-;7356:7;7376:12;7390:13;7407:31;7434:3;7407:26;:31::i;:::-;7375:63;;;;7453:33;7482:3;7453:28;:33::i;:::-;7449:179;;;7602:1;7596:4;7589:15;7644:5;7281:375;-1:-1:-1;;;7281:375:94:o;428:250:68:-;615:3;611:11;;;649:9;;;645:17;;588:84::o;6533:392:94:-;6624:12;6639:20;6655:3;6639:15;:20::i;:::-;6890:19;;;;-1:-1:-1;;6876:43:94:o;2810:553:100:-;2940:22;2991;3006:6;2991:14;:22::i;:::-;2974:39;-1:-1:-1;;;;;;3203:23:100;;3221:4;3203:23;3199:158;;-1:-1:-1;;;;;3250:20:100;;3260:10;3250:20;3242:49;;;;-1:-1:-1;;;3242:49:100;;;;;;;:::i;:::-;3305:41;3316:6;3324:5;3331:14;4339:360:94;4467:11;4463:24;;4480:7;;4463:24;4521:15;;;4534:1;4521:15;;;;;;;;;4496:22;;4521:15;;;;;;;;;;;-1:-1:-1;4521:15:94;4496:40;;4558:5;4546:6;4553:1;4546:9;;;;;;;;-1:-1:-1;;;;;4546:17:94;;;;:9;;;;;;;;;;;:17;4600:16;;;4614:1;4600:16;;;;;;;;;4573:24;;4600:16;;;;;;;;;;;;-1:-1:-1;4600:16:94;4573:43;;4639:6;4626:7;4634:1;4626:10;;;;;;;;;;;;;:19;;;;;4656:36;4668:6;4676;4684:7;4656:11;:36::i;1001:507:77:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:77;;;;;-1:-1:-1;;;;;1232:15:77;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1332:53:77;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;4452:376:98:-;4591:6;4571:17;4726:96;4750:9;4746:1;:13;4726:96;;;4780:6;;4787:1;4780:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4780:25:98;;4806:4;4780:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4761:3:98;;4726:96;;4834:1453;4970:6;4993:33;4970:6;5029:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4993:73;;5777:9;5772:419;5796:9;5792:1;:13;5772:419;;;5919:261;;;;;;;;;;6123:42;5919:261;;;;5980:6;;5987:1;5980:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5919:261:98;;;;;6017:1;5919:261;;;;6044:4;-1:-1:-1;;;;;5919:261:98;;;;;6093:4;-1:-1:-1;;;;;5919:261:98;;;;5910:3;5914:1;5910:6;;;;;;;;;;;;;;;;;:270;5807:3;;5772:419;;;;6247:10;:8;:10::i;:::-;-1:-1:-1;;;;;6247:28:98;;6276:3;6247:33;;;;;;;;;;;;;;;:::i;1514:214:77:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;3494:278:69:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:69;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;896:312:64:-;1193:6;1173:27;;896:312::o;7900:580:106:-;8020:12;8060:17;8052:4;:25;;;;;;;;;8048:426;;;8100:53;8144:8;8100:43;:53::i;:::-;8093:60;;;;8048:426;8195:22;8187:4;:30;;;;;;;;;:80;;;-1:-1:-1;8241:26:106;8233:4;:34;;;;;;;;;8187:80;:133;;;-1:-1:-1;8291:29:106;8283:4;:37;;;;;;;;;8187:133;8170:304;;;8352:51;8394:8;8352:41;:51::i;8170:304::-;8434:29;;-1:-1:-1;;;8434:29:106;;;;;;;:::i;1375:166:68:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:12;1452:8:68;:37::i;:::-;-1:-1:-1;1511:5:68;;;1375:166::o;2762:110:81:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:81;;;1705:105::o;14420:800:106:-;14540:12;14580:17;14572:4;:25;;;;;;;;;14568:646;;;14620:53;14664:8;14620:43;:53::i;14568:646::-;14716:22;14708:4;:30;;;;;;;;;14704:500;;;14765:57;14813:8;14765:47;:57::i;14704:500::-;14855:26;14847:4;:34;;;;;;;;;14843:361;;;14908:61;14960:8;14908:51;:61::i;14843:361::-;15002:29;14994:4;:37;;;;;;;;;14990:214;;;15058:63;15112:8;15058:53;:63::i;7850:404:94:-;7921:12;7935:13;7967:20;7983:3;7967:15;:20::i;:::-;7960:27;;8233:4;8227:11;8218:20;;8204:44;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;5926:505:94:-;6275:66;6266:75;6358:66;6265:159;;5926:505::o;8410:595::-;8470:7;8996:1;8941:27;8964:3;8941:22;:27::i;:::-;8970:20;8924:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8924:67:94;;;;;;8914:78;;8924:67;8914:78;;;;8906:91;;8410:595;-1:-1:-1;;8410:595:94:o;4705:628::-;4850:33;4913:6;:13;4886:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4850:77;;4942:9;4937:346;4957:6;:13;4953:1;:17;4937:346;;;5000:272;;;;;;;;;;5215:42;5000:272;;;;5061:6;5068:1;5061:9;;;;;;;;;;;;;;-1:-1:-1;;;;;5000:272:94;;;;;5098:7;5106:1;5098:10;;;;;;;;;;;;;;5000:272;;;;5134:6;-1:-1:-1;;;;;5000:272:94;;;;;5185:4;-1:-1:-1;;;;;5000:272:94;;;;4991:3;4995:1;4991:6;;;;;;;;;;;;;;;;;:281;4972:3;;4937:346;;;;5293:10;:8;:10::i;:::-;-1:-1:-1;;;;;5293:28:94;;5322:3;5293:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2324:914:77;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:77;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;5057:714:69:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:69;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12091:3:12;5703:7:69;:37::i;8486:557:106:-;8579:12;8603:34;8640:39;8670:8;8640:29;:39::i;:::-;8603:76;-1:-1:-1;8702:57:106;8694:4;:65;;;;;;;;;8690:347;;;8782:55;8828:8;8782:45;:55::i;:::-;8775:62;;;;;8690:347;9018:8;9011:15;;;;;15226:728;15319:12;15343:34;15380:39;15410:8;15380:29;:39::i;:::-;15343:76;-1:-1:-1;15442:60:106;15434:4;:68;;;;;;;;;15430:518;;;15525:57;15573:8;15525:47;:57::i;15430:518::-;15611:57;15603:4;:65;;;;;;;;;15599:349;;;15691:55;15737:8;15691:45;:55::i;17991:763::-;18088:12;18112:14;18135:37;18163:8;18135:27;:37::i;:::-;18129:44;;;;;;;;18112:61;-1:-1:-1;18188:83:106;;;18184:564;;18294:65;18340:8;18350;18294:45;:65::i;18184:564::-;18398:61;18392:68;18380:80;;:8;:80;;;18376:372;;;18483:63;18527:8;18537;18483:43;:63::i;18816:584::-;18917:12;18941:14;18964:37;18992:8;18964:27;:37::i;:::-;18958:44;;;;;;;;18941:61;-1:-1:-1;19017:87:106;;;19013:381;;19127:65;19173:8;19183;19127:45;:65::i;19448:781::-;19567:12;19595:14;19618:37;19646:8;19618:27;:37::i;:::-;19612:44;;;;;;;;19595:61;-1:-1:-1;19671:77:106;;;19667:556;;19771:65;19817:8;19827;19771:45;:65::i;19667:556::-;19875:59;19869:66;;1459:126:12;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;9196:174:94:-;9296:66;9290:72;;9196:174::o;1159:122:11:-;1219:8;1257:4;1246:28;;;;;;;;;;;;:::i;9049:523:106:-;9144:12;9169:26;9197:23;9224:53;9268:8;9224:43;:53::i;:::-;9168:109;;;;9395:27;9412:9;9395:16;:27::i;:::-;:170;;9557:8;9395:170;;;9452:57;9511:9;9522:15;9441:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9376:189;9049:523;-1:-1:-1;;;;9049:523:106:o;1287:122:11:-;1347:8;1385:4;1374:28;;;;;;;;;;;;:::i;15960:605:106:-;16057:12;16082:19;16103:18;16125:52;16168:8;16125:42;:52::i;:::-;16081:96;;;;16192:32;16212:11;16192:19;:32::i;:::-;16188:371;;;16254:38;16280:11;16254:25;:38::i;:::-;16240:52;;16324:60;16386:11;16399:10;16313:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16306:104;;;;;;16188:371;16540:8;16533:15;;;;;;16571:567;16666:12;16690:19;16712:53;16756:8;16712:43;:53::i;:::-;16690:75;;16780:32;16800:11;16780:19;:32::i;:::-;16776:356;;;16842:38;16868:11;16842:25;:38::i;:::-;16828:52;;16912:57;16971:11;16901:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16894:89;;;;;20636:585;20763:12;20792:19;20813:18;20835:50;20876:8;20835:40;:50::i;:::-;20791:94;;;;20900:32;20920:11;20900:19;:32::i;:::-;20896:319;;;20962:38;20988:11;20962:25;:38::i;:::-;20948:52;;21032:8;21042:11;21055:10;21021:45;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21014:52;;;;;;20896:319;21196:8;21189:15;;;;;;21227:550;21352:12;21380:19;21402:51;21444:8;21402:41;:51::i;:::-;21380:73;;21468:32;21488:11;21468:19;:32::i;:::-;21464:307;;;21530:38;21556:11;21530:25;:38::i;:::-;21516:52;;21600:8;21610:11;21589:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21582:40;;;;;21464:307;21752:8;21745:15;;;;;1692:3378:12;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1603:253:11;1701:26;1729:23;1812:4;1801:48;;;;;;;;;;;;:::i;:::-;1768:81;;;;-1:-1:-1;1603:253:11;-1:-1:-1;;;1603:253:11:o;11265:436:106:-;11336:4;;;11392:269;11416:9;:16;11412:1;:20;11392:269;;;11453:14;11470:9;11480:1;11470:12;;;;;;;;;;;;;;11453:29;;11500:27;11520:6;11500:19;:27::i;:::-;11496:155;;;11562:33;11588:6;11562:25;:33::i;:::-;11547:9;11557:1;11547:12;;;;;;;;;;;;;:48;;;;;11632:4;11613:23;;11496:155;-1:-1:-1;11434:3:106;;11392:269;;;-1:-1:-1;11678:16:106;11265:436;-1:-1:-1;;11265:436:106:o;2269:207:11:-;2342:19;2363:18;2434:4;2423:46;;;;;;;;;;;;:::i;2482:167::-;2556:19;2616:4;2605:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8444:6;8431:20;8456:48;8498:5;8456:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;12997:4;;-1:-1;;4175:30;12980:3;12976:19;;12972:30;12969:2;;;4107:1;;13005:12;12969:2;13033:20;12997:4;13033:20;:::i;:::-;3999:4;4175:30;;7472:20;13119:16;13112:75;13310:22;;4175:30;13310:22;18755:20;3999:4;13275:5;13271:16;13264:75;13463:22;;4175:30;13463:22;18755:20;13310:22;13428:5;13424:16;13417:75;13609:22;;;;4175:30;13609:22;18755:20;13463:22;13574:5;13570:16;13563:75;;12997:4;4175:30;13716:19;13703:33;13689:47;;13756:18;13748:6;13745:30;13742:2;;;4107:1;;13778:12;13742:2;13823:58;13877:3;3999:4;13868:6;4175:30;13853:22;;13823:58;:::i;:::-;13805:16;;;13798:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5676:707;;5793:3;5786:4;5778:6;5774:17;5770:27;5760:2;;-1:-1;;5801:12;5760:2;5848:6;5835:20;5870:80;5885:64;5942:6;5885:64;:::i;5870:80::-;5978:21;;;5861:89;-1:-1;6022:4;6035:14;;;;6010:17;;;6124;;;6115:27;;;;6112:36;-1:-1;6109:2;;;6161:1;;6151:12;6109:2;6186:1;6171:206;6196:6;6193:1;6190:13;6171:206;;;18755:20;;6264:50;;6328:14;;;;6356;;;;6218:1;6211:9;6171:206;;6409:722;;6537:3;6530:4;6522:6;6518:17;6514:27;6504:2;;-1:-1;;6545:12;6504:2;6585:6;6579:13;6607:80;6622:64;6679:6;6622:64;:::i;6607:80::-;6715:21;;;6598:89;-1:-1;6759:4;6772:14;;;;6747:17;;;6861;;;6852:27;;;;6849:36;-1:-1;6846:2;;;6898:1;;6888:12;6846:2;6923:1;6908:217;6933:6;6930:1;6927:13;6908:217;;;18903:13;;7001:61;;7076:14;;;;7104;;;;6955:1;6948:9;6908:217;;7139:124;7203:20;;7228:30;7203:20;7228:30;:::i;7901:440::-;;8002:3;7995:4;7987:6;7983:17;7979:27;7969:2;;-1:-1;;8010:12;7969:2;8057:6;8044:20;96872:18;96864:6;96861:30;96858:2;;;-1:-1;;96894:12;96858:2;8079:64;97035:4;-1:-1;;7995:4;96952:6;96948:17;96944:33;97025:15;8079:64;:::i;:::-;8070:73;;8163:6;8156:5;8149:21;8267:3;97035:4;8258:6;8191;8249:16;;8246:25;8243:2;;;8284:1;;8274:12;8243:2;108983:6;97035:4;8191:6;8187:17;97035:4;8225:5;8221:16;108960:30;109039:1;109021:16;;;97035:4;109021:16;109014:27;8225:5;7962:379;-1:-1;;7962:379::o;12060:158::-;12141:20;;12166:47;12141:20;12166:47;:::i;12225:156::-;12305:20;;113983:1;113973:12;;113963:2;;113999:1;;113989:12;13946:1120;;14068:4;14056:9;14051:3;14047:19;14043:30;14040:2;;;-1:-1;;14076:12;14040:2;14104:20;14068:4;14104:20;:::i;:::-;14095:29;;14189:17;14176:31;14227:18;;14219:6;14216:30;14213:2;;;14204:1;;14249:12;14213:2;14294:89;14379:3;14370:6;14359:9;14355:22;14294:89;:::i;:::-;14276:16;14269:115;14482:2;14471:9;14467:18;14454:32;14440:46;;14227:18;14498:6;14495:30;14492:2;;;14204:1;;14528:12;14492:2;14573:74;14643:3;14634:6;14623:9;14619:22;14573:74;:::i;:::-;14482:2;14559:5;14555:16;14548:100;14741:2;14730:9;14726:18;14713:32;14699:46;;14227:18;14757:6;14754:30;14751:2;;;14204:1;;14787:12;14751:2;;14832:58;14886:3;14877:6;14866:9;14862:22;14832:58;:::i;:::-;14741:2;14818:5;14814:16;14807:84;;14998:46;15040:3;14965:2;15020:9;15016:22;14998:46;:::i;:::-;14965:2;14984:5;14980:16;14973:72;14034:1032;;;;:::o;15110:166::-;;15228:3;15219:6;15214:3;15210:16;15206:26;15203:2;;;-1:-1;;15235:12;15203:2;-1:-1;15255:15;15196:80;-1:-1;15196:80::o;18966:126::-;19031:20;;106253:4;106242:16;;114441:33;;114431:2;;114488:1;;114478:12;19099:241;;19203:2;19191:9;19182:7;19178:23;19174:32;19171:2;;;-1:-1;;19209:12;19171:2;85:6;72:20;97:33;124:5;97:33;:::i;19347:263::-;;19462:2;19450:9;19441:7;19437:23;19433:32;19430:2;;;-1:-1;;19468:12;19430:2;226:6;220:13;238:33;265:5;238:33;:::i;19617:617::-;;;;;19772:3;19760:9;19751:7;19747:23;19743:33;19740:2;;;-1:-1;;19779:12;19740:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;19831:63;-1:-1;19931:2;19970:22;;72:20;97:33;72:20;97:33;:::i;:::-;19734:500;;19939:63;;-1:-1;;;;20039:2;20078:22;;18755:20;;20147:2;20186:22;18755:20;;19734:500::o;20241:582::-;;;;20427:2;20415:9;20406:7;20402:23;20398:32;20395:2;;;-1:-1;;20433:12;20395:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;20485:63;-1:-1;20613:2;20598:18;;20585:32;20637:18;20626:30;;20623:2;;;-1:-1;;20659:12;20623:2;20697:110;20799:7;20790:6;20779:9;20775:22;20697:110;:::i;:::-;20389:434;;20679:128;;-1:-1;20679:128;;-1:-1;;;;20389:434::o;20830:609::-;;;;;20984:2;20972:9;20963:7;20959:23;20955:32;20952:2;;;-1:-1;;20990:12;20952:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;21042:63;-1:-1;21142:2;21178:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;21150:60;-1:-1;21275:2;21260:18;;21247:32;21299:18;21288:30;;;21285:2;;;-1:-1;;21321:12;21285:2;21406:6;21395:9;21391:22;;;7670:3;7663:4;7655:6;7651:17;7647:27;7637:2;;-1:-1;;7678:12;7637:2;7721:6;7708:20;21299:18;7740:6;7737:30;7734:2;;;-1:-1;;7770:12;7734:2;7865:3;21142:2;7845:17;7806:6;7831:32;;7828:41;7825:2;;;-1:-1;;7872:12;7825:2;20946:493;;;;-1:-1;;21142:2;7802:17;;-1:-1;;;20946:493::o;21446:491::-;;;;21584:2;21572:9;21563:7;21559:23;21555:32;21552:2;;;-1:-1;;21590:12;21552:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;21642:63;21742:2;21781:22;;18755:20;;-1:-1;21850:2;21889:22;;;18755:20;;21546:391;-1:-1;;;21546:391::o;21944:522::-;;;;22100:2;22088:9;22079:7;22075:23;22071:32;22068:2;;;-1:-1;;22106:12;22068:2;22164:17;22151:31;22202:18;22194:6;22191:30;22188:2;;;-1:-1;;22224:12;22188:2;22262:80;22334:7;22325:6;22314:9;22310:22;22262:80;:::i;:::-;22244:98;;;;-1:-1;22379:2;22418:22;;;;18755:20;;22062:404;-1:-1;;;;22062:404::o;22473:457::-;;;22642:2;22630:9;22621:7;22617:23;22613:32;22610:2;;;-1:-1;;22648:12;22610:2;22706:17;22693:31;22744:18;22736:6;22733:30;22730:2;;;-1:-1;;22766:12;22730:2;22804:110;22906:7;22897:6;22886:9;22882:22;22804:110;:::i;:::-;22786:128;;;;-1:-1;22604:326;-1:-1;;;;22604:326::o;22937:390::-;;23076:2;;23064:9;23055:7;23051:23;23047:32;23044:2;;;-1:-1;;23082:12;23044:2;23133:17;23127:24;23171:18;23163:6;23160:30;23157:2;;;-1:-1;;23193:12;23157:2;23279:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;12781:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;23213:98;23038:289;-1:-1;;;;;;;23038:289::o;23334:917::-;;;;;23599:2;23587:9;23578:7;23574:23;23570:32;23567:2;;;-1:-1;;23605:12;23567:2;23663:17;23650:31;23701:18;;23693:6;23690:30;23687:2;;;-1:-1;;23723:12;23687:2;23845:6;23834:9;23830:22;;;4998:3;4991:4;4983:6;4979:17;4975:27;4965:2;;-1:-1;;5006:12;4965:2;5053:6;5040:20;5075:111;5090:95;5178:6;5090:95;:::i;5075:111::-;5192:16;5228:6;5221:5;5214:21;5258:4;;5275:3;5271:14;5264:21;;5258:4;5250:6;5246:17;5372:4;5380:3;5258:4;5372;5364:6;5360:17;5250:6;5351:27;;5348:36;5345:2;;;-1:-1;;5387:12;5345:2;-1:-1;5413:10;;5407:237;5432:6;5429:1;5426:13;5407:237;;;5372:4;17828:9;17823:3;17819:19;17815:30;17812:2;;;-1:-1;;17848:12;17812:2;17876:20;5372:4;17876:20;:::i;:::-;17978:71;18045:3;18021:22;17978:71;:::i;:::-;17960:16;17953:97;18145:64;18205:3;5258:4;18185:9;18181:22;18145:64;:::i;:::-;5258:4;18131:5;18127:16;18120:90;18273:2;18331:9;18327:22;18755:20;18273:2;18292:5;18288:16;18281:75;18452:49;18497:3;23599:2;18477:9;18473:22;18452:49;:::i;:::-;23599:2;18438:5;18434:16;18427:75;18602:57;18655:3;18568;18635:9;18631:22;18602:57;:::i;:::-;18568:3;18584:16;;18577:83;5500:81;;5454:1;5447:9;;;;;5595:14;;;;5623;;;;5407:237;;;-1:-1;23743:119;;-1:-1;23938:22;;18755:20;;-1:-1;;;18273:2;24020:18;;24007:32;;-1:-1;;24048:30;;;24045:2;;;-1:-1;;24081:12;24045:2;;24119:116;24227:7;24218:6;24207:9;24203:22;24119:116;:::i;:::-;23561:690;;;;-1:-1;24101:134;-1:-1;;;;23561:690::o;24258:392::-;;24398:2;24386:9;24377:7;24373:23;24369:32;24366:2;;;-1:-1;;24404:12;24366:2;24455:17;24449:24;24493:18;24485:6;24482:30;24479:2;;;-1:-1;;24515:12;24479:2;24545:89;24626:7;24617:6;24606:9;24602:22;24545:89;:::i;24657:257::-;;24769:2;24757:9;24748:7;24744:23;24740:32;24737:2;;;-1:-1;;24775:12;24737:2;7351:6;7345:13;7363:30;7387:5;7363:30;:::i;24921:859::-;;;;;;;25105:3;25093:9;25084:7;25080:23;25076:33;25073:2;;;-1:-1;;25112:12;25073:2;7216:6;7203:20;7228:30;7252:5;7228:30;:::i;:::-;25164:60;-1:-1;25261:2;25300:22;;72:20;97:33;72:20;97:33;:::i;:::-;25269:63;-1:-1;25369:2;25408:22;;18755:20;;-1:-1;25495:51;25538:7;25477:2;25514:22;;25495:51;:::i;:::-;25485:61;;25583:3;25627:9;25623:22;7472:20;25592:63;;25692:3;25736:9;25732:22;7472:20;25701:63;;25067:713;;;;;;;;:::o;25787:1293::-;;;;;;;;26102:3;26090:9;26081:7;26077:23;26073:33;26070:2;;;-1:-1;;26109:12;26070:2;7485:6;7472:20;26161:63;;26261:2;26318:9;26314:22;12141:20;12166:47;12207:5;12166:47;:::i;:::-;26269:77;-1:-1;26383:2;26422:22;;72:20;97:33;72:20;97:33;:::i;:::-;26391:63;-1:-1;26491:2;26538:22;;358:20;383:41;358:20;383:41;:::i;:::-;26499:71;-1:-1;26635:3;26620:19;;26607:33;26660:18;26649:30;;;26646:2;;;-1:-1;;26682:12;26646:2;26712:86;26790:7;26781:6;26770:9;26766:22;26712:86;:::i;:::-;26702:96;;26863:3;26852:9;26848:19;26835:33;26821:47;;26660:18;26880:6;26877:30;26874:2;;;-1:-1;;26910:12;26874:2;;26948:116;27056:7;27047:6;27036:9;27032:22;26948:116;:::i;:::-;26064:1016;;;;-1:-1;26064:1016;;-1:-1;26064:1016;;;;26930:134;;-1:-1;;;26064:1016::o;27087:1175::-;;;;;;;;27340:3;27328:9;27319:7;27315:23;27311:33;27308:2;;;-1:-1;;27347:12;27308:2;7485:6;7472:20;27399:63;;27499:2;27556:9;27552:22;12141:20;12166:47;12207:5;12166:47;:::i;:::-;27507:77;-1:-1;27621:2;27660:22;;72:20;97:33;72:20;97:33;:::i;:::-;27629:63;-1:-1;27729:2;27768:22;;72:20;97:33;72:20;97:33;:::i;:::-;27737:63;-1:-1;27865:3;27850:19;;27837:33;27890:18;27879:30;;27876:2;;;-1:-1;;27912:12;27876:2;27942:86;28020:7;28011:6;28000:9;27996:22;27942:86;:::i;:::-;27932:96;;;28065:3;28109:9;28105:22;18755:20;28074:63;;28174:3;28218:9;28214:22;18755:20;28183:63;;27302:960;;;;;;;;;;:::o;28269:775::-;;;;;;28457:3;28445:9;28436:7;28432:23;28428:33;28425:2;;;-1:-1;;28464:12;28425:2;8612:6;8599:20;8624:49;8667:5;8624:49;:::i;:::-;28516:79;-1:-1;28632:2;28671:22;;72:20;97:33;72:20;97:33;:::i;:::-;28640:63;-1:-1;28740:2;28779:22;;72:20;97:33;72:20;97:33;:::i;:::-;28419:625;;;;-1:-1;28748:63;;28848:2;28887:22;;18755:20;;-1:-1;28956:3;28996:22;18755:20;;28419:625;-1:-1;;28419:625::o;29051:1159::-;;;;;;;;;29293:3;29281:9;29272:7;29268:23;29264:33;29261:2;;;-1:-1;;29300:12;29261:2;8789:6;8776:20;8801:57;8852:5;8801:57;:::i;:::-;29352:87;-1:-1;29476:2;29515:22;;72:20;97:33;72:20;97:33;:::i;:::-;29484:63;-1:-1;29584:2;29623:22;;18755:20;;-1:-1;29692:2;29731:22;;18755:20;;-1:-1;29800:3;29837:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;29809:60;-1:-1;29925:51;29968:7;29906:3;29944:22;;29925:51;:::i;:::-;29915:61;;30013:3;30057:9;30053:22;7472:20;30022:63;;30122:3;30166:9;30162:22;7472:20;30131:63;;29255:955;;;;;;;;;;;:::o;30217:1033::-;;;;;;;;30442:3;30430:9;30421:7;30417:23;30413:33;30410:2;;;-1:-1;;30449:12;30410:2;8971:6;8958:20;8983:54;9031:5;8983:54;:::i;:::-;30501:84;-1:-1;30622:2;30661:22;;72:20;97:33;72:20;97:33;:::i;:::-;30630:63;-1:-1;30730:2;30769:22;;18755:20;;-1:-1;30838:2;30877:22;;18755:20;;-1:-1;30965:51;31008:7;30946:3;30984:22;;30965:51;:::i;:::-;30955:61;;31053:3;31097:9;31093:22;7472:20;31062:63;;31162:3;31206:9;31202:22;7472:20;31171:63;;30404:846;;;;;;;;;;:::o;31557:396::-;;;31693:2;31681:9;31672:7;31668:23;31664:32;31661:2;;;-1:-1;;31699:12;31661:2;9144:6;9131:20;9156:48;9198:5;9156:48;:::i;:::-;31751:78;31866:2;31905:22;;;;18755:20;;-1:-1;;;31655:298::o;32744:909::-;;;;;;;32953:3;32941:9;32932:7;32928:23;32924:33;32921:2;;;-1:-1;;32960:12;32921:2;9658:6;9645:20;9670:53;9717:5;9670:53;:::i;:::-;33012:83;-1:-1;33132:2;33171:22;;72:20;97:33;72:20;97:33;:::i;:::-;33140:63;-1:-1;33240:2;33279:22;;72:20;97:33;72:20;97:33;:::i;:::-;33248:63;-1:-1;33348:2;33387:22;;72:20;97:33;72:20;97:33;:::i;:::-;32915:738;;;;-1:-1;32915:738;;33456:3;33496:22;;18755:20;;33565:3;33605:22;;;18755:20;;-1:-1;32915:738;-1:-1;;32915:738::o;37454:677::-;;;;;37639:3;37627:9;37618:7;37614:23;37610:33;37607:2;;;-1:-1;;37646:12;37607:2;10573:6;10560:20;10585:63;10642:5;10585:63;:::i;:::-;37698:93;-1:-1;37828:2;37867:22;;72:20;97:33;72:20;97:33;:::i;:::-;37836:63;-1:-1;37936:2;37975:22;;72:20;97:33;72:20;97:33;:::i;:::-;37601:530;;;;-1:-1;37944:63;;38044:2;38083:22;18755:20;;-1:-1;;37601:530::o;38138:911::-;;;;;;;38348:3;38336:9;38327:7;38323:23;38319:33;38316:2;;;-1:-1;;38355:12;38316:2;10764:6;10751:20;10776:57;10827:5;10776:57;:::i;:::-;38407:87;-1:-1;38531:2;38570:22;;72:20;97:33;72:20;97:33;:::i;:::-;38539:63;-1:-1;38639:2;38678:22;;72:20;97:33;72:20;97:33;:::i;:::-;38647:63;-1:-1;38747:2;38786:22;;18755:20;;-1:-1;38855:3;38892:22;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;38864:60;;;;38961:3;39005:9;39001:22;18755:20;38970:63;;38310:739;;;;;;;;:::o;41450:287::-;;41577:2;41565:9;41556:7;41552:23;41548:32;41545:2;;;-1:-1;;41583:12;41545:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;41744:423::-;;;41888:2;41876:9;41867:7;41863:23;41859:32;41856:2;;;-1:-1;;41894:12;41856:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;:::-;42069:2;42119:22;;;;18903:13;41946:86;;18903:13;;-1:-1;;;41850:317::o;42174:559::-;;;;42335:2;42323:9;42314:7;42310:23;42306:32;42303:2;;;-1:-1;;42341:12;42303:2;11496:6;11490:13;11508:45;11547:5;11508:45;:::i;:::-;42516:2;42566:22;;18903:13;42635:2;42685:22;;;18903:13;42393:86;;18903:13;;-1:-1;18903:13;42297:436;-1:-1;;;42297:436::o;44030:287::-;;44157:2;44145:9;44136:7;44132:23;44128:32;44125:2;;;-1:-1;;44163:12;44125:2;11826:6;11820:13;11838:45;11877:5;11838:45;:::i;44324:688::-;;;;44510:2;44498:9;44489:7;44485:23;44481:32;44478:2;;;-1:-1;;44516:12;44478:2;11826:6;11820:13;11838:45;11877:5;11838:45;:::i;:::-;44712:2;44697:18;;44691:25;44568:86;;-1:-1;44736:18;44725:30;;44722:2;;;-1:-1;;44758:12;44722:2;44788:89;44869:7;44860:6;44849:9;44845:22;44788:89;:::i;:::-;44778:99;;;44914:2;44968:9;44964:22;18903:13;44922:74;;44472:540;;;;;:::o;46008:1983::-;;;;;;;;;;;;46490:3;46478:9;46469:7;46465:23;46461:33;46458:2;;;-1:-1;;46497:12;46458:2;46559:66;46617:7;46593:22;46559:66;:::i;:::-;46549:76;;46714:18;;46690:2;46679:9;46675:18;46662:32;46703:30;46700:2;;;-1:-1;;46736:12;46700:2;46766:109;46867:7;46690:2;46679:9;46675:18;46662:32;46847:9;46843:22;46766:109;:::i;:::-;46756:119;;46714:18;46940:2;46929:9;46925:18;46912:32;46953:30;46950:2;;;-1:-1;;46986:12;46950:2;47024:95;47111:7;46940:2;46929:9;46925:18;46912:32;47091:9;47087:22;47024:95;:::i;:::-;47006:113;;-1:-1;47006:113;-1:-1;47174:87;47253:7;47156:2;47229:22;;47174:87;:::i;:::-;47164:97;;46714:18;47326:3;47315:9;47311:19;47298:33;47340:30;47337:2;;;-1:-1;;47373:12;47337:2;47411:79;47482:7;47326:3;47315:9;47311:19;47298:33;47462:9;47458:22;47411:79;:::i;:::-;47393:97;;-1:-1;47393:97;-1:-1;47527:3;47567:22;;18755:20;;-1:-1;47636:3;47676:22;;18755:20;;-1:-1;47773:3;47758:19;;47745:33;47787:30;-1:-1;47784:2;;;-1:-1;;47820:12;47784:2;;47859:116;47967:7;47773:3;47762:9;47758:19;47745:33;47947:9;47943:22;47859:116;:::i;:::-;47840:135;;;;;;;;46452:1539;;;;;;;;;;;;;;:::o;47998:1081::-;;;;;;;48249:3;48237:9;48228:7;48224:23;48220:33;48217:2;;;-1:-1;;48256:12;48217:2;48314:17;48301:31;48352:18;;48344:6;48341:30;48338:2;;;-1:-1;;48374:12;48338:2;48453:22;;;;16595:4;16574:19;;;16570:30;16567:2;;;-1:-1;;16603:12;16567:2;16631:20;16595:4;16631:20;:::i;:::-;7485:6;7472:20;16717:16;16710:75;16879:62;16937:3;16846:2;16917:9;16913:22;16879:62;:::i;:::-;16846:2;16865:5;16861:16;16854:88;17006:2;17079:9;17075:22;8431:20;8456:48;8498:5;8456:48;:::i;:::-;17006:2;17021:16;;17014:90;17202:64;17262:3;17169:2;17238:22;;17202:64;:::i;:::-;17169:2;17188:5;17184:16;17177:90;17330:3;17389:9;17385:22;18755:20;17330:3;17350:5;17346:16;17339:75;17507:3;17496:9;17492:19;17479:33;48352:18;17524:6;17521:30;17518:2;;;-1:-1;;17554:12;17518:2;17599:58;17653:3;17644:6;17633:9;17629:22;17599:58;:::i;:::-;17507:3;17585:5;17581:16;17574:84;;48394:91;;;;;;48540:87;48619:7;16846:2;48599:9;48595:22;48540:87;:::i;:::-;48211:868;;48530:97;;-1:-1;;;;17507:3;48704:22;;18755:20;;16595:4;48813:22;;18755:20;;48882:3;48922:22;;18755:20;;-1:-1;48991:3;49031:22;;;18755:20;;-1:-1;48211:868::o;49086:241::-;;49190:2;49178:9;49169:7;49165:23;49161:32;49158:2;;;-1:-1;;49196:12;49158:2;-1:-1;18755:20;;49152:175;-1:-1;49152:175::o;49334:263::-;;49449:2;49437:9;49428:7;49424:23;49420:32;49417:2;;;-1:-1;;49455:12;49417:2;-1:-1;18903:13;;49411:186;-1:-1;49411:186::o;49604:366::-;;;49725:2;49713:9;49704:7;49700:23;49696:32;49693:2;;;-1:-1;;49731:12;49693:2;-1:-1;;18755:20;;;49883:2;49922:22;;;18755:20;;-1:-1;49687:283::o;49977:399::-;;;50109:2;50097:9;50088:7;50084:23;50080:32;50077:2;;;-1:-1;;50115:12;50077:2;-1:-1;;18903:13;;50278:2;50328:22;;;18903:13;;;;;-1:-1;50071:305::o;52090:127::-;-1:-1;;;;;106037:54;52167:45;;52161:56::o;53341:740::-;;100421:6;100416:3;100409:19;100458:4;;100453:3;100449:14;53503:93;;53696:21;-1:-1;53723:336;53748:6;53745:1;53742:13;53723:336;;;8444:6;8431:20;8456:48;8498:5;8456:48;:::i;:::-;-1:-1;;;;;106037:54;61728:65;;50749:14;;;;102661:12;;;;53770:1;53763:9;53723:336;;;-1:-1;54065:10;;53490:591;-1:-1;;;;;53490:591::o;55722:657::-;;100421:6;100416:3;100409:19;100458:4;;100453:3;100449:14;55867:92;;56043:21;-1:-1;56070:287;56095:6;56092:1;56089:13;56070:287;;;12635:20;;60290:37;;51139:14;;;;102787:12;;;;56117:1;56110:9;56070:287;;58610:670;;58793:5;98446:12;100421:6;100416:3;100409:19;100458:4;;100453:3;100449:14;58805:83;;100458:4;58959:5;97452:14;-1:-1;58998:260;59023:6;59020:1;59017:13;58998:260;;;59084:13;;60290:37;;51913:14;;;;99359;;;;59045:1;59038:9;58998:260;;60017:94;103084:13;103077:21;60072:34;;60066:45::o;60959:323::-;;61091:5;98446:12;100421:6;100416:3;100409:19;61174:52;61219:6;100458:4;100453:3;100449:14;100458:4;61200:5;61196:16;61174:52;:::i;:::-;109582:2;109562:14;-1:-1;;109558:28;61238:39;;;;100458:4;61238:39;;61039:243;-1:-1;;61039:243::o;67255:1142::-;67490:23;;67422:4;67526:38;;;98446:12;;67413:14;;;100409:19;;;67255:1142;;100458:4;;97452:14;;;;100449;;;;67255:1142;54561:290;54586:6;54583:1;54580:13;54561:290;;;54647:13;;-1:-1;;;;;106037:54;61728:65;;99359:14;;;;50749;;;;54608:1;54601:9;54561:290;;;54565:14;;100458:4;67784:5;67780:16;67774:23;67754:43;;67843:3;67837:4;67833:14;100458:4;67821:3;67817:14;67810:38;67863:103;67961:4;67947:12;67863:103;:::i;:::-;67855:111;;;;68055:4;68048:5;68044:16;68038:23;68107:3;68101:4;68097:14;68055:4;68085:3;68081:14;68074:38;68127:71;68193:4;68179:12;68127:71;:::i;:::-;68119:79;;;68296:4;68289:5;68285:16;68279:23;68308:57;68296:4;68354:3;68350:14;68336:12;68308:57;:::i;:::-;-1:-1;68381:11;67395:1002;-1:-1;;;67395:1002::o;68471:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;106037:54;;;52167:45;;102246:2;102237:12;;7203:20;;7228:30;7203:20;7228:30;:::i;:::-;103084:13;;103077:21;102246:2;68989:14;;60072:34;102503:12;;;72:20;;97:33;72:20;97:33;:::i;:::-;106037:54;102503:12;69199:14;;52167:45;102381:12;;;7203:20;7228:30;7203:20;7228:30;:::i;:::-;60099:5;103084:13;103077:21;102381:12;69388:3;69384:14;60072:34;;68603:817;;:::o;73535:271::-;;61449:5;98446:12;61560:52;61605:6;61600:3;61593:4;61586:5;61582:16;61560:52;:::i;:::-;61624:16;;;;;73669:137;-1:-1;;73669:137::o;73813:448::-;;61449:5;98446:12;61560:52;61605:6;61600:3;61593:4;61586:5;61582:16;61560:52;:::i;:::-;61624:16;;108983:6;108978:3;61624:16;108960:30;109021:16;;;109014:27;;;-1:-1;109021:16;74003:258;-1:-1;;74003:258::o;74654:392::-;60290:37;;;74907:2;74898:12;;60290:37;75009:12;;;74798:248::o;75053:222::-;-1:-1;;;;;106037:54;;;;52167:45;;75180:2;75165:18;;75151:124::o;75527:464::-;-1:-1;;;;;106037:54;;;52167:45;;106037:54;;;;75900:2;75885:18;;52167:45;103084:13;;103077:21;75977:2;75962:18;;60072:34;75720:2;75705:18;;75691:300::o;75998:527::-;;76226:2;76215:9;76211:18;-1:-1;;;;;106048:42;102894:5;106037:54;52027:3;52020:58;76352:2;76226;76352;76341:9;76337:18;76330:48;76392:123;55143:5;98446:12;100421:6;100416:3;100409:19;100449:14;76215:9;100449:14;55155:93;;76352:2;55334:5;97452:14;55346:21;;-1:-1;55373:290;55398:6;55395:1;55392:13;55373:290;;;55459:13;;106037:54;;61728:65;;99359:14;;;;50961;;;;55420:1;55413:9;55373:290;;;-1:-1;76384:131;;76197:328;-1:-1;;;;;;;;76197:328::o;76532:333::-;-1:-1;;;;;106037:54;;;52167:45;;106037:54;;76851:2;76836:18;;52167:45;76687:2;76672:18;;76658:207::o;76872:544::-;-1:-1;;;;;106037:54;;;52167:45;;106037:54;;;;77242:2;77227:18;;52167:45;77325:2;77310:18;;60290:37;103084:13;;103077:21;77402:2;77387:18;;60072:34;77077:3;77062:19;;77048:368::o;77423:984::-;-1:-1;;;;;106037:54;;;52167:45;;106037:54;;;;77901:2;77886:18;;52167:45;77984:2;77969:18;;60290:37;;;;78067:2;78052:18;;60290:37;;;;103084:13;103077:21;78144:3;78129:19;;60072:34;106253:4;106242:16;78224:3;78209:19;;73488:35;78308:3;78293:19;;60290:37;78392:3;78377:19;;60290:37;;;;77736:3;77721:19;;77707:700::o;78414:884::-;-1:-1;;;;;106037:54;;;52167:45;;106037:54;;;;78870:2;78855:18;;52167:45;78953:2;78938:18;;60290:37;;;;79036:2;79021:18;;60290:37;;;;106253:4;106242:16;79115:3;79100:19;;73488:35;79199:3;79184:19;;60290:37;79283:3;79268:19;;60290:37;;;;78705:3;78690:19;;78676:622::o;79305:872::-;-1:-1;;;;;106037:54;;;52167:45;;103084:13;;103077:21;79749:2;79734:18;;60072:34;106037:54;;;;79832:2;79817:18;;52167:45;79915:2;79900:18;;60290:37;;;;106253:4;106242:16;79994:3;79979:19;;73488:35;80078:3;80063:19;;60290:37;;;;80162:3;80147:19;;60290:37;;;;79590:3;79575:19;;79561:616::o;80184:345::-;-1:-1;;;;;106037:54;;;;52167:45;;106253:4;106242:16;80515:2;80500:18;;63706:56;80345:2;80330:18;;80316:213::o;80536:333::-;-1:-1;;;;;106037:54;;;;52167:45;;80855:2;80840:18;;60290:37;80691:2;80676:18;;80662:207::o;80876:432::-;-1:-1;;;;;106037:54;;;;52167:45;;81217:2;81202:18;;60290:37;;;;103084:13;103077:21;81294:2;81279:18;;60072:34;81053:2;81038:18;;81024:284::o;81315:558::-;-1:-1;;;;;106037:54;;;;52167:45;;81692:2;81677:18;;60290:37;;;;105956:6;105945:18;81782:2;81767:18;;63411:57;103084:13;103077:21;81859:2;81844:18;;60072:34;81527:3;81512:19;;81498:375::o;81880:517::-;82103:2;82117:47;;;82088:18;;100409:19;;;81880:517;52954:21;100449:14;;;81880:517;52981:291;53006:6;53003:1;53000:13;52981:291;;;100458:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;106037:54;52167:45;;102237:12;;;;50537:14;;;;53028:1;53021:9;52981:291;;;52985:14;82170:126;;;;;-1:-1;;;;;102894:5;106037:54;100458:4;82372:9;82368:18;52020:58;82074:323;;;;;;:::o;82404:494::-;82643:2;82657:47;;;98446:12;;82628:18;;;100409:19;;;82404:494;;82643:2;100449:14;;;;;;97452;;;82404:494;58196:353;58221:6;58218:1;58215:13;58196:353;;;58288:6;58282:13;72241:16;72235:23;105316:45;105355:5;105316:45;:::i;:::-;63144:70;;72416:16;;;72410:23;-1:-1;;;;;106037:54;72502:14;;;52167:45;72587:16;;;72581:23;72658:14;;;60290:37;72754:4;72743:16;;;72737:23;72766:63;72814:14;;;72737:23;72766:63;:::i;:::-;-1:-1;;72913:4;72902:16;;;72896:23;;72925:79;72989:14;;;72896:23;72925:79;:::i;:::-;-1:-1;;51740:4;51731:14;;;;;99359;;;;58243:1;58236:9;58196:353;;;-1:-1;82710:178;;82614:284;-1:-1;;;;;;;82614:284::o;82905:210::-;103084:13;;103077:21;60072:34;;83026:2;83011:18;;82997:118::o;83122:768::-;;60320:5;60297:3;60290:37;-1:-1;;;;;106048:42;102894:5;106037:54;83580:2;83569:9;83565:18;52167:45;106048:42;102894:5;106037:54;83679:2;83668:9;83664:18;52167:45;;83415:3;83716:2;83705:9;83701:18;83694:48;83756:124;83415:3;83404:9;83400:19;83866:6;83756:124;:::i;:::-;83748:132;83386:504;-1:-1;;;;;;83386:504::o;85178:353::-;85343:2;85328:18;;105179:45;105218:5;105179:45;:::i;:::-;62385:60;;;85517:2;85502:18;60290:37;85314:217;:::o;85538:464::-;85731:2;85716:18;;105179:45;105218:5;105179:45;:::i;:::-;62385:60;;;85905:2;85890:18;;60290:37;;;;85988:2;85973:18;;;60290:37;85702:300;:::o;86009:612::-;;105316:45;105355:5;105316:45;:::i;:::-;107814:36;62545:3;62538:60;86252:2;86380;86369:9;86365:18;86358:48;86420:108;86252:2;86241:9;86237:18;86514:6;86420:108;:::i;:::-;86412:116;;60320:5;86607:2;86596:9;86592:18;60290:37;86223:398;;;;;;:::o;87247:1568::-;;87836:3;;87825:9;87821:19;105591:46;105631:5;105591:46;:::i;:::-;62835:61;;;87966:2;87951:18;;;87944:48;;;;98446:12;;100409:19;;;;100449:14;;;;;56933:17;;;56924:27;;;;;;97452:14;;;-1:-1;57092:423;57117:6;57114:1;57111:13;57092:423;;;57169:20;;;;;57157:33;;57218:13;;66342:23;;60290:37;;66510:16;;;66504:23;66581:14;;;60290:37;66684:4;66673:16;;;66667:23;66744:14;;;60290:37;66840:4;66829:16;;;66823:23;66900:14;;;60290:37;66998:4;66987:16;;;66981:23;66274:4;67024:14;;;67017:38;;;66981:23;67070:71;66265:14;;;66981:23;67070:71;:::i;:::-;57494:14;;;;57238:134;-1:-1;;;99359:14;;;;57139:1;57132:9;57092:423;;;57096:14;;;;88224:9;88218:4;88214:20;66684:4;88198:9;88194:18;88187:48;88249:133;88377:4;88368:6;88360;88249:133;:::i;:::-;88241:141;;;88393:138;66840:4;88516:9;88512:18;88503:6;88393:138;:::i;:::-;88580:9;88574:4;88570:20;88564:3;88553:9;88549:19;88542:49;88605:116;88716:4;88707:6;88699;88605:116;:::i;:::-;88597:124;;;60320:5;88800:3;88789:9;88785:19;60290:37;87807:1008;;;;;;;;;;;:::o;89178:416::-;89378:2;89392:47;;;63999:2;89363:18;;;100409:19;64035;100449:14;;;64015:40;64074:12;;;89349:245::o;89601:416::-;89801:2;89815:47;;;64325:2;89786:18;;;100409:19;64361:18;100449:14;;;64341:39;64399:12;;;89772:245::o;90024:416::-;90224:2;90238:47;;;64650:2;90209:18;;;100409:19;64686:33;100449:14;;;64666:54;64739:12;;;90195:245::o;90447:416::-;90647:2;90661:47;;;64990:2;90632:18;;;100409:19;65026:17;100449:14;;;65006:38;65063:12;;;90618:245::o;90870:416::-;91070:2;91084:47;;;65314:2;91055:18;;;100409:19;65350:21;100449:14;;;65330:42;65391:12;;;91041:245::o;91293:416::-;91493:2;91507:47;;;65947:2;91478:18;;;100409:19;65983:27;100449:14;;;65963:48;66030:12;;;91464:245::o;91716:850::-;;92049:3;92071:17;92064:47;70936:16;70930:23;92049:3;92038:9;92034:19;60290:37;71101:4;71094:5;71090:16;71084:23;105591:46;105631:5;105591:46;:::i;:::-;71172:14;;;62835:61;71269:4;71258:16;;71252:23;-1:-1;;;;;106037:54;;;71344:14;;;61728:65;71442:4;71431:16;;71425:23;106037:54;71517:14;;;61728:65;71613:4;71602:16;;71596:23;71673:14;;;60290:37;71771:4;71760:16;;71754:23;70862:4;71797:14;;;71790:38;71843:71;70853:14;;;71754:23;71843:71;:::i;:::-;92117:122;;;92250:138;71101:4;92373:9;92369:18;92360:6;92250:138;:::i;:::-;71771:4;92452:19;;60290:37;;;;70862:4;92536:19;60290:37;92020:546;;-1:-1;;92020:546::o;92573:222::-;60290:37;;;92700:2;92685:18;;92671:124::o;92802:333::-;60290:37;;;-1:-1;;;;;106037:54;93121:2;93106:18;;52167:45;92957:2;92942:18;;92928:207::o;93142:444::-;60290:37;;;-1:-1;;;;;106037:54;;;93489:2;93474:18;;52167:45;106037:54;93572:2;93557:18;;52167:45;93325:2;93310:18;;93296:290::o;93593:460::-;60290:37;;;-1:-1;;;;;106037:54;;;;93948:2;93933:18;;52167:45;94039:2;94024:18;;63559:58;93784:2;93769:18;;93755:298::o;94060:325::-;106253:4;106242:16;;;;73488:35;;94371:2;94356:18;;60290:37;94211:2;94196:18;;94182:203::o;94392:436::-;106253:4;106242:16;;;;73488:35;;94731:2;94716:18;;60290:37;;;;94814:2;94799:18;;60290:37;94571:2;94556:18;;94542:286::o;94835:256::-;94897:2;94891:9;94923:17;;;94998:18;94983:34;;95019:22;;;94980:62;94977:2;;;95055:1;;95045:12;94977:2;94897;95064:22;94875:216;;-1:-1;94875:216::o;95098:319::-;;95272:18;95264:6;95261:30;95258:2;;;-1:-1;;95294:12;95258:2;-1:-1;95339:4;95327:17;;;95392:15;;95195:222::o;109056:268::-;109121:1;109128:101;109142:6;109139:1;109136:13;109128:101;;;109209:11;;;109203:18;109190:11;;;109183:39;109164:2;109157:10;109128:101;;;109244:6;109241:1;109238:13;109235:2;;;-1:-1;;109121:1;109291:16;;109284:27;109105:219::o;109599:103::-;109680:1;109673:5;109670:12;109660:2;;109686:9;109709:103;109790:1;109783:5;109780:12;109770:2;;109796:9;109929:104;110011:1;110004:5;110001:12;109991:2;;110017:9;110160:117;-1:-1;;;;;110247:5;106037:54;110222:5;110219:35;110209:2;;110268:1;;110258:12;110424:111;110505:5;103084:13;103077:21;110483:5;110480:32;110470:2;;110526:1;;110516:12;113334:106;113415:1;113408:5;113405:12;113395:2;;113431:1;;113421:12;113560:106;113641:1;113634:5;113631:12;113621:2;;113657:1;;113647:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","canCallUserCheckpoint()":"10f3aaff","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeCheckpoint(address,address[])":"48699d58","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256,(uint256,uint256)[])":"837f9bcb","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapCompoundV2(address,address,address,uint256,uint256)":"44b6ac74","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapEuler(address,address,address,uint256,uint256)":"941e849b","unwrapGearbox(address,address,address,uint256,uint256)":"f4dd54b0","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapShareToken(address,address,address,uint256,uint256)":"4e9d9bab","unwrapTetu(address,address,address,uint256,uint256)":"311c5c57","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","unwrapYearn(address,address,address,uint256,uint256)":"8b35ac8d","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapCompoundV2(address,address,address,uint256,uint256)":"2c25efe1","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapEuler(address,address,address,address,uint256,uint256)":"52b88746","wrapGearbox(address,address,address,uint256,uint256)":"138fdc2c","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapShareToken(address,address,address,uint256,uint256)":"5001fe75","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapTetu(address,address,address,uint256,uint256)":"b064b376","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399","wrapYearn(address,address,address,uint256,uint256)":"4f06a70b"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"canCallUserCheckpoint\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"canCallUserCheckpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeCheckpoint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"dieselAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ICToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapCompoundV2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEulerToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"eulerProtocol\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapEuler\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IGearboxDieselToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapGearbox\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IShareToken\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapShareToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapTetu\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IYearnTokenVault\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapYearn\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"canCallUserCheckpoint()\":{\"details\":\"This method is not expected to be called inside `multicall` so it is not marked as `payable`.\"},\"gaugeCheckpoint(address,address[])\":{\"details\":\"Both mainnet and child chain gauges are supported.\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary). This function does not alter the state in any way. It is not marked as view because it has to be `payable` in order to be used in a batch transaction. Use a static call to read the state off-chain.\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"canCallUserCheckpoint()\":{\"notice\":\"Returns true if the relayer is configured to checkpoint gauges directly via `user_checkpoint`.\"},\"gaugeCheckpoint(address,address[])\":{\"notice\":\"Perform a user checkpoint for the given user on the given set of gauges.\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBatchRelayerLibrary.sol\":\"MockBatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0xaf89a1c985b8e47e86835831c0c085dc686637ce978292f83d61417983042175\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2b002b0db6c145d4a4c3a5301c45d8843d45e43c1f95976394ac537924bf351b\",\"dweb:/ipfs/QmetLPRp7w1n3dGBWdH5ZY7Zkds5wJKuQGrcvEjgz8hwz9\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xfbbb7599551190ae4fe8b2e507bdf78eb834537f9aee14c7b69cda4ea8ef6286\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ec1018da23b861fbaadf4b5d86677ffe064f1eaeca6675bb55e912ee76115eeb\",\"dweb:/ipfs/QmW2WVArYqbTYXKeU6mHeskwyu4ww7NRGfUjTsXSPGrLQA\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x19103ec3d00cbdbe25ef95721ba669cfcfaf046a60447a1b49986026e61fc57c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6765d86f532928df96af43990b5bccd20a0d2965707cb5e9d5afda9580be3fe4\",\"dweb:/ipfs/QmZmhVpWcGpFk9u4iy4srKs248c9FdAzjjmdMATexpqa6j\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":{\"keccak256\":\"0x0a32eeae183b04333cee772022b0c084e6a0f676842731055dd63daddf6aa387\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3786f317c3dcbff798b2b461be6743a7c209da4cd88a2bea737daceba6ad5f41\",\"dweb:/ipfs/QmcbHLg2PZWWyqtGzM6CQCvhEA7fQ1r3WNh3A3GDxqDii3\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":{\"keccak256\":\"0x1831b7e182413889843464b9a0f8840ac8037fa2d6dae5f2d662682d3c08b3c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3dbde681f0d84d00c22aced367701fe6568c143575ec20ac146948664008433d\",\"dweb:/ipfs/QmSzNhMp1umzDJ97xFZAcitXKFefHCJc4SKVKKczxTfqNg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":{\"keccak256\":\"0x8a30751d1411b686dc598147ae15677c935e468b46c10998bc713ab26f4cf433\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49d59beba049d9ec36289d0ff86a1eae34bc11b13052c68bc1604b86ff91d6c3\",\"dweb:/ipfs/QmXjX1eJWQGtpqknMaqJxejy8v8HJv6NrCn7ZhoozvQroD\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0x95fe58d2b75267e6068077264da8f0ce358f0f9e18167ea902bb1d29e9636ad5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8eb074a823f7cd09f9e73f52af4c6d2602b71ec127ca08acb67336f79dfdc79b\",\"dweb:/ipfs/QmbyDXinvkw5P2KBa7menkS6jp8cdWGg1qhAu5CEYi3vdE\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0x3484dfca85640613673f4e0d9eab0e479b0a8441ae871fe5bc396a5115611a16\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://44387d71bce29dc17e3bd090804d90d783b1afb6a947ab967a17d63f0d399db4\",\"dweb:/ipfs/QmbBYKDTqFWogyLfQX8LNVqz9ndbrY8cV8NMVCuMFGGJDo\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0x90f015009b9eb5ef856d5bbdebcaf90ab53c0e4ddb26a289f81156fef607c5ac\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://793d728e420243ea1940e517b18bdc8043b0aaa778af63fe334bce4c2cd815ba\",\"dweb:/ipfs/Qmdb1PqtyT6UnKDUCphasSmAj4nXn6YVwmUzuSveAgQzNn\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x39fa4329e480fdfd025ca692937d3d7857359eaf27faba07191dae56d374c75d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3c361b8e24e59c3fa6c79f058506e8484649b3082ca49974387d217ee0f0a3e8\",\"dweb:/ipfs/QmX53HeJGcEac72TRZyYppncdTpWRJjqGoXPCofmWgs56Q\"]},\"contracts/relayer/CompoundV2Wrapping.sol\":{\"keccak256\":\"0x4b471ef2176bc032c70522abb0dd140e70e43d527f06e4d886d63370b0bd1887\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c6da47a5f3b95da8bacb92c92b9761dc4434a44b4b82a94f586b20a71bc52dc6\",\"dweb:/ipfs/QmXBqprKiCbV4ojJtvP2T2ZDdgB9feeEJjKRhPoG9QvR6x\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0xcdf9a0800b63570a3a722a7e7a9d7d723d5620973f4214bb22d14e83d8c636b9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c760aacaa8c5b103fafefb33ded3f79a5b7a223a689363732d1fc7fb3340fc5\",\"dweb:/ipfs/QmcReLmzgcrfAHP4EkHQaaXX48yUMTqwgTLpSDMSCnB1GB\"]},\"contracts/relayer/EulerWrapping.sol\":{\"keccak256\":\"0xcb420fd6500ca664776deac14c4838b027b3979248c744abbbe1f1721d500c32\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3afd0d940806798c0a4d34eff0719e1173148d62ac5b904fd7b0227522607cdf\",\"dweb:/ipfs/QmbDH3wd8f51bMmjA1R9CrE5EcPxsRxeY6LKCfhgrSX5PR\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x0bd0b02deb9cc842216d099acbce84754b3afbad86c20c0438157d04bc1f392b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7ae4102b6779215962b1606267d650ad3c9f22deb8f59efa6d190503283cee92\",\"dweb:/ipfs/QmdkmsACedQSDuZY26RZTGLb3rMsqPC65jyjPGA91jcpnB\"]},\"contracts/relayer/GearboxWrapping.sol\":{\"keccak256\":\"0x4a4abac13dc35fdced712313edafadaed81fba33f826b8d2689f4746020d88af\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://17e86ab04b28d7f5e2e76b6884958bc9a58d72400fd5f543b66e858d2bf07cd1\",\"dweb:/ipfs/Qma3fcYSSF2Y6kmR7jU687Qt9RswCxG4o5WPbthbc5fFEq\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xe8b65f2c66f8f57b98663fecd63996b87cfe108752ffceebca2894242850adc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c44dfbcf5a0020d2d9dc8f13371e06383f4cfe11328a528a558f8cedb3e6702\",\"dweb:/ipfs/QmUChPBzPUaQKZj95gAofVGPdUNMM8JZJ3gbXzqtWLXh5G\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xd75043c8439f56d8793e46177a0a66edf8bed0cb0857b449478a8233d9366649\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb284393086201aa4b7dcba1aa32e33a3c8662933146c6aac347a86755830ad2\",\"dweb:/ipfs/QmQbdhsqcVgvwQQ2mfU1m1pVGWtuTagiGPcJaAtEG8qS5p\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0x25f094d195f4fa07875934cb11dc08834ea26298079390a5413f8f4026f42711\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://50745092953571536881ac3769653e7a6b8c1db1a403ae7b0525c7b6a500a1d7\",\"dweb:/ipfs/QmYmxhBjGdJmj7HFXq3SKK5trtcKWCzEmUXhq2LzjpCgvr\"]},\"contracts/relayer/SiloWrapping.sol\":{\"keccak256\":\"0xc770962419ab2a6297829b478a2783696adb21dbe62debb5a35de70ca6e3ef59\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://363f9ef6c8cee4611ef2a518e1f8ead048a8d79429cdbc68cb95a777e89da84e\",\"dweb:/ipfs/QmVRe3tZreoLYBYGTAVCPNC9qron9ner1VoAMCD2Cueq6t\"]},\"contracts/relayer/TetuWrapping.sol\":{\"keccak256\":\"0xd29edcc986e994878c002c9d547f3dc5690969088b4f26f789e800727963e02d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c25461292d80dc63e234c75c9e23439f1d28ffe074983f27ca158a5d01f37a62\",\"dweb:/ipfs/QmTHW88dF66g6zLouvXZazpqrDddhFk3aaLKnYvHqzW2g1\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x6139f4c5c2dad2f0ffc79f25b792cc4fb480bc7df61556adad23d02963bdd1eb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://482c99db9e677a88d472a85b9c0dc55a3912f803d3c09794677f98064cd8d3f9\",\"dweb:/ipfs/QmWNdMwkLJyyT7b6qjJndNFrDKwmQmMRm7xyUj2KyYz9bR\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x3d9190caf099bab66218fd0be5e3d06dc7860ba6cc8ebb9fad02a327cfa3d65e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5307c048dd8b02a23e860f8c5364d0b3dd1efbc1e0cf9920077eecece56fa8cc\",\"dweb:/ipfs/QmdPCdYeN9oVLJnqPijvX9Z8W12VFRNLYuXHLaxKRmG915\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]},\"contracts/relayer/YearnWrapping.sol\":{\"keccak256\":\"0x2704851099c3f0951b70ac4f2a4312dfb1b1407d0732e1f20eab359c3fc9690c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4e46ef856ff43710b0730201a6d4fc474d5c5ba2dde21083b1a0c8f67d26c0e\",\"dweb:/ipfs/QmWjDtpweMHcBb848SAGMyAH8nfcot9mTXJF6mGdn42Znq\"]},\"contracts/test/MockBatchRelayerLibrary.sol\":{\"keccak256\":\"0x07fd6c23d37dac954a59f055d2c73a3c76ca29296fce34555e55a26ac2989a77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://92a88bd2a77d7c9876c6a9f59484728db90cdd89a5d973bb57e2557a08f90dfe\",\"dweb:/ipfs/QmYsjgw6UQRnzUhBY522JuayF1bWfcKsdaDdBB3g8qmGjt\"]}},\"version\":1}"}},"contracts/test/MockCToken.sol":{"MockCToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"uint256","name":"exchangeRate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"fromCTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintTestTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newExchangeRate","type":"uint256"}],"name":"setExchangeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"toCTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b5060405162001b2e38038062001b2e833981810160405260808110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060408181526020838101519382015183830190925260018352603160f81b81840152875193955090935086928692600892859283929183918791620001e5916003918501906200041c565b508051620001fb9060049060208401906200041c565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200024e8162000326565b505050816001600160a01b031660e0816001600160a01b031660601b815250506000620002f4836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ae57600080fd5b505afa158015620002c3573d6000803e3d6000fd5b505050506040513d6020811015620002da57600080fd5b5051600a9060ff166200033c602090811b62000bf017901c565b600a0a610100819052905062000317828262000357602090811b62000c0917901c565b60075550620004b89350505050565b6005805460ff191660ff92909216919091179055565b600082820162000350848210158362000391565b9392505050565b60008282026200037f841580620003775750838583816200037457fe5b04145b600362000391565b670de0b6b3a764000090049392505050565b81620003a257620003a281620003a6565b5050565b620003b8816210905360ea1b620003bb565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200045f57805160ff19168380011785556200048f565b828001600101855582156200048f579182015b828111156200048f57825182559160200191906001019062000472565b506200049d929150620004a1565b5090565b5b808211156200049d5760008155600101620004a2565b60805160a05160c05160e05160601c610100516116296200050560003980610b8452508061086152806109c15280610b575250806111e952508061122b52508061120a52506116296000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a457c2d711610097578063db006a7511610071578063db006a7514610607578063db068e0e14610624578063dd62ed3e14610641578063ed24911d1461067c576101b9565b8063a457c2d714610537578063a9059cbb14610570578063d505accf146105a9576101b9565b80637ecebe00116100d35780637ecebe00146104ac57806390193b7c146104df57806395d89b4114610512578063a0712d681461051a576101b9565b806370a082311461040757806379cc67901461043a5780637c602bc214610473576101b9565b806339509351116101665780634b5da1ed116101405780634b5da1ed146103445780635fc0b7271461039c57806363fac3c7146103b95780636f307dc3146103d6576101b9565b8063395093511461030b57806340c10f191461034457806342966c681461037f576101b9565b806323b872dd1161019757806323b872dd146102a2578063313ce567146102e55780633644e51514610303576101b9565b806306fdde03146101be578063095ea7b31461023b57806318160ddd14610288575b600080fd5b6101c6610684565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102005781810151838201526020016101e8565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102746004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610738565b604080519115158252519081900360200190f35b61029061074e565b60408051918252519081900360200190f35b610274600480360360608110156102b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610754565b6102ed6107b5565b6040805160ff9092168252519081900360200190f35b6102906107be565b6102746004803603604081101561032157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cd565b61037d6004803603604081101561035a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610810565b005b61037d6004803603602081101561039557600080fd5b503561081e565b610290600480360360208110156103b257600080fd5b503561082b565b610290600480360360208110156103cf57600080fd5b5035610848565b6103de61085f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102906004803603602081101561041d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610883565b61037d6004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ab565b61037d6004803603604081101561048957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e1565b610290600480360360208110156104c257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108eb565b610290600480360360208110156104f557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6101c661091a565b6102906004803603602081101561053057600080fd5b5035610999565b6102746004803603604081101561054d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109fc565b6102746004803603604081101561058657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a42565b61037d600480360360e08110156105bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a4f565b6102906004803603602081101561061d57600080fd5b5035610b24565b61037d6004803603602081101561063a57600080fd5b5035610b7e565b6102906004803603604081101561065757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610bae565b610290610be6565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561072e5780601f106107035761010080835404028352916020019161072e565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b5050505050905090565b6000610745338484610c41565b50600192915050565b60025490565b6000610761848484610cb0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107ab9186916107a6908661019e610dd9565b610c41565b5060019392505050565b60055460ff1690565b60006107c8610be6565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107459185906107a69086610bf0565b61081a8282610def565b5050565b6108283382610ea8565b50565b600061084260075483610f9890919063ffffffff16565b92915050565b600061084260075483610fe290919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006108c5826101a16108be8633610bae565b9190610dd9565b90506108d2833383610c41565b6108dc8383610ea8565b505050565b61081a8282610ea8565b6000610842825b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561072e5780601f106107035761010080835404028352916020019161072e565b6000806109a58361082b565b90506109e973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633308661101a565b6109f33382610def565b50600092915050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107459185906107a6908661019f610dd9565b6000610745338484610cb0565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a7e8c6108f2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610b0f8882610b068787876110b5565b886101f86110f4565b610b1a888888610c41565b5050505050505050565b6000610b303383610ea8565b6000610b3b83610848565b90506109f373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383611158565b610ba8817f0000000000000000000000000000000000000000000000000000000000000000610c09565b60075550565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107c86111e5565b6000828201610c0284821015836112b0565b9392505050565b6000828202610c2d841580610c26575083858381610c2357fe5b04145b60036112b0565b670de0b6b3a7640000815b04949350505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610cd473ffffffffffffffffffffffffffffffffffffffff841615156101986112b0565b610cf873ffffffffffffffffffffffffffffffffffffffff831615156101996112b0565b610d038383836108dc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610d3690826101a0610dd9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610d729082610bf0565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610de884841115836112b0565b5050900390565b610dfb600083836108dc565b610e15610e1082610e0a61074e565b90610bf0565b6112be565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e459082610bf0565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610ecc73ffffffffffffffffffffffffffffffffffffffff8316151561019b6112b0565b610ed8826000836108dc565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f0b90826101b2610dd9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610f46610e1082610f4061074e565b906112c3565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610fa782151560046112b0565b670de0b6b3a76400008302610fd9841580610fd25750670de0b6b3a7640000858381610fcf57fe5b04145b60056112b0565b828181610c3857fe5b6000828202610ffc841580610c26575083858381610c2357fe5b6001670de0b6b3a76400006001830304018115150291505092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526110af9085906112d1565b50505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006110ff856113e7565b905061111561110f87838761144e565b836112b0565b611124428410156101b86112b0565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526108dc9084906112d1565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611252611560565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161081a5761081a81611564565b600255565b6000610c0283836001610dd9565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061133a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b509150915060008214156113b9573d6000803e3d6000fd5b6110af8151600014806113df57508180602001905160208110156113dc57600080fd5b50515b6101a26112b0565b60006113f16111e5565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061146082516041146101b96112b0565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114d9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061155457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610828917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212202f12d811beded35de96f999fcb6d7c4a3af3b99e67081604d258a694a96de6fe64736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1B2E CODESIZE SUB DUP1 PUSH3 0x1B2E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD SWAP4 DUP3 ADD MLOAD DUP4 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 DUP4 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP2 DUP5 ADD MSTORE DUP8 MLOAD SWAP4 SWAP6 POP SWAP1 SWAP4 POP DUP7 SWAP3 DUP7 SWAP3 PUSH1 0x8 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1E5 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x41C JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1FB SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x41C JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x24E DUP2 PUSH3 0x326 JUMP JUMPDEST POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP PUSH1 0x0 PUSH3 0x2F4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0xA SWAP1 PUSH1 0xFF AND PUSH3 0x33C PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xBF0 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0xA EXP PUSH2 0x100 DUP2 SWAP1 MSTORE SWAP1 POP PUSH3 0x317 DUP3 DUP3 PUSH3 0x357 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xC09 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x7 SSTORE POP PUSH3 0x4B8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH3 0x350 DUP5 DUP3 LT ISZERO DUP4 PUSH3 0x391 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH3 0x37F DUP5 ISZERO DUP1 PUSH3 0x377 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH3 0x374 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH3 0x391 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH3 0x3A2 JUMPI PUSH3 0x3A2 DUP2 PUSH3 0x3A6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x3B8 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x3BB JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x45F JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x48F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x48F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x48F JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x472 JUMP JUMPDEST POP PUSH3 0x49D SWAP3 SWAP2 POP PUSH3 0x4A1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x49D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x4A2 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x1629 PUSH3 0x505 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB84 MSTORE POP DUP1 PUSH2 0x861 MSTORE DUP1 PUSH2 0x9C1 MSTORE DUP1 PUSH2 0xB57 MSTORE POP DUP1 PUSH2 0x11E9 MSTORE POP DUP1 PUSH2 0x122B MSTORE POP DUP1 PUSH2 0x120A MSTORE POP PUSH2 0x1629 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB006A75 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xDB068E0E EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x67C JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5A9 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x51A JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x473 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4B5DA1ED GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4B5DA1ED EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x5FC0B727 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x63FAC3C7 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x3D6 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x37F JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x303 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x288 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x200 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x22D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x738 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x74E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x754 JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7CD JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x810 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x81E JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x82B JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x848 JUMP JUMPDEST PUSH2 0x3DE PUSH2 0x85F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x883 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AB JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8EB JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x999 JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA4F JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB7E JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xBAE JUMP JUMPDEST PUSH2 0x290 PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x72E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x703 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x711 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x745 CALLER DUP5 DUP5 PUSH2 0xC41 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x761 DUP5 DUP5 DUP5 PUSH2 0xCB0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7AB SWAP2 DUP7 SWAP2 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xDD9 JUMP JUMPDEST PUSH2 0xC41 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 PUSH2 0xBE6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x745 SWAP2 DUP6 SWAP1 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x81A DUP3 DUP3 PUSH2 0xDEF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x828 CALLER DUP3 PUSH2 0xEA8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 PUSH1 0x7 SLOAD DUP4 PUSH2 0xF98 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 PUSH1 0x7 SLOAD DUP4 PUSH2 0xFE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C5 DUP3 PUSH2 0x1A1 PUSH2 0x8BE DUP7 CALLER PUSH2 0xBAE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDD9 JUMP JUMPDEST SWAP1 POP PUSH2 0x8D2 DUP4 CALLER DUP4 PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x8DC DUP4 DUP4 PUSH2 0xEA8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x81A DUP3 DUP3 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x72E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x703 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9A5 DUP4 PUSH2 0x82B JUMP JUMPDEST SWAP1 POP PUSH2 0x9E9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x9F3 CALLER DUP3 PUSH2 0xDEF JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x745 SWAP2 DUP6 SWAP1 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x745 CALLER DUP5 DUP5 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA7E DUP13 PUSH2 0x8F2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xB0F DUP9 DUP3 PUSH2 0xB06 DUP8 DUP8 DUP8 PUSH2 0x10B5 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xB1A DUP9 DUP9 DUP9 PUSH2 0xC41 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB30 CALLER DUP4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3B DUP4 PUSH2 0x848 JUMP JUMPDEST SWAP1 POP PUSH2 0x9F3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER DUP4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0xBA8 DUP2 PUSH32 0x0 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x7 SSTORE POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC02 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x12B0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xC2D DUP5 ISZERO DUP1 PUSH2 0xC26 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xC23 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x12B0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCD4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xCF8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xD03 DUP4 DUP4 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD36 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xDD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD72 SWAP1 DUP3 PUSH2 0xBF0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x12B0 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xDFB PUSH1 0x0 DUP4 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH2 0xE15 PUSH2 0xE10 DUP3 PUSH2 0xE0A PUSH2 0x74E JUMP JUMPDEST SWAP1 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x12BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE45 SWAP1 DUP3 PUSH2 0xBF0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xECC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xED8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF0B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xDD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xF46 PUSH2 0xE10 DUP3 PUSH2 0xF40 PUSH2 0x74E JUMP JUMPDEST SWAP1 PUSH2 0x12C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA7 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x12B0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xFD9 DUP5 ISZERO DUP1 PUSH2 0xFD2 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xFCF JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x12B0 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xFFC DUP5 ISZERO DUP1 PUSH2 0xC26 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xC23 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 DUP4 SUB DIV ADD DUP2 ISZERO ISZERO MUL SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x10AF SWAP1 DUP6 SWAP1 PUSH2 0x12D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10FF DUP6 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 PUSH2 0x110F DUP8 DUP4 DUP8 PUSH2 0x144E JUMP JUMPDEST DUP4 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x1124 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x12B0 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x8DC SWAP1 DUP5 SWAP1 PUSH2 0x12D1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1252 PUSH2 0x1560 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x81A JUMPI PUSH2 0x81A DUP2 PUSH2 0x1564 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC02 DUP4 DUP4 PUSH1 0x1 PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x133A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x139C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x13A1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x13B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x10AF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13DF JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F1 PUSH2 0x11E5 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1460 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1554 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x828 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F SLT 0xD8 GT 0xBE 0xDE 0xD3 0x5D 0xE9 PUSH16 0x999FCB6D7C4A3AF3B99E67081604D258 0xA6 SWAP5 0xA9 PUSH14 0xE6FE64736F6C6343000701003300 ","sourceMap":"1018:2834:114:-:0;;;1257:551;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1257:551:114;;;;;;;;;;-1:-1:-1;1257:551:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1257:551:114;;;;;;;;;;-1:-1:-1;1257:551:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1257:551:114;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1257:551:114;;-1:-1:-1;1257:551:114;;-1:-1:-1;1406:4:114;;1412:6;;1420:1;;1406:4;;;;1257:551;1406:4;;1412:6;;2118:13:71;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;1481:15:114::1;-1:-1:-1::0;;;;;1467:29:114::1;;;-1:-1:-1::0;;;;;1467:29:114::1;;;;;::::0;::::1;1574:19;1601:50;1623:15;-1:-1:-1::0;;;;;1617:31:114::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1617:33:114;1609:2:::1;::::0;1601:50:::1;;:15;1617:33;1601:15:::0;;::::1;;;:50:::0;::::1;:::i;:::-;1596:2;:56;1662:26;::::0;;;1596:56;-1:-1:-1;1768:33:114::1;:12:::0;1596:56;1768:20:::1;;::::0;;::::1;;;:33:::0;::::1;:::i;:::-;1752:13;:49:::0;-1:-1:-1;1018:2834:114;;-1:-1:-1;;;;1018:2834:114;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;1343:239:66:-;1401:7;1505:5;;;1520:37;1529:6;;;;1401:7;1520:8;:37::i;:::-;1574:1;1343:239;-1:-1:-1;;;1343:239:66:o;1833:209::-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:13;;;;-1:-1:-1;;;1833:209:66:o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:12;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1018:2834:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1018:2834:114;;;-1:-1:-1;1018:2834:114;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":4618}],"7648":[{"length":32,"start":4651}],"7650":[{"length":32,"start":4585}],"18408":[{"length":32,"start":2145},{"length":32,"start":2497},{"length":32,"start":2903}],"18410":[{"length":32,"start":2948}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a457c2d711610097578063db006a7511610071578063db006a7514610607578063db068e0e14610624578063dd62ed3e14610641578063ed24911d1461067c576101b9565b8063a457c2d714610537578063a9059cbb14610570578063d505accf146105a9576101b9565b80637ecebe00116100d35780637ecebe00146104ac57806390193b7c146104df57806395d89b4114610512578063a0712d681461051a576101b9565b806370a082311461040757806379cc67901461043a5780637c602bc214610473576101b9565b806339509351116101665780634b5da1ed116101405780634b5da1ed146103445780635fc0b7271461039c57806363fac3c7146103b95780636f307dc3146103d6576101b9565b8063395093511461030b57806340c10f191461034457806342966c681461037f576101b9565b806323b872dd1161019757806323b872dd146102a2578063313ce567146102e55780633644e51514610303576101b9565b806306fdde03146101be578063095ea7b31461023b57806318160ddd14610288575b600080fd5b6101c6610684565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102005781810151838201526020016101e8565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102746004803603604081101561025157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610738565b604080519115158252519081900360200190f35b61029061074e565b60408051918252519081900360200190f35b610274600480360360608110156102b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610754565b6102ed6107b5565b6040805160ff9092168252519081900360200190f35b6102906107be565b6102746004803603604081101561032157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cd565b61037d6004803603604081101561035a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610810565b005b61037d6004803603602081101561039557600080fd5b503561081e565b610290600480360360208110156103b257600080fd5b503561082b565b610290600480360360208110156103cf57600080fd5b5035610848565b6103de61085f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102906004803603602081101561041d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610883565b61037d6004803603604081101561045057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ab565b61037d6004803603604081101561048957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e1565b610290600480360360208110156104c257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108eb565b610290600480360360208110156104f557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108f2565b6101c661091a565b6102906004803603602081101561053057600080fd5b5035610999565b6102746004803603604081101561054d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109fc565b6102746004803603604081101561058657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a42565b61037d600480360360e08110156105bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a4f565b6102906004803603602081101561061d57600080fd5b5035610b24565b61037d6004803603602081101561063a57600080fd5b5035610b7e565b6102906004803603604081101561065757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610bae565b610290610be6565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561072e5780601f106107035761010080835404028352916020019161072e565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b5050505050905090565b6000610745338484610c41565b50600192915050565b60025490565b6000610761848484610cb0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107ab9186916107a6908661019e610dd9565b610c41565b5060019392505050565b60055460ff1690565b60006107c8610be6565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107459185906107a69086610bf0565b61081a8282610def565b5050565b6108283382610ea8565b50565b600061084260075483610f9890919063ffffffff16565b92915050565b600061084260075483610fe290919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006108c5826101a16108be8633610bae565b9190610dd9565b90506108d2833383610c41565b6108dc8383610ea8565b505050565b61081a8282610ea8565b6000610842825b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561072e5780601f106107035761010080835404028352916020019161072e565b6000806109a58361082b565b90506109e973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633308661101a565b6109f33382610def565b50600092915050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107459185906107a6908661019f610dd9565b6000610745338484610cb0565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a7e8c6108f2565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610b0f8882610b068787876110b5565b886101f86110f4565b610b1a888888610c41565b5050505050505050565b6000610b303383610ea8565b6000610b3b83610848565b90506109f373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383611158565b610ba8817f0000000000000000000000000000000000000000000000000000000000000000610c09565b60075550565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107c86111e5565b6000828201610c0284821015836112b0565b9392505050565b6000828202610c2d841580610c26575083858381610c2357fe5b04145b60036112b0565b670de0b6b3a7640000815b04949350505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610cd473ffffffffffffffffffffffffffffffffffffffff841615156101986112b0565b610cf873ffffffffffffffffffffffffffffffffffffffff831615156101996112b0565b610d038383836108dc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610d3690826101a0610dd9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610d729082610bf0565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610de884841115836112b0565b5050900390565b610dfb600083836108dc565b610e15610e1082610e0a61074e565b90610bf0565b6112be565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e459082610bf0565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610ecc73ffffffffffffffffffffffffffffffffffffffff8316151561019b6112b0565b610ed8826000836108dc565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f0b90826101b2610dd9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610f46610e1082610f4061074e565b906112c3565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610fa782151560046112b0565b670de0b6b3a76400008302610fd9841580610fd25750670de0b6b3a7640000858381610fcf57fe5b04145b60056112b0565b828181610c3857fe5b6000828202610ffc841580610c26575083858381610c2357fe5b6001670de0b6b3a76400006001830304018115150291505092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526110af9085906112d1565b50505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006110ff856113e7565b905061111561110f87838761144e565b836112b0565b611124428410156101b86112b0565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526108dc9084906112d1565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611252611560565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161081a5761081a81611564565b600255565b6000610c0283836001610dd9565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061133a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b509150915060008214156113b9573d6000803e3d6000fd5b6110af8151600014806113df57508180602001905160208110156113dc57600080fd5b50515b6101a26112b0565b60006113f16111e5565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061146082516041146101b96112b0565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114d9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061155457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610828917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212202f12d811beded35de96f999fcb6d7c4a3af3b99e67081604d258a694a96de6fe64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDB006A75 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xDB068E0E EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x67C JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5A9 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x51A JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x407 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x473 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x4B5DA1ED GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x4B5DA1ED EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x5FC0B727 EQ PUSH2 0x39C JUMPI DUP1 PUSH4 0x63FAC3C7 EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x3D6 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x37F JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2E5 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x303 JUMPI PUSH2 0x1B9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x288 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C6 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x200 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x22D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x738 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x74E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x754 JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7CD JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x810 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x81E JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x82B JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x848 JUMP JUMPDEST PUSH2 0x3DE PUSH2 0x85F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x41D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x883 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AB JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8EB JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x999 JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA4F JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x37D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB7E JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xBAE JUMP JUMPDEST PUSH2 0x290 PUSH2 0xBE6 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x72E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x703 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x711 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x745 CALLER DUP5 DUP5 PUSH2 0xC41 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x761 DUP5 DUP5 DUP5 PUSH2 0xCB0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7AB SWAP2 DUP7 SWAP2 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xDD9 JUMP JUMPDEST PUSH2 0xC41 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 PUSH2 0xBE6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x745 SWAP2 DUP6 SWAP1 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x81A DUP3 DUP3 PUSH2 0xDEF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x828 CALLER DUP3 PUSH2 0xEA8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 PUSH1 0x7 SLOAD DUP4 PUSH2 0xF98 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 PUSH1 0x7 SLOAD DUP4 PUSH2 0xFE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C5 DUP3 PUSH2 0x1A1 PUSH2 0x8BE DUP7 CALLER PUSH2 0xBAE JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xDD9 JUMP JUMPDEST SWAP1 POP PUSH2 0x8D2 DUP4 CALLER DUP4 PUSH2 0xC41 JUMP JUMPDEST PUSH2 0x8DC DUP4 DUP4 PUSH2 0xEA8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x81A DUP3 DUP3 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x72E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x703 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9A5 DUP4 PUSH2 0x82B JUMP JUMPDEST SWAP1 POP PUSH2 0x9E9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x9F3 CALLER DUP3 PUSH2 0xDEF JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x745 SWAP2 DUP6 SWAP1 PUSH2 0x7A6 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x745 CALLER DUP5 DUP5 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA7E DUP13 PUSH2 0x8F2 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xB0F DUP9 DUP3 PUSH2 0xB06 DUP8 DUP8 DUP8 PUSH2 0x10B5 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xB1A DUP9 DUP9 DUP9 PUSH2 0xC41 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB30 CALLER DUP4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3B DUP4 PUSH2 0x848 JUMP JUMPDEST SWAP1 POP PUSH2 0x9F3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER DUP4 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0xBA8 DUP2 PUSH32 0x0 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x7 SSTORE POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC02 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x12B0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xC2D DUP5 ISZERO DUP1 PUSH2 0xC26 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xC23 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x12B0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCD4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xCF8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xD03 DUP4 DUP4 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD36 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xDD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD72 SWAP1 DUP3 PUSH2 0xBF0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDE8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x12B0 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xDFB PUSH1 0x0 DUP4 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH2 0xE15 PUSH2 0xE10 DUP3 PUSH2 0xE0A PUSH2 0x74E JUMP JUMPDEST SWAP1 PUSH2 0xBF0 JUMP JUMPDEST PUSH2 0x12BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE45 SWAP1 DUP3 PUSH2 0xBF0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xECC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0xED8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF0B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xDD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xF46 PUSH2 0xE10 DUP3 PUSH2 0xF40 PUSH2 0x74E JUMP JUMPDEST SWAP1 PUSH2 0x12C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA7 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x12B0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xFD9 DUP5 ISZERO DUP1 PUSH2 0xFD2 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xFCF JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x12B0 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xFFC DUP5 ISZERO DUP1 PUSH2 0xC26 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xC23 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 DUP4 SUB DIV ADD DUP2 ISZERO ISZERO MUL SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x10AF SWAP1 DUP6 SWAP1 PUSH2 0x12D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10FF DUP6 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 PUSH2 0x110F DUP8 DUP4 DUP8 PUSH2 0x144E JUMP JUMPDEST DUP4 PUSH2 0x12B0 JUMP JUMPDEST PUSH2 0x1124 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x12B0 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x8DC SWAP1 DUP5 SWAP1 PUSH2 0x12D1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1252 PUSH2 0x1560 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x81A JUMPI PUSH2 0x81A DUP2 PUSH2 0x1564 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC02 DUP4 DUP4 PUSH1 0x1 PUSH2 0xDD9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x133A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12FD JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x139C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x13A1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x13B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x10AF DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13DF JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F1 PUSH2 0x11E5 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1460 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1554 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x828 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F SLT 0xD8 GT 0xBE 0xDE 0xD3 0x5D 0xE9 PUSH16 0x999FCB6D7C4A3AF3B99E67081604D258 0xA6 SWAP5 0xA9 PUSH14 0xE6FE64736F6C6343000701003300 ","sourceMap":"1018:2834:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;:::-;;473:87:72;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;3427:123:114:-;;;;;;;;;;;;;;;;-1:-1:-1;3427:123:114;;:::i;3097:::-;;;;;;;;;;;;;;;;-1:-1:-1;3097:123:114;;:::i;1842:98::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4022:117:71;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;1974:283:114:-;;;;;;;;;;;;;;;;-1:-1:-1;1974:283:114;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2291:278:114:-;;;;;;;;;;;;;;;;-1:-1:-1;2291:278:114;;:::i;3721:129::-;;;;;;;;;;;;;;;;-1:-1:-1;3721:129:114;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;3427:123:114:-;3488:7;3514:29;3529:13;;3514:6;:14;;:29;;;;:::i;:::-;3507:36;3427:123;-1:-1:-1;;3427:123:114:o;3097:::-;3160:7;3186:27;3199:13;;3186:6;:12;;:27;;;;:::i;1842:98::-;1922:11;1842:98;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;1303:121:59;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1974:283:114;2035:7;2054:20;2077:26;2092:10;2077:14;:26::i;:::-;2054:49;-1:-1:-1;2114:75:114;:36;2121:11;2114:36;2151:10;2171:4;2178:10;2114:36;:75::i;:::-;2200:31;2206:10;2218:12;2200:5;:31::i;:::-;-1:-1:-1;2249:1:114;;1974:283;-1:-1:-1;;1974:283:114:o;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;2291:278:114:-;2356:7;2375:31;2381:10;2393:12;2375:5;:31::i;:::-;2417:22;2442:30;2459:12;2442:16;:30::i;:::-;2417:55;-1:-1:-1;2483:60:114;:32;2490:11;2483:32;2516:10;2417:55;2483:32;:60::i;3721:129::-;3806:37;:15;3830:12;3806:23;:37::i;:::-;3790:13;:53;-1:-1:-1;3721:129:114:o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;1343:239:66:-;1401:7;1505:5;;;1520:37;1529:6;;;;1401:7;1520:8;:37::i;:::-;1574:1;1343:239;-1:-1:-1;;;1343:239:66:o;1833:209::-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;;1833:209;-1:-1:-1;;;;1833:209:66:o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;2048:714;2108:14;2152:5;;;2167:57;2176:6;;;:26;;;2201:1;2196;2186:7;:11;;;;2167:57;2743:1;2737:3;2733:1;2724:7;2720:15;2716:25;2712:33;2701:7;2694:15;2687:23;2683:63;2673:73;;2659:97;;;;;:::o;1734:250:77:-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","fromCTokenAmount(uint256)":"63fac3c7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","mint(uint256)":"a0712d68","mintTestTokens(address,uint256)":"4b5da1ed","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","redeem(uint256)":"db006a75","setExchangeRate(uint256)":"db068e0e","symbol()":"95d89b41","toCTokenAmount(uint256)":"5fc0b727","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fromCTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintTestTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExchangeRate\",\"type\":\"uint256\"}],\"name\":\"setExchangeRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"toCTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"fromCTokenAmount(uint256)\":{\"params\":{\"amount\":\"The number of cTokens to be redeemed.\"},\"returns\":{\"_0\":\"The number of underlying tokens returned.\"}},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"mint(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"mintAmount\":\"The amount of the underlying asset to supply\"},\"returns\":{\"_0\":\"uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\"}},\"mintTestTokens(address,uint256)\":{\"details\":\"This is required for testing because Compound's `mint` function overrides `TestToken.mint`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"redeem(uint256)\":{\"details\":\"Accrues interest whether or not the operation succeeds, unless reverted\",\"params\":{\"redeemTokens\":\"The number of cTokens to redeem into underlying\"},\"returns\":{\"_0\":\"uint 0=success, otherwise an error code (see ErrorReporter.sol link above for details)\"}},\"setExchangeRate(uint256)\":{\"params\":{\"newExchangeRate\":\"The number of underlying tokens per cToken, scaled to 1e18.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"toCTokenAmount(uint256)\":{\"params\":{\"amount\":\"The number of underlying tokens to be deposited.\"},\"returns\":{\"_0\":\"The number of cTokens returned.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"underlying()\":{\"details\":\"Underlying asset for this CToken\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"fromCTokenAmount(uint256)\":{\"notice\":\"Preview the amount of underlying returned by a withdrawal.\"},\"mint(uint256)\":{\"notice\":\"Sender supplies assets into the market and receives cTokens in exchange\"},\"mintTestTokens(address,uint256)\":{\"notice\":\"Mint cTokens directly without depositing underlying assets.\"},\"redeem(uint256)\":{\"notice\":\"Sender redeems cTokens in exchange for the underlying asset\"},\"setExchangeRate(uint256)\":{\"notice\":\"Set the exchange rate for testing purposes.\"},\"toCTokenAmount(uint256)\":{\"notice\":\"Preview the amount of cTokens returned by a deposit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockCToken.sol\":\"MockCToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ICToken.sol\":{\"keccak256\":\"0x0a32eeae183b04333cee772022b0c084e6a0f676842731055dd63daddf6aa387\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3786f317c3dcbff798b2b461be6743a7c209da4cd88a2bea737daceba6ad5f41\",\"dweb:/ipfs/QmcbHLg2PZWWyqtGzM6CQCvhEA7fQ1r3WNh3A3GDxqDii3\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockCToken.sol\":{\"keccak256\":\"0x3445395f918f426ab162886d8a78bed5c9b5db2a5a3a54472db8e6d2fd57e194\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e42b1b12dbac60cdfb95051efef24710b127f934d4fd39a07118bacafb687beb\",\"dweb:/ipfs/Qmcs6RQ96QXNRB92WZe8kjhgKbwv5vxa4roaopJ3iB82U2\"]}},\"version\":1}"}},"contracts/test/MockEulerProtocol.sol":{"MockEulerProtocol":{"abi":[{"inputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"relayer","type":"address"}],"name":"requestUnderlyingFromRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"relayer","type":"address"}],"name":"sendUnderlyingToRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50610430806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633d4216d91461003b578063d218fe8814610080575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604090910135166100c3565b005b61007e6004803603606081101561009657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604090910135166100ea565b6100e573ffffffffffffffffffffffffffffffffffffffff841682308561010b565b505050565b6100e573ffffffffffffffffffffffffffffffffffffffff841682846101a6565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526101a090859061022f565b50505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526100e59084905b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061029857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161025b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146102fa576040519150601f19603f3d011682016040523d82523d6000602084013e6102ff565b606091505b50915091506000821415610317573d6000803e3d6000fd5b6101a081516000148061033d575081806020019051602081101561033a57600080fd5b50515b6101a28161034e5761034e81610352565b5050565b61037c817f42414c000000000000000000000000000000000000000000000000000000000061037f565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212209064d0129d3712bae88c721691d56d00a74e00d9f8d7b4e5077b192982dbe04c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x430 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D4216D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD218FE88 EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xEA JUMP JUMPDEST PUSH2 0xE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 ADDRESS DUP6 PUSH2 0x10B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 DUP5 PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1A0 SWAP1 DUP6 SWAP1 PUSH2 0x22F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xE5 SWAP1 DUP5 SWAP1 JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x298 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x25B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1A0 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x33D JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x34E JUMPI PUSH2 0x34E DUP2 PUSH2 0x352 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x37F JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 PUSH5 0xD0129D3712 0xBA 0xE8 DUP13 PUSH19 0x1691D56D00A74E00D9F8D7B4E5077B192982DB 0xE0 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"883:476:115:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80633d4216d91461003b578063d218fe8814610080575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604090910135166100c3565b005b61007e6004803603606081101561009657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013591604090910135166100ea565b6100e573ffffffffffffffffffffffffffffffffffffffff841682308561010b565b505050565b6100e573ffffffffffffffffffffffffffffffffffffffff841682846101a6565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526101a090859061022f565b50505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526100e59084905b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061029857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161025b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146102fa576040519150601f19603f3d011682016040523d82523d6000602084013e6102ff565b606091505b50915091506000821415610317573d6000803e3d6000fd5b6101a081516000148061033d575081806020019051602081101561033a57600080fd5b50515b6101a28161034e5761034e81610352565b5050565b61037c817f42414c000000000000000000000000000000000000000000000000000000000061037f565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea26469706673582212209064d0129d3712bae88c721691d56d00a74e00d9f8d7b4e5077b192982dbe04c64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D4216D9 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD218FE88 EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xEA JUMP JUMPDEST PUSH2 0xE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 ADDRESS DUP6 PUSH2 0x10B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP3 DUP5 PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1A0 SWAP1 DUP6 SWAP1 PUSH2 0x22F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xE5 SWAP1 DUP5 SWAP1 JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x298 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x25B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1A0 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x33D JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 DUP2 PUSH2 0x34E JUMPI PUSH2 0x34E DUP2 PUSH2 0x352 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x37C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x37F JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 PUSH5 0xD0129D3712 0xBA 0xE8 DUP13 PUSH19 0x1691D56D00A74E00D9F8D7B4E5077B192982DB 0xE0 0x4C PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"883:476:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;949:214;;;;;;;;;;;;;;;;-1:-1:-1;949:214:115;;;;;;;;;;;;;;;;;;:::i;:::-;;1169:188;;;;;;;;;;;;;;;;-1:-1:-1;1169:188:115;;;;;;;;;;;;;;;;;;:::i;949:214::-;1087:69;:35;;;1123:7;1141:4;1149:6;1087:35;:69::i;:::-;949:214;;;:::o;1169:188::-;1302:48;:31;;;1334:7;1343:6;1302:31;:48::i;1734:250:77:-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;1514:214::-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;2324:914;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"requestUnderlyingFromRelayer(address,uint256,address)":"3d4216d9","sendUnderlyingToRelayer(address,uint256,address)":"d218fe88"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"requestUnderlyingFromRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"sendUnderlyingToRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockEulerProtocol.sol\":\"MockEulerProtocol\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/test/MockEulerProtocol.sol\":{\"keccak256\":\"0xd455eb94f18f59a317aa1d39876988e32a49801aecef1305f8f66ff050e4adaa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a07d7210bc89bc7bf2dd2994adb566c78122d5181ba87f13924c5a2b6591086\",\"dweb:/ipfs/QmbMs6gink35c4wwnVSGdwVsAUEpwYGDKBdjcAzw6XN8bP\"]}},\"version\":1}"}},"contracts/test/MockEulerToken.sol":{"MockEulerToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"underlying","type":"address"},{"internalType":"contract IMockEulerProtocol","name":"eulerProtocol","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EULER_PROTOCOL","outputs":[{"internalType":"contract IMockEulerProtocol","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"convertBalanceToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"convertUnderlyingToBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangeRateMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exchangeRateMultiplier","type":"uint256"}],"name":"setExchangeRateMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlyingAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b506040516200190038038062001900833981810160405260a08110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060408181526020838101518483015160609095015184840190935260018452603160f81b828501528851909650939450909287928792879285928392909183918791620001ee9160039190850190620002a0565b50805162000204906004906020840190620002a0565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c05262000257816200028a565b5050670de0b6b3a7640000600755506001600160601b0319606092831b811661010052911b1660e052506200033c915050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e357805160ff191683800117855562000313565b8280016001018555821562000313579182015b8281111562000313578251825591602001919060010190620002f6565b506200032192915062000325565b5090565b5b8082111562000321576000815560010162000326565b60805160a05160c05160e05160601c6101005160601c61156a62000396600039806109275280610a205280610ccf52508061087652806108eb5280610c93525080611240525080611282525080611261525061156a6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d505accf11610071578063d505accf146105e7578063dd62ed3e14610645578063e2bbb15814610680578063ed24911d146106a3576101c4565b8063a457c2d71461056d578063a9059cbb146105a6578063b176bd9e146105df576101c4565b80637c602bc2116100d35780637c602bc2146104c65780637ecebe00146104ff57806390193b7c1461053257806395d89b4114610565576101c4565b806370a08231146104525780637158da7c1461048557806379cc67901461048d576101c4565b80633644e5151161016657806342966c681161014057806342966c68146103c457806342cfe0ac146103e1578063441a3e701461041257806352eac8af14610435576101c4565b80633644e5151461034a578063395093511461035257806340c10f191461038b576101c4565b806318160ddd116101a257806318160ddd146102c257806323b872dd146102ca57806328c082851461030d578063313ce5671461032c576101c4565b8063010ad6d1146101c957806306fdde03146101f8578063095ea7b314610275575b600080fd5b6101e6600480360360208110156101df57600080fd5b50356106ab565b60408051918252519081900360200190f35b6102006106c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023a578181015183820152602001610222565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561028b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561077c565b604080519115158252519081900360200190f35b6101e6610792565b6102ae600480360360608110156102e057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610798565b61032a6004803603602081101561032357600080fd5b50356107f9565b005b6103346107fe565b6040805160ff9092168252519081900360200190f35b6101e6610807565b6102ae6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610816565b61032a600480360360408110156103a157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610859565b61032a600480360360208110156103da57600080fd5b5035610867565b6103e9610874565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61032a6004803603604081101561042857600080fd5b5080359060200135610898565b6101e66004803603602081101561044b57600080fd5b50356109df565b6101e66004803603602081101561046857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109f6565b6103e9610a1e565b61032a600480360360408110156104a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a42565b61032a600480360360408110156104dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a73565b6101e66004803603602081101561051557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a7d565b6101e66004803603602081101561054857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a84565b610200610aac565b6102ae6004803603604081101561058357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b2b565b6102ae600480360360408110156105bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b71565b6101e6610b7e565b61032a600480360360e08110156105fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610b84565b6101e66004803603604081101561065b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610c59565b61032a6004803603604081101561069657600080fd5b5080359060200135610c91565b6101e6610d8a565b60006106c260075483610d9490919063ffffffff16565b92915050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b5050505050905090565b6000610789338484610dd6565b50600192915050565b60025490565b60006107a5848484610e45565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107ef9186916107ea908661019e610f6e565b610dd6565b5060019392505050565b600755565b60055460ff1690565b6000610811610d8a565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107899185906107ea9086610f84565b6108638282610f9d565b5050565b6108713382611056565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156108dd576108cb336109f6565b90506108d6816106ab565b91506108e9565b6108e6826109df565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d218fe887f000000000000000000000000000000000000000000000000000000000000000084336040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050506109da3382611056565b505050565b60006106c26007548361114690919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610a5c826101a1610a558633610c59565b9190610f6e565b9050610a69833383610dd6565b6109da8383611056565b6108638282611056565b60006106c2825b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107725780601f1061074757610100808354040283529160200191610772565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107899185906107ea908661019f610f6e565b6000610789338484610e45565b60075481565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610bb38c610a84565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c448882610c3b878787611199565b886101f86111d8565b610c4f888888610dd6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d4216d97f000000000000000000000000000000000000000000000000000000000000000083336040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b5050505061086333610d85836109df565b610f9d565b600061081161123c565b6000828202610db8841580610db1575083858381610dae57fe5b04145b6003611307565b6001670de0b6b3a76400006001830304018115150291505092915050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6973ffffffffffffffffffffffffffffffffffffffff84161515610198611307565b610e8d73ffffffffffffffffffffffffffffffffffffffff83161515610199611307565b610e988383836109da565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610ecb90826101a0610f6e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610f079082610f84565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f7d8484111583611307565b5050900390565b6000828201610f968482101583611307565b9392505050565b610fa9600083836109da565b610fc3610fbe82610fb8610792565b90610f84565b611315565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ff39082610f84565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61107a73ffffffffffffffffffffffffffffffffffffffff8316151561019b611307565b611086826000836109da565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110b990826101b2610f6e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556110f4610fbe826110ee610792565b9061131a565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006111558215156004611307565b670de0b6b3a764000083026111878415806111805750670de0b6b3a764000085838161117d57fe5b04145b6005611307565b82818161119057fe5b04949350505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006111e385611328565b90506111f96111f387838761138f565b83611307565b611208428410156101b8611307565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112a96114a1565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161086357610863816114a5565b600255565b6000610f9683836001610f6e565b600061133261123c565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60006113a182516041146101b9611307565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561141a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061149557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610871917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212203568228a15c8ad7cf4c84a15c97c2f64139784c7652fa1ca028053df3592441264736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1900 CODESIZE SUB DUP1 PUSH3 0x1900 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD DUP5 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD DUP5 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP3 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 SWAP7 POP SWAP4 SWAP5 POP SWAP1 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1EE SWAP2 PUSH1 0x3 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x2A0 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x204 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2A0 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x257 DUP2 PUSH3 0x28A JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 PUSH1 0x7 SSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP2 SHL AND PUSH1 0xE0 MSTORE POP PUSH3 0x33C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2E3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x313 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x313 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x313 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2F6 JUMP JUMPDEST POP PUSH3 0x321 SWAP3 SWAP2 POP PUSH3 0x325 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x321 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x326 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x156A PUSH3 0x396 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x927 MSTORE DUP1 PUSH2 0xA20 MSTORE DUP1 PUSH2 0xCCF MSTORE POP DUP1 PUSH2 0x876 MSTORE DUP1 PUSH2 0x8EB MSTORE DUP1 PUSH2 0xC93 MSTORE POP DUP1 PUSH2 0x1240 MSTORE POP DUP1 PUSH2 0x1282 MSTORE POP DUP1 PUSH2 0x1261 MSTORE POP PUSH2 0x156A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0xE2BBB158 EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x6A3 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0xB176BD9E EQ PUSH2 0x5DF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7C602BC2 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x565 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x7158DA7C EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x48D JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x42CFE0AC EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x441A3E70 EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x52EAC8AF EQ PUSH2 0x435 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x38B JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0x28C08285 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x32C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x10AD6D1 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x222 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x267 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x798 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x334 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x816 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x859 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x867 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x874 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x898 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x468 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH2 0x200 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB2B JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0xB7E JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x696 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0xD8A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 PUSH1 0x7 SLOAD DUP4 PUSH2 0xD94 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x772 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x747 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x772 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x755 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 CALLER DUP5 DUP5 PUSH2 0xDD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A5 DUP5 DUP5 DUP5 PUSH2 0xE45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7EF SWAP2 DUP7 SWAP2 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF6E JUMP JUMPDEST PUSH2 0xDD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x811 PUSH2 0xD8A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x789 SWAP2 DUP6 SWAP1 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x863 DUP3 DUP3 PUSH2 0xF9D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x871 CALLER DUP3 PUSH2 0x1056 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x8DD JUMPI PUSH2 0x8CB CALLER PUSH2 0x9F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x8D6 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 POP PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x8E6 DUP3 PUSH2 0x9DF JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD218FE88 PUSH32 0x0 DUP5 CALLER PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x9DA CALLER DUP3 PUSH2 0x1056 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 PUSH1 0x7 SLOAD DUP4 PUSH2 0x1146 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA5C DUP3 PUSH2 0x1A1 PUSH2 0xA55 DUP7 CALLER PUSH2 0xC59 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST SWAP1 POP PUSH2 0xA69 DUP4 CALLER DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x9DA DUP4 DUP4 PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x863 DUP3 DUP3 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 DUP3 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x772 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x747 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x772 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x789 SWAP2 DUP6 SWAP1 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 CALLER DUP5 DUP5 PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xBB3 DUP13 PUSH2 0xA84 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC44 DUP9 DUP3 PUSH2 0xC3B DUP8 DUP8 DUP8 PUSH2 0x1199 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11D8 JUMP JUMPDEST PUSH2 0xC4F DUP9 DUP9 DUP9 PUSH2 0xDD6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3D4216D9 PUSH32 0x0 DUP4 CALLER PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x863 CALLER PUSH2 0xD85 DUP4 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x811 PUSH2 0x123C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xDB8 DUP5 ISZERO DUP1 PUSH2 0xDB1 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xDAE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 DUP4 SUB DIV ADD DUP2 ISZERO ISZERO MUL SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE69 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0xE8D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xECB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xF07 SWAP1 DUP3 PUSH2 0xF84 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1307 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xF96 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1307 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFA9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0xFC3 PUSH2 0xFBE DUP3 PUSH2 0xFB8 PUSH2 0x792 JUMP JUMPDEST SWAP1 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x1315 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFF3 SWAP1 DUP3 PUSH2 0xF84 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x107A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1307 JUMP JUMPDEST PUSH2 0x1086 DUP3 PUSH1 0x0 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10B9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x10F4 PUSH2 0xFBE DUP3 PUSH2 0x10EE PUSH2 0x792 JUMP JUMPDEST SWAP1 PUSH2 0x131A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1155 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1307 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1187 DUP5 ISZERO DUP1 PUSH2 0x1180 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x117D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x1307 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x1190 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E3 DUP6 PUSH2 0x1328 JUMP JUMPDEST SWAP1 POP PUSH2 0x11F9 PUSH2 0x11F3 DUP8 DUP4 DUP8 PUSH2 0x138F JUMP JUMPDEST DUP4 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0x1208 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1307 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12A9 PUSH2 0x14A1 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x863 JUMPI PUSH2 0x863 DUP2 PUSH2 0x14A5 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF96 DUP4 DUP4 PUSH1 0x1 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1332 PUSH2 0x123C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13A1 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x141A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1495 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x871 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD PUSH9 0x228A15C8AD7CF4C84A ISZERO 0xC9 PUSH29 0x2F64139784C7652FA1CA028053DF3592441264736F6C63430007010033 ","sourceMap":"1458:2802:116:-:0;;;1871:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1871:334:116;;;;;;;;;;-1:-1:-1;1871:334:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1871:334:116;;;;;;;;;;-1:-1:-1;1871:334:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1871:334:116;;;;;;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1871:334:116;;-1:-1:-1;1871:334:116;;-1:-1:-1;1871:334:116;;2051:4;;2057:6;;1871:334;;2051:4;;;;1871:334;;2051:4;;2057:6;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;988:4:66::1;2085:22:116;:39:::0;-1:-1:-1;;;;;;;2134:24:116::1;::::0;;;;;::::1;::::0;2168:30;;;::::1;::::0;-1:-1:-1;1458:2802:116;;-1:-1:-1;;1458:2802:116;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;1458:2802:116:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1458:2802:116;;;-1:-1:-1;1458:2802:116;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":4705}],"7648":[{"length":32,"start":4738}],"7650":[{"length":32,"start":4672}],"18673":[{"length":32,"start":2166},{"length":32,"start":2283},{"length":32,"start":3219}],"18675":[{"length":32,"start":2343},{"length":32,"start":2592},{"length":32,"start":3279}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d505accf11610071578063d505accf146105e7578063dd62ed3e14610645578063e2bbb15814610680578063ed24911d146106a3576101c4565b8063a457c2d71461056d578063a9059cbb146105a6578063b176bd9e146105df576101c4565b80637c602bc2116100d35780637c602bc2146104c65780637ecebe00146104ff57806390193b7c1461053257806395d89b4114610565576101c4565b806370a08231146104525780637158da7c1461048557806379cc67901461048d576101c4565b80633644e5151161016657806342966c681161014057806342966c68146103c457806342cfe0ac146103e1578063441a3e701461041257806352eac8af14610435576101c4565b80633644e5151461034a578063395093511461035257806340c10f191461038b576101c4565b806318160ddd116101a257806318160ddd146102c257806323b872dd146102ca57806328c082851461030d578063313ce5671461032c576101c4565b8063010ad6d1146101c957806306fdde03146101f8578063095ea7b314610275575b600080fd5b6101e6600480360360208110156101df57600080fd5b50356106ab565b60408051918252519081900360200190f35b6102006106c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023a578181015183820152602001610222565b50505050905090810190601f1680156102675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561028b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561077c565b604080519115158252519081900360200190f35b6101e6610792565b6102ae600480360360608110156102e057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610798565b61032a6004803603602081101561032357600080fd5b50356107f9565b005b6103346107fe565b6040805160ff9092168252519081900360200190f35b6101e6610807565b6102ae6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610816565b61032a600480360360408110156103a157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610859565b61032a600480360360208110156103da57600080fd5b5035610867565b6103e9610874565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61032a6004803603604081101561042857600080fd5b5080359060200135610898565b6101e66004803603602081101561044b57600080fd5b50356109df565b6101e66004803603602081101561046857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109f6565b6103e9610a1e565b61032a600480360360408110156104a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a42565b61032a600480360360408110156104dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a73565b6101e66004803603602081101561051557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a7d565b6101e66004803603602081101561054857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a84565b610200610aac565b6102ae6004803603604081101561058357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b2b565b6102ae600480360360408110156105bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b71565b6101e6610b7e565b61032a600480360360e08110156105fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610b84565b6101e66004803603604081101561065b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610c59565b61032a6004803603604081101561069657600080fd5b5080359060200135610c91565b6101e6610d8a565b60006106c260075483610d9490919063ffffffff16565b92915050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b5050505050905090565b6000610789338484610dd6565b50600192915050565b60025490565b60006107a5848484610e45565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107ef9186916107ea908661019e610f6e565b610dd6565b5060019392505050565b600755565b60055460ff1690565b6000610811610d8a565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107899185906107ea9086610f84565b6108638282610f9d565b5050565b6108713382611056565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156108dd576108cb336109f6565b90506108d6816106ab565b91506108e9565b6108e6826109df565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d218fe887f000000000000000000000000000000000000000000000000000000000000000084336040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b505050506109da3382611056565b505050565b60006106c26007548361114690919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610a5c826101a1610a558633610c59565b9190610f6e565b9050610a69833383610dd6565b6109da8383611056565b6108638282611056565b60006106c2825b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107725780601f1061074757610100808354040283529160200191610772565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107899185906107ea908661019f610f6e565b6000610789338484610e45565b60075481565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610bb38c610a84565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610c448882610c3b878787611199565b886101f86111d8565b610c4f888888610dd6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d4216d97f000000000000000000000000000000000000000000000000000000000000000083336040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b5050505061086333610d85836109df565b610f9d565b600061081161123c565b6000828202610db8841580610db1575083858381610dae57fe5b04145b6003611307565b6001670de0b6b3a76400006001830304018115150291505092915050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e6973ffffffffffffffffffffffffffffffffffffffff84161515610198611307565b610e8d73ffffffffffffffffffffffffffffffffffffffff83161515610199611307565b610e988383836109da565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610ecb90826101a0610f6e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610f079082610f84565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f7d8484111583611307565b5050900390565b6000828201610f968482101583611307565b9392505050565b610fa9600083836109da565b610fc3610fbe82610fb8610792565b90610f84565b611315565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ff39082610f84565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61107a73ffffffffffffffffffffffffffffffffffffffff8316151561019b611307565b611086826000836109da565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110b990826101b2610f6e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556110f4610fbe826110ee610792565b9061131a565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006111558215156004611307565b670de0b6b3a764000083026111878415806111805750670de0b6b3a764000085838161117d57fe5b04145b6005611307565b82818161119057fe5b04949350505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006111e385611328565b90506111f96111f387838761138f565b83611307565b611208428410156101b8611307565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112a96114a1565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161086357610863816114a5565b600255565b6000610f9683836001610f6e565b600061133261123c565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60006113a182516041146101b9611307565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561141a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061149557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610871917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212203568228a15c8ad7cf4c84a15c97c2f64139784c7652fa1ca028053df3592441264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0xE2BBB158 EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x6A3 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0xB176BD9E EQ PUSH2 0x5DF JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7C602BC2 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x565 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x7158DA7C EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x48D JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0x42CFE0AC EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x441A3E70 EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x52EAC8AF EQ PUSH2 0x435 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x38B JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0x28C08285 EQ PUSH2 0x30D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x32C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x10AD6D1 EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x23A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x222 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x267 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x77C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x798 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x334 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH2 0x807 JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x816 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x859 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x867 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0x874 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x898 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x468 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9F6 JUMP JUMPDEST PUSH2 0x3E9 PUSH2 0xA1E JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA42 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA84 JUMP JUMPDEST PUSH2 0x200 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB2B JUMP JUMPDEST PUSH2 0x2AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0xB7E JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xB84 JUMP JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC59 JUMP JUMPDEST PUSH2 0x32A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x696 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC91 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0xD8A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 PUSH1 0x7 SLOAD DUP4 PUSH2 0xD94 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x772 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x747 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x772 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x755 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 CALLER DUP5 DUP5 PUSH2 0xDD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A5 DUP5 DUP5 DUP5 PUSH2 0xE45 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7EF SWAP2 DUP7 SWAP2 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF6E JUMP JUMPDEST PUSH2 0xDD6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x811 PUSH2 0xD8A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x789 SWAP2 DUP6 SWAP1 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x863 DUP3 DUP3 PUSH2 0xF9D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x871 CALLER DUP3 PUSH2 0x1056 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x8DD JUMPI PUSH2 0x8CB CALLER PUSH2 0x9F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x8D6 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 POP PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x8E6 DUP3 PUSH2 0x9DF JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD218FE88 PUSH32 0x0 DUP5 CALLER PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x9DA CALLER DUP3 PUSH2 0x1056 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 PUSH1 0x7 SLOAD DUP4 PUSH2 0x1146 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA5C DUP3 PUSH2 0x1A1 PUSH2 0xA55 DUP7 CALLER PUSH2 0xC59 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST SWAP1 POP PUSH2 0xA69 DUP4 CALLER DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x9DA DUP4 DUP4 PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x863 DUP3 DUP3 PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C2 DUP3 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x772 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x747 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x772 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x789 SWAP2 DUP6 SWAP1 PUSH2 0x7EA SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 CALLER DUP5 DUP5 PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xBB3 DUP13 PUSH2 0xA84 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xC44 DUP9 DUP3 PUSH2 0xC3B DUP8 DUP8 DUP8 PUSH2 0x1199 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11D8 JUMP JUMPDEST PUSH2 0xC4F DUP9 DUP9 DUP9 PUSH2 0xDD6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3D4216D9 PUSH32 0x0 DUP4 CALLER PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x863 CALLER PUSH2 0xD85 DUP4 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x811 PUSH2 0x123C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xDB8 DUP5 ISZERO DUP1 PUSH2 0xDB1 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xDAE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 DUP4 SUB DIV ADD DUP2 ISZERO ISZERO MUL SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE69 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0xE8D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xECB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xF07 SWAP1 DUP3 PUSH2 0xF84 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1307 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xF96 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1307 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFA9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0xFC3 PUSH2 0xFBE DUP3 PUSH2 0xFB8 PUSH2 0x792 JUMP JUMPDEST SWAP1 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x1315 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xFF3 SWAP1 DUP3 PUSH2 0xF84 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x107A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1307 JUMP JUMPDEST PUSH2 0x1086 DUP3 PUSH1 0x0 DUP4 PUSH2 0x9DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x10B9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x10F4 PUSH2 0xFBE DUP3 PUSH2 0x10EE PUSH2 0x792 JUMP JUMPDEST SWAP1 PUSH2 0x131A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1155 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1307 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1187 DUP5 ISZERO DUP1 PUSH2 0x1180 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x117D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x1307 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x1190 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E3 DUP6 PUSH2 0x1328 JUMP JUMPDEST SWAP1 POP PUSH2 0x11F9 PUSH2 0x11F3 DUP8 DUP4 DUP8 PUSH2 0x138F JUMP JUMPDEST DUP4 PUSH2 0x1307 JUMP JUMPDEST PUSH2 0x1208 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1307 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x12A9 PUSH2 0x14A1 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x863 JUMPI PUSH2 0x863 DUP2 PUSH2 0x14A5 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF96 DUP4 DUP4 PUSH1 0x1 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1332 PUSH2 0x123C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13A1 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x141A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1495 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x871 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD PUSH9 0x228A15C8AD7CF4C84A ISZERO 0xC9 PUSH29 0x2F64139784C7652FA1CA028053DF3592441264736F6C63430007010033 ","sourceMap":"1458:2802:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2243:153;;;;;;;;;;;;;;;;-1:-1:-1;2243:153:116;;:::i;:::-;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;5488:386::-;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;2402:142:116:-;;;;;;;;;;;;;;;;-1:-1:-1;2402:142:116;;:::i;:::-;;3156:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;473:87:72:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;1770:50:116:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3690:568;;;;;;;;;;;;;;;;-1:-1:-1;3690:568:116;;;;;;;:::i;2582:155::-;;;;;;;;;;;;;;;;-1:-1:-1;2582:155:116;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;2775:103:116:-;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1549:37:116:-;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;2916:736:116:-;;;;;;;;;;;;;;;;-1:-1:-1;2916:736:116;;;;;;;:::i;1184:113:59:-;;;:::i;2243:153:116:-;2326:7;2352:37;2366:22;;2352:7;:13;;:37;;;;:::i;:::-;2345:44;2243:153;-1:-1:-1;;2243:153:116:o;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;2402:142:116:-;2489:22;:48;2402:142::o;3156:81:71:-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;1770:50:116:-;;;:::o;3690:568::-;3761:21;1695:17;3797:6;:21;3793:335;;;3951:21;3961:10;3951:9;:21::i;:::-;3935:37;;3995:41;4022:13;3995:26;:41::i;:::-;3986:50;;3793:335;;;4083:34;4110:6;4083:26;:34::i;:::-;4067:50;;3793:335;4138:14;:38;;;4177:11;4190:6;4198:10;4138:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4219:32;4225:10;4237:13;4219:5;:32::i;:::-;3690:568;;;:::o;2582:155::-;2665:7;2691:39;2707:22;;2691:7;:15;;:39;;;;:::i;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2775:103:116:-;2860:11;2775:103;:::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;1303:121:59;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1549:37:116:-;;;;:::o;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2916:736:116:-;3506:14;:43;;;3550:11;3563:6;3571:10;3506:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:53;3598:10;3610:34;3637:6;3610:26;:34::i;:::-;3592:5;:53::i;1184:113:59:-;1244:7;1270:20;:18;:20::i;2048:714:66:-;2108:14;2152:5;;;2167:57;2176:6;;;:26;;;2201:1;2196;2186:7;:11;;;;;;:16;2176:26;5291:1:12;2167:8:66;:57::i;:::-;2743:1;2737:3;2733:1;2724:7;2720:15;2716:25;2712:33;2701:7;2694:15;2687:23;2683:63;2673:73;;2659:97;;;;;:::o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:66:o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","EULER_PROTOCOL()":"42cfe0ac","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","convertBalanceToUnderlying(uint256)":"010ad6d1","convertUnderlyingToBalance(uint256)":"52eac8af","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256,uint256)":"e2bbb158","exchangeRateMultiplier()":"b176bd9e","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setExchangeRateMultiplier(uint256)":"28c08285","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlyingAsset()":"7158da7c","withdraw(uint256,uint256)":"441a3e70"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"contract IMockEulerProtocol\",\"name\":\"eulerProtocol\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EULER_PROTOCOL\",\"outputs\":[{\"internalType\":\"contract IMockEulerProtocol\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"convertBalanceToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"convertUnderlyingToBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRateMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_exchangeRateMultiplier\",\"type\":\"uint256\"}],\"name\":\"setExchangeRateMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"convertBalanceToUnderlying(uint256)\":{\"details\":\"Convert an eToken balance to an underlying amount, taking into account current exchange rate\",\"params\":{\"balance\":\"eToken balance, in internal book-keeping units (18 decimals)\"},\"returns\":{\"_0\":\"Amount in underlying units, (same decimals as underlying token)\"}},\"convertUnderlyingToBalance(uint256)\":{\"details\":\"Convert an underlying amount to an eToken balance, taking into account current exchange rate\",\"params\":{\"underlyingAmount\":\"Amount in underlying units (same decimals as underlying token)\"},\"returns\":{\"_0\":\"eToken balance, in internal book-keeping units (18 decimals)\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(uint256,uint256)\":{\"details\":\"Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"underlyingAsset()\":{\"details\":\"Address of underlying asset\"},\"withdraw(uint256,uint256)\":{\"details\":\"Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to to `deposit` into and `withdraw` from an eToken. The eToken serves as a receipt Token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockEulerToken.sol\":\"MockEulerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IEulerToken.sol\":{\"keccak256\":\"0x1831b7e182413889843464b9a0f8840ac8037fa2d6dae5f2d662682d3c08b3c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3dbde681f0d84d00c22aced367701fe6568c143575ec20ac146948664008433d\",\"dweb:/ipfs/QmSzNhMp1umzDJ97xFZAcitXKFefHCJc4SKVKKczxTfqNg\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/relayer/interfaces/IMockEulerProtocol.sol\":{\"keccak256\":\"0xee162ed1d1eddad536055ff29de1ecf9649976b6f9f19740a7657642b974b565\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9392cb4cfc75256eeff054c918ac0ca1af49844be0e697c442c6c4df1c5c8f1e\",\"dweb:/ipfs/QmXByf973KbeA27DWJx7PVG64egQk8sxb5h9KGtDfsTMJY\"]},\"contracts/test/MockEulerToken.sol\":{\"keccak256\":\"0x7e5b0018ebaa25e74126b0ff28cd4ce0aaf2b31450b34bee7fe79ec50c51ddb7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4b0c8824d5d22e84945b33b41231341c77c51f01fd2ffcf0f99b8fdc9969646e\",\"dweb:/ipfs/QmNTk8gN9vpL1CDpEd4qDLnF1GycioyMdhd7rwYT1awj6Z\"]}},\"version\":1}"}},"contracts/test/MockGearboxDieselToken.sol":{"MockGearboxDieselToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"gearboxVaultAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040523480156200001257600080fd5b506040516200149c3803806200149c833981810160405260808110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060408181526020838101519382015183830190925260018352603160f81b818401528751939550909350869286928692859283929183918791620001e49160039185019062000280565b508051620001fa90600490602084019062000280565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200024d816200026a565b50505060601b6001600160601b03191660e052506200031c915050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c357805160ff1916838001178555620002f3565b82800160010185558215620002f3579182015b82811115620002f3578251825591602001919060010190620002d6565b506200030192915062000305565b5090565b5b8082111562000301576000815560010162000306565b60805160a05160c05160e05160601c61114762000355600039806107d3525080610e1d525080610e5f525080610e3e52506111476000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806379cc6790116100d857806395d89b411161008c578063d505accf11610066578063d505accf14610510578063dd62ed3e1461056e578063ed24911d146105a957610177565b806395d89b4114610496578063a457c2d71461049e578063a9059cbb146104d757610177565b80637ecebe00116100bd5780637ecebe00146103ff5780638da5cb5b1461043257806390193b7c1461046357610177565b806379cc67901461038d5780637c602bc2146103c657610177565b80633644e5151161012f57806340c10f191161011457806340c10f191461030257806342966c681461033d57806370a082311461035a57610177565b80633644e515146102c157806339509351146102c957610177565b806318160ddd1161016057806318160ddd1461024657806323b872dd14610260578063313ce567146102a357610177565b806306fdde031461017c578063095ea7b3146101f9575b600080fd5b6101846105b1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102326004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610665565b604080519115158252519081900360200190f35b61024e61067b565b60408051918252519081900360200190f35b6102326004803603606081101561027657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610681565b6102ab6106e2565b6040805160ff9092168252519081900360200190f35b61024e6106eb565b610232600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106fa565b61033b6004803603604081101561031857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561073d565b005b61033b6004803603602081101561035357600080fd5b503561074b565b61024e6004803603602081101561037057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610758565b61033b600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610780565b61033b600480360360408110156103dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b6565b61024e6004803603602081101561041557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c0565b61043a6107d1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61024e6004803603602081101561047957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107f5565b61018461081d565b610232600480360360408110156104b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561089c565b610232600480360360408110156104ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e2565b61033b600480360360e081101561052657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108ef565b61024e6004803603604081101561058457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109c4565b61024e6109fc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561065b5780601f106106305761010080835404028352916020019161065b565b820191906000526020600020905b81548152906001019060200180831161063e57829003601f168201915b5050505050905090565b6000610672338484610a06565b50600192915050565b60025490565b600061068e848484610a75565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546106d89186916106d3908661019e610b9e565b610a06565b5060019392505050565b60055460ff1690565b60006106f56109fc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106729185906106d39086610bb4565b6107478282610bcd565b5050565b6107553382610c86565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061079a826101a161079386336109c4565b9190610b9e565b90506107a7833383610a06565b6107b18383610c86565b505050565b6107478282610c86565b60006107cb826107f5565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561065b5780601f106106305761010080835404028352916020019161065b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106729185906106d3908661019f610b9e565b6000610672338484610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861091e8c6107f5565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506109af88826109a6878787610d76565b886101f8610db5565b6109ba888888610a06565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006106f5610e19565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610a9973ffffffffffffffffffffffffffffffffffffffff84161515610198610ee4565b610abd73ffffffffffffffffffffffffffffffffffffffff83161515610199610ee4565b610ac88383836107b1565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610afb90826101a0610b9e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b379082610bb4565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610bad8484111583610ee4565b5050900390565b6000828201610bc68482101583610ee4565b9392505050565b610bd9600083836107b1565b610bf3610bee82610be861067b565b90610bb4565b610ef2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c239082610bb4565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610caa73ffffffffffffffffffffffffffffffffffffffff8316151561019b610ee4565b610cb6826000836107b1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce990826101b2610b9e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d24610bee82610d1e61067b565b90610ef7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dc085610f05565b9050610dd6610dd0878387610f6c565b83610ee4565b610de5428410156101b8610ee4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8661107e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107475761074781611082565b600255565b6000610bc683836001610b9e565b6000610f0f610e19565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610f7e82516041146101b9610ee4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ff7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061107257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610755917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d9ba87154858f0507022e92411edd10d55677a31956f707ae0e4a5ea4b9054f264736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x149C CODESIZE SUB DUP1 PUSH3 0x149C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD SWAP4 DUP3 ADD MLOAD DUP4 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 DUP4 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP2 DUP5 ADD MSTORE DUP8 MLOAD SWAP4 SWAP6 POP SWAP1 SWAP4 POP DUP7 SWAP3 DUP7 SWAP3 DUP7 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1E4 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x280 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1FA SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x280 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x24D DUP2 PUSH3 0x26A JUMP JUMPDEST POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE POP PUSH3 0x31C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2C3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2F3 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2F3 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2F3 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2D6 JUMP JUMPDEST POP PUSH3 0x301 SWAP3 SWAP2 POP PUSH3 0x305 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x301 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x306 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x1147 PUSH3 0x355 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7D3 MSTORE POP DUP1 PUSH2 0xE1D MSTORE POP DUP1 PUSH2 0xE5F MSTORE POP DUP1 PUSH2 0xE3E MSTORE POP PUSH2 0x1147 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x56E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x5A9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x49E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4D7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x463 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x3C6 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x35A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2C9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2A3 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x184 PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x665 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH2 0x67B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x681 JUMP JUMPDEST PUSH2 0x2AB PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x73D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74B JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x758 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x780 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x184 PUSH2 0x81D JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x89C JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x65B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x630 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x65B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x63E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 CALLER DUP5 DUP5 PUSH2 0xA06 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68E DUP5 DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x6D8 SWAP2 DUP7 SWAP2 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB9E JUMP JUMPDEST PUSH2 0xA06 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F5 PUSH2 0x9FC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x672 SWAP2 DUP6 SWAP1 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0x747 DUP3 DUP3 PUSH2 0xBCD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x755 CALLER DUP3 PUSH2 0xC86 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79A DUP3 PUSH2 0x1A1 PUSH2 0x793 DUP7 CALLER PUSH2 0x9C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB9E JUMP JUMPDEST SWAP1 POP PUSH2 0x7A7 DUP4 CALLER DUP4 PUSH2 0xA06 JUMP JUMPDEST PUSH2 0x7B1 DUP4 DUP4 PUSH2 0xC86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x747 DUP3 DUP3 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CB DUP3 PUSH2 0x7F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x65B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x630 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x65B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x672 SWAP2 DUP6 SWAP1 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 CALLER DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x91E DUP13 PUSH2 0x7F5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x9AF DUP9 DUP3 PUSH2 0x9A6 DUP8 DUP8 DUP8 PUSH2 0xD76 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x9BA DUP9 DUP9 DUP9 PUSH2 0xA06 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F5 PUSH2 0xE19 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA99 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xABD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xAC8 DUP4 DUP4 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xAFB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB37 SWAP1 DUP3 PUSH2 0xBB4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAD DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEE4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xBC6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEE4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBD9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH2 0xBF3 PUSH2 0xBEE DUP3 PUSH2 0xBE8 PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0xEF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC23 SWAP1 DUP3 PUSH2 0xBB4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xCAA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xCB6 DUP3 PUSH1 0x0 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD24 PUSH2 0xBEE DUP3 PUSH2 0xD1E PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC0 DUP6 PUSH2 0xF05 JUMP JUMPDEST SWAP1 POP PUSH2 0xDD6 PUSH2 0xDD0 DUP8 DUP4 DUP8 PUSH2 0xF6C JUMP JUMPDEST DUP4 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xDE5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEE4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE86 PUSH2 0x107E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x747 JUMPI PUSH2 0x747 DUP2 PUSH2 0x1082 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC6 DUP4 DUP4 PUSH1 0x1 PUSH2 0xB9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF0F PUSH2 0xE19 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEE4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1072 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x755 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0xBA DUP8 ISZERO 0x48 PC CREATE POP PUSH17 0x22E92411EDD10D55677A31956F707AE0E4 0xA5 0xEA 0x4B SWAP1 SLOAD CALLCODE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"920:465:117:-:0;;;1045:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1045:230:117;;;;;;;;;;-1:-1:-1;1045:230:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1045:230:117;;;;;;;;;;-1:-1:-1;1045:230:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1045:230:117;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1045:230:117;;-1:-1:-1;1045:230:117;;-1:-1:-1;1192:4:117;;1198:6;;1045:230;;1192:4;;;;1045:230;1192:4;;1198:6;;2118:13:71;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;;1226:42:117::1;::::0;-1:-1:-1;;;;;;1226:42:117;::::1;::::0;-1:-1:-1;920:465:117;;-1:-1:-1;;920:465:117;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;920:465:117:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;920:465:117;;;-1:-1:-1;920:465:117;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":3646}],"7648":[{"length":32,"start":3679}],"7650":[{"length":32,"start":3613}],"18848":[{"length":32,"start":2003}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101775760003560e01c806379cc6790116100d857806395d89b411161008c578063d505accf11610066578063d505accf14610510578063dd62ed3e1461056e578063ed24911d146105a957610177565b806395d89b4114610496578063a457c2d71461049e578063a9059cbb146104d757610177565b80637ecebe00116100bd5780637ecebe00146103ff5780638da5cb5b1461043257806390193b7c1461046357610177565b806379cc67901461038d5780637c602bc2146103c657610177565b80633644e5151161012f57806340c10f191161011457806340c10f191461030257806342966c681461033d57806370a082311461035a57610177565b80633644e515146102c157806339509351146102c957610177565b806318160ddd1161016057806318160ddd1461024657806323b872dd14610260578063313ce567146102a357610177565b806306fdde031461017c578063095ea7b3146101f9575b600080fd5b6101846105b1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102326004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610665565b604080519115158252519081900360200190f35b61024e61067b565b60408051918252519081900360200190f35b6102326004803603606081101561027657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610681565b6102ab6106e2565b6040805160ff9092168252519081900360200190f35b61024e6106eb565b610232600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106fa565b61033b6004803603604081101561031857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561073d565b005b61033b6004803603602081101561035357600080fd5b503561074b565b61024e6004803603602081101561037057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610758565b61033b600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610780565b61033b600480360360408110156103dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b6565b61024e6004803603602081101561041557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c0565b61043a6107d1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61024e6004803603602081101561047957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107f5565b61018461081d565b610232600480360360408110156104b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561089c565b610232600480360360408110156104ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108e2565b61033b600480360360e081101561052657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108ef565b61024e6004803603604081101561058457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109c4565b61024e6109fc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561065b5780601f106106305761010080835404028352916020019161065b565b820191906000526020600020905b81548152906001019060200180831161063e57829003601f168201915b5050505050905090565b6000610672338484610a06565b50600192915050565b60025490565b600061068e848484610a75565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546106d89186916106d3908661019e610b9e565b610a06565b5060019392505050565b60055460ff1690565b60006106f56109fc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106729185906106d39086610bb4565b6107478282610bcd565b5050565b6107553382610c86565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061079a826101a161079386336109c4565b9190610b9e565b90506107a7833383610a06565b6107b18383610c86565b505050565b6107478282610c86565b60006107cb826107f5565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561065b5780601f106106305761010080835404028352916020019161065b565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106729185906106d3908661019f610b9e565b6000610672338484610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861091e8c6107f5565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506109af88826109a6878787610d76565b886101f8610db5565b6109ba888888610a06565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006106f5610e19565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610a9973ffffffffffffffffffffffffffffffffffffffff84161515610198610ee4565b610abd73ffffffffffffffffffffffffffffffffffffffff83161515610199610ee4565b610ac88383836107b1565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610afb90826101a0610b9e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b379082610bb4565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610bad8484111583610ee4565b5050900390565b6000828201610bc68482101583610ee4565b9392505050565b610bd9600083836107b1565b610bf3610bee82610be861067b565b90610bb4565b610ef2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c239082610bb4565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610caa73ffffffffffffffffffffffffffffffffffffffff8316151561019b610ee4565b610cb6826000836107b1565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce990826101b2610b9e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d24610bee82610d1e61067b565b90610ef7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dc085610f05565b9050610dd6610dd0878387610f6c565b83610ee4565b610de5428410156101b8610ee4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8661107e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107475761074781611082565b600255565b6000610bc683836001610b9e565b6000610f0f610e19565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610f7e82516041146101b9610ee4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ff7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061107257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610755917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220d9ba87154858f0507022e92411edd10d55677a31956f707ae0e4a5ea4b9054f264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x177 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x56E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x5A9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x49E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4D7 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x463 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x3C6 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x35A JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2C9 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2A3 JUMPI PUSH2 0x177 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x184 PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x665 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH2 0x67B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x681 JUMP JUMPDEST PUSH2 0x2AB PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6FA JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x73D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74B JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x758 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x780 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x184 PUSH2 0x81D JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x89C JUMP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x33B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x24E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x24E PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x65B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x630 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x65B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x63E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 CALLER DUP5 DUP5 PUSH2 0xA06 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68E DUP5 DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x6D8 SWAP2 DUP7 SWAP2 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB9E JUMP JUMPDEST PUSH2 0xA06 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F5 PUSH2 0x9FC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x672 SWAP2 DUP6 SWAP1 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0x747 DUP3 DUP3 PUSH2 0xBCD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x755 CALLER DUP3 PUSH2 0xC86 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79A DUP3 PUSH2 0x1A1 PUSH2 0x793 DUP7 CALLER PUSH2 0x9C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xB9E JUMP JUMPDEST SWAP1 POP PUSH2 0x7A7 DUP4 CALLER DUP4 PUSH2 0xA06 JUMP JUMPDEST PUSH2 0x7B1 DUP4 DUP4 PUSH2 0xC86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x747 DUP3 DUP3 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7CB DUP3 PUSH2 0x7F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x65B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x630 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x65B JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x672 SWAP2 DUP6 SWAP1 PUSH2 0x6D3 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x672 CALLER DUP5 DUP5 PUSH2 0xA75 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x91E DUP13 PUSH2 0x7F5 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x9AF DUP9 DUP3 PUSH2 0x9A6 DUP8 DUP8 DUP8 PUSH2 0xD76 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x9BA DUP9 DUP9 DUP9 PUSH2 0xA06 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F5 PUSH2 0xE19 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA99 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xABD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xAC8 DUP4 DUP4 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xAFB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB37 SWAP1 DUP3 PUSH2 0xBB4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAD DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEE4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xBC6 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEE4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xBD9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH2 0xBF3 PUSH2 0xBEE DUP3 PUSH2 0xBE8 PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0xBB4 JUMP JUMPDEST PUSH2 0xEF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC23 SWAP1 DUP3 PUSH2 0xBB4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xCAA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xCB6 DUP3 PUSH1 0x0 DUP4 PUSH2 0x7B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB9E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD24 PUSH2 0xBEE DUP3 PUSH2 0xD1E PUSH2 0x67B JUMP JUMPDEST SWAP1 PUSH2 0xEF7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC0 DUP6 PUSH2 0xF05 JUMP JUMPDEST SWAP1 POP PUSH2 0xDD6 PUSH2 0xDD0 DUP8 DUP4 DUP8 PUSH2 0xF6C JUMP JUMPDEST DUP4 PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0xDE5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xEE4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xE86 PUSH2 0x107E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x747 JUMPI PUSH2 0x747 DUP2 PUSH2 0x1082 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC6 DUP4 DUP4 PUSH1 0x1 PUSH2 0xB9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF0F PUSH2 0xE19 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xEE4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1072 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x755 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0xBA DUP8 ISZERO 0x48 PC CREATE POP PUSH17 0x22E92411EDD10D55677A31956F707AE0E4 0xA5 0xEA 0x4B SWAP1 SLOAD CALLCODE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"920:465:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;:::-;;473:87:72;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1281:102:117:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1303:121:59;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;1281:102:117:-;1356:20;1281:102;:::o;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"gearboxVaultAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"owner()\":{\"details\":\"returns the address of the vault\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockGearboxDieselToken.sol\":\"MockGearboxDieselToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockGearboxDieselToken.sol\":{\"keccak256\":\"0x49be982fccbc8bf616cbd4e7f16c5a84647104cd6fc2791ca2013646ef0ae3ef\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ea984e084e21bfe48ae81208547dd412ef2be038eaaacd7f99cef0ea6f20ebc\",\"dweb:/ipfs/QmYEVuZC3Hkcrxjp9aLQBC6Y6KQyfW5BJH8Z3ACgjpr5aR\"]}},\"version\":1}"}},"contracts/test/MockGearboxVault.sol":{"MockGearboxVault":{"abi":[{"inputs":[{"internalType":"address","name":"underlyingTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountDiesel","type":"uint256"}],"name":"fromDiesel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDieselRate_RAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wrappedAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dieselTokenAddress","type":"address"}],"name":"setDieselToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"name":"toDiesel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040526b033b2e3c9fd0803ce800000060805234801561002057600080fd5b506040516108da3803806108da8339818101604052602081101561004357600080fd5b5051606081901b6001600160601b03191660a052608051906001600160a01b031661084561009560003980610267528061029552806103115250806102d5528061043152806104fe52506108456000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635427c9381161005b5780635427c9381461011d578063788c6bfe1461013a5780639aa5d46214610142578063a245a295146101815761007d565b806305fe138b146100825780632495a599146100bd5780634d778ad1146100ee575b600080fd5b6100bb6004803603604081101561009857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166101b4565b005b6100c5610293565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61010b6004803603602081101561010457600080fd5b50356102b7565b60408051918252519081900360200190f35b61010b6004803603602081101561013357600080fd5b50356102c8565b61010b6102d3565b6100bb6004803603606081101561015857600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001356102f7565b6100bb6004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dd565b60008054604080517f7c602bc200000000000000000000000000000000000000000000000000000000815233600482015260248101869052905173ffffffffffffffffffffffffffffffffffffffff90921692637c602bc29260448084019382900301818387803b15801561022857600080fd5b505af115801561023c573d6000803e3d6000fd5b50505050600061024b83610424565b905061028e73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610463565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102c2826104f0565b92915050565b60006102c282610424565b7f000000000000000000000000000000000000000000000000000000000000000090565b61033973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610522565b6000610344846104f0565b60008054604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526024820186905291519495509116926340c10f199260448084019391929182900301818387803b1580156103bf57600080fd5b505af11580156103d3573d6000803e3d6000fd5b5050505050505050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000633b9aca00610455837f00000000000000000000000000000000000000000000000000000000000000006105bd565b8161045c57fe5b0492915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261028e9084906105f5565b60006102c2633b9aca0083027f000000000000000000000000000000000000000000000000000000000000000061070b565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105b79085906105f5565b50505050565b60008282026105e18415806105da5750838583816105d757fe5b04145b6003610755565b670de0b6b3a7640000815b04949350505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061065e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610621565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146106c0576040519150601f19603f3d011682016040523d82523d6000602084013e6106c5565b606091505b509150915060008214156106dd573d6000803e3d6000fd5b6105b7815160001480610703575081806020019051602081101561070057600080fd5b50515b6101a2610755565b600061071a8215156004610755565b670de0b6b3a7640000830261074c8415806107455750670de0b6b3a764000085838161074257fe5b04145b6005610755565b8281816105ec57fe5b816107635761076381610767565b5050565b610791817f42414c0000000000000000000000000000000000000000000000000000000000610794565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f4814b8012abfd87444cd1362bfdcdca5850fdc7511d59319c6e177e716ca15b64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8DA CODESIZE SUB DUP1 PUSH2 0x8DA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x845 PUSH2 0x95 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x267 MSTORE DUP1 PUSH2 0x295 MSTORE DUP1 PUSH2 0x311 MSTORE POP DUP1 PUSH2 0x2D5 MSTORE DUP1 PUSH2 0x431 MSTORE DUP1 PUSH2 0x4FE MSTORE POP PUSH2 0x845 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5427C938 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5427C938 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x788C6BFE EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x9AA5D462 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0xA245A295 EQ PUSH2 0x181 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x5FE138B EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2495A599 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x4D778AD1 EQ PUSH2 0xEE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0x293 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2C8 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2F7 JUMP JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7C602BC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x7C602BC2 SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x24B DUP4 PUSH2 0x424 JUMP JUMPDEST SWAP1 POP PUSH2 0x28E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x463 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 DUP3 PUSH2 0x4F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 DUP3 PUSH2 0x424 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x339 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x344 DUP5 PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP2 AND SWAP3 PUSH4 0x40C10F19 SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 PUSH2 0x455 DUP4 PUSH32 0x0 PUSH2 0x5BD JUMP JUMPDEST DUP2 PUSH2 0x45C JUMPI INVALID JUMPDEST DIV SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x28E SWAP1 DUP5 SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 PUSH4 0x3B9ACA00 DUP4 MUL PUSH32 0x0 PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x5B7 SWAP1 DUP6 SWAP1 PUSH2 0x5F5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x5E1 DUP5 ISZERO DUP1 PUSH2 0x5DA JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x5D7 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x755 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x65E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x621 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x6C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x6DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5B7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x703 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x755 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x755 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x74C DUP5 ISZERO DUP1 PUSH2 0x745 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x742 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x755 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x5EC JUMPI INVALID JUMPDEST DUP2 PUSH2 0x763 JUMPI PUSH2 0x763 DUP2 PUSH2 0x767 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x791 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x794 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL DUP2 0x4B DUP1 SLT 0xAB REVERT DUP8 DIFFICULTY 0x4C 0xD1 CALLDATASIZE 0x2B REVERT 0xCD 0xCA PC POP REVERT 0xC7 MLOAD SAR MSIZE BALANCE SWAP13 PUSH15 0x177E716CA15B64736F6C6343000701 STOP CALLER ","sourceMap":"1113:1955:118:-:0;;;1263:4;1229:38;;1370:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:124:118;1438:49;;;;-1:-1:-1;;;;;;1438:49:118;;;1113:1955;;;-1:-1:-1;;;;;1113:1955:118;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"18897":[{"length":32,"start":725},{"length":32,"start":1073},{"length":32,"start":1278}],"18901":[{"length":32,"start":615},{"length":32,"start":661},{"length":32,"start":785}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80635427c9381161005b5780635427c9381461011d578063788c6bfe1461013a5780639aa5d46214610142578063a245a295146101815761007d565b806305fe138b146100825780632495a599146100bd5780634d778ad1146100ee575b600080fd5b6100bb6004803603604081101561009857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166101b4565b005b6100c5610293565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61010b6004803603602081101561010457600080fd5b50356102b7565b60408051918252519081900360200190f35b61010b6004803603602081101561013357600080fd5b50356102c8565b61010b6102d3565b6100bb6004803603606081101561015857600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001356102f7565b6100bb6004803603602081101561019757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dd565b60008054604080517f7c602bc200000000000000000000000000000000000000000000000000000000815233600482015260248101869052905173ffffffffffffffffffffffffffffffffffffffff90921692637c602bc29260448084019382900301818387803b15801561022857600080fd5b505af115801561023c573d6000803e3d6000fd5b50505050600061024b83610424565b905061028e73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610463565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102c2826104f0565b92915050565b60006102c282610424565b7f000000000000000000000000000000000000000000000000000000000000000090565b61033973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610522565b6000610344846104f0565b60008054604080517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526024820186905291519495509116926340c10f199260448084019391929182900301818387803b1580156103bf57600080fd5b505af11580156103d3573d6000803e3d6000fd5b5050505050505050565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000633b9aca00610455837f00000000000000000000000000000000000000000000000000000000000000006105bd565b8161045c57fe5b0492915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261028e9084906105f5565b60006102c2633b9aca0083027f000000000000000000000000000000000000000000000000000000000000000061070b565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526105b79085906105f5565b50505050565b60008282026105e18415806105da5750838583816105d757fe5b04145b6003610755565b670de0b6b3a7640000815b04949350505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061065e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610621565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146106c0576040519150601f19603f3d011682016040523d82523d6000602084013e6106c5565b606091505b509150915060008214156106dd573d6000803e3d6000fd5b6105b7815160001480610703575081806020019051602081101561070057600080fd5b50515b6101a2610755565b600061071a8215156004610755565b670de0b6b3a7640000830261074c8415806107455750670de0b6b3a764000085838161074257fe5b04145b6005610755565b8281816105ec57fe5b816107635761076381610767565b5050565b610791817f42414c0000000000000000000000000000000000000000000000000000000000610794565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220f4814b8012abfd87444cd1362bfdcdca5850fdc7511d59319c6e177e716ca15b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5427C938 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5427C938 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x788C6BFE EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x9AA5D462 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0xA245A295 EQ PUSH2 0x181 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x5FE138B EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2495A599 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x4D778AD1 EQ PUSH2 0xEE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0x293 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2C8 JUMP JUMPDEST PUSH2 0x10B PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2F7 JUMP JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x7C602BC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0x7C602BC2 SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x24B DUP4 PUSH2 0x424 JUMP JUMPDEST SWAP1 POP PUSH2 0x28E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x463 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 DUP3 PUSH2 0x4F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 DUP3 PUSH2 0x424 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x339 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x344 DUP5 PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP2 AND SWAP3 PUSH4 0x40C10F19 SWAP3 PUSH1 0x44 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 PUSH2 0x455 DUP4 PUSH32 0x0 PUSH2 0x5BD JUMP JUMPDEST DUP2 PUSH2 0x45C JUMPI INVALID JUMPDEST DIV SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x28E SWAP1 DUP5 SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C2 PUSH4 0x3B9ACA00 DUP4 MUL PUSH32 0x0 PUSH2 0x70B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x5B7 SWAP1 DUP6 SWAP1 PUSH2 0x5F5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x5E1 DUP5 ISZERO DUP1 PUSH2 0x5DA JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x5D7 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x755 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x65E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x621 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x6C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x6DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x5B7 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x703 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x755 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x755 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x74C DUP5 ISZERO DUP1 PUSH2 0x745 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x742 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x755 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x5EC JUMPI INVALID JUMPDEST DUP2 PUSH2 0x763 JUMPI PUSH2 0x763 DUP2 PUSH2 0x767 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x791 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x794 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL DUP2 0x4B DUP1 SLT 0xAB REVERT DUP8 DIFFICULTY 0x4C 0xD1 CALLDATASIZE 0x2B REVERT 0xCD 0xCA PC POP REVERT 0xC7 MLOAD SAR MSIZE BALANCE SWAP13 PUSH15 0x177E716CA15B64736F6C6343000701 STOP CALLER ","sourceMap":"1113:1955:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:267;;;;;;;;;;;;;;;;-1:-1:-1;2513:267:118;;;;;;;;;:::i;:::-;;1641:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2060:136;;;;;;;;;;;;;;;;-1:-1:-1;2060:136:118;;:::i;:::-;;;;;;;;;;;;;;;;1922:132;;;;;;;;;;;;;;;;-1:-1:-1;1922:132:118;;:::i;1817:99::-;;;:::i;2202:305::-;;;;;;;;;;;;;;;;-1:-1:-1;2202:305:118;;;;;;;;;;;;;;:::i;1500:135::-;;;;;;;;;;;;;;;;-1:-1:-1;1500:135:118;;;;:::i;2513:267::-;2601:12;;;:60;;;;;;2635:10;2601:60;;;;;;;;;;;;:12;;;;;:33;;:60;;;;;;;;;;:12;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2671:18;2692:26;2704:13;2692:11;:26::i;:::-;2671:47;-1:-1:-1;2728:45:118;:29;:16;:29;2758:2;2671:47;2728:29;:45::i;:::-;2513:267;;;:::o;1641:117::-;1734:16;1641:117;:::o;2060:136::-;2136:7;2162:27;2172:16;2162:9;:27::i;:::-;2155:34;2060:136;-1:-1:-1;;2060:136:118:o;1922:132::-;1996:7;2022:25;2034:12;2022:11;:25::i;1817:99::-;1904:5;1817:99;:::o;2202:305::-;2327:68;:33;:16;:33;2361:10;2381:4;2388:6;2327:33;:68::i;:::-;2405:21;2429:17;2439:6;2429:9;:17::i;:::-;2456:12;;;:44;;;;;;:12;:44;;;;;;;;;;;;;;;2405:41;;-1:-1:-1;2456:12:118;;;:17;;:44;;;;;:12;;:44;;;;;;:12;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2202:305;;;;:::o;1500:135::-;1571:12;:57;;;;;;;;;;;;;;;1500:135::o;2786:133::-;2851:7;2907:5;2877:27;:12;2898:5;2877:20;:27::i;:::-;:35;;;;;;;2786:133;-1:-1:-1;;2786:133:118:o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;2925:141:118:-;2992:7;3018:41;3038:5;3019:24;;3053:5;3018:34;:41::i;1734:250:77:-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;1833:209:66:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;;1833:209;-1:-1:-1;;;;1833:209:66:o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;926:101:12;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"addLiquidity(uint256,address,uint256)":"9aa5d462","fromDiesel(uint256)":"5427c938","getDieselRate_RAY()":"788c6bfe","removeLiquidity(uint256,address)":"05fe138b","setDieselToken(address)":"a245a295","toDiesel(uint256)":"4d778ad1","underlyingToken()":"2495a599"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlyingTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountDiesel\",\"type\":\"uint256\"}],\"name\":\"fromDiesel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDieselRate_RAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dieselTokenAddress\",\"type\":\"address\"}],\"name\":\"setDieselToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"toDiesel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDieselRate_RAY()\":{\"details\":\"returns a 27 decimal fixed point 'ray' value so a rate of 1 is represented as 1e27\"},\"underlyingToken()\":{\"details\":\"returns the address of the underlying asset\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockGearboxVault.sol\":\"MockGearboxVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IGearboxDieselToken.sol\":{\"keccak256\":\"0x1af47dfe1c582fdc7878dd705b397347d41e36dc4920ac088d499af63a41bf77\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8728a2c1aa1878070638e0882d4377407592ea90bec9cc40170eeae2d5aaf425\",\"dweb:/ipfs/QmW7pGgQLrAnv3FH5rfQDCu3yuvrmdipqhN2q6geWcbXmp\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockGearboxDieselToken.sol\":{\"keccak256\":\"0x49be982fccbc8bf616cbd4e7f16c5a84647104cd6fc2791ca2013646ef0ae3ef\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6ea984e084e21bfe48ae81208547dd412ef2be038eaaacd7f99cef0ea6f20ebc\",\"dweb:/ipfs/QmYEVuZC3Hkcrxjp9aLQBC6Y6KQyfW5BJH8Z3ACgjpr5aR\"]},\"contracts/test/MockGearboxVault.sol\":{\"keccak256\":\"0xe1324acc4e06777e86feea5e53329261eeeaef6b98d71fd30cd06352fcee998a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://241f2f827216b88026a02055750d0007f2aff8378a807c0c93e7b5c890c8c1cc\",\"dweb:/ipfs/QmU4n7hp9Xezu4D8uWBDMJk8ca4hv62ZfrP4bmCwCfw5oS\"]}},\"version\":1}"}},"contracts/test/MockReaperVault.sol":{"MockReaperVault":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"uint256","name":"fullSharePrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPricePerFullShare","type":"uint256"}],"name":"setPricePerFullShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040523480156200001257600080fd5b506040516200185538038062001855833981810160405260a08110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060408181526020838101518483015160609095015184840190935260018452603160f81b828501528851909650939450909287928792879285928392909183918791620001ee916003919085019062000290565b5080516200020490600490602084019062000290565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c05262000257816200027a565b50505060609190911b6001600160601b03191660e052600755506200032c915050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d357805160ff191683800117855562000303565b8280016001018555821562000303579182015b8281111562000303578251825591602001919060010190620002e6565b506200031192915062000315565b5090565b5b8082111562000311576000815560010162000316565b60805160a05160c05160e05160601c6114e66200036f600039806107ab52806109db5280610b455250806110a65250806110e85250806110c752506114e66000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c806379cc6790116100ee578063a9059cbb11610097578063d505accf11610071578063d505accf1461056a578063dd62ed3e146105c8578063ed24911d14610603578063fc0c546a1461060b576101a3565b8063a9059cbb146104f7578063b6b55f2514610530578063c3819fb61461054d576101a3565b806390193b7c116100c857806390193b7c1461048357806395d89b41146104b6578063a457c2d7146104be576101a3565b806379cc6790146103de5780637c602bc2146104175780637ecebe0014610450576101a3565b80633644e5151161015057806342966c681161012a57806342966c681461038657806370a08231146103a357806377c7b8fc146103d6576101a3565b80633644e5151461030c578063395093511461031457806340c10f191461034d576101a3565b806323b872dd1161018157806323b872dd1461028c5780632e1a7d4d146102cf578063313ce567146102ee576101a3565b806306fdde03146101a8578063095ea7b31461022557806318160ddd14610272575b600080fd5b6101b061063c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ea5781810151838201526020016101d2565b50505050905090810190601f1680156102175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61025e6004803603604081101561023b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b604080519115158252519081900360200190f35b61027a610706565b60408051918252519081900360200190f35b61025e600480360360608110156102a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561070c565b6102ec600480360360208110156102e557600080fd5b503561076d565b005b6102f66107d6565b6040805160ff9092168252519081900360200190f35b61027a6107df565b61025e6004803603604081101561032a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ee565b6102ec6004803603604081101561036357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610831565b6102ec6004803603602081101561039c57600080fd5b503561083b565b61027a600480360360208110156103b957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610848565b61027a610870565b6102ec600480360360408110156103f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610876565b6102ec6004803603604081101561042d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ac565b61027a6004803603602081101561046657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108b6565b61027a6004803603602081101561049957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108c7565b6101b06108ef565b61025e600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561096e565b61025e6004803603604081101561050d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109b4565b6102ec6004803603602081101561054657600080fd5b50356109c1565b6102ec6004803603602081101561056357600080fd5b5035610a27565b6102ec600480360360e081101561058057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a2c565b61027a600480360360408110156105de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b01565b61027a610b39565b610613610b43565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b5050505050905090565b60006106fd338484610b67565b50600192915050565b60025490565b6000610719848484610bd6565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461076391869161075e908661019e610cff565b610b67565b5060019392505050565b6107773382610d15565b6000670de0b6b3a764000060075483028161078e57fe5b0490506107d273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383610e0a565b5050565b60055460ff1690565b60006107e9610b39565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fd91859061075e9086610e97565b6107d28282610eb0565b6108453382610d15565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60075490565b6000610890826101a16108898633610b01565b9190610cff565b905061089d833383610b67565b6108a78383610d15565b505050565b6107d28282610d15565b60006108c1826108c7565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fd91859061075e908661019f610cff565b60006106fd338484610bd6565b610a0373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610f64565b600060075482670de0b6b3a76400000281610a1a57fe5b0490506107d23382610eb0565b600755565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a5b8c6108c7565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610aec8882610ae3878787610fff565b886101f861103e565b610af7888888610b67565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107e96110a2565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610bfa73ffffffffffffffffffffffffffffffffffffffff8416151561019861116d565b610c1e73ffffffffffffffffffffffffffffffffffffffff8316151561019961116d565b610c298383836108a7565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c5c90826101a0610cff565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c989082610e97565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610d0e848411158361116d565b5050900390565b610d3973ffffffffffffffffffffffffffffffffffffffff8316151561019b61116d565b610d45826000836108a7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d7890826101b2610cff565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610db8610db382610dad610706565b9061117b565b611189565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526108a790849061118e565b6000828201610ea9848210158361116d565b9392505050565b610ebc600083836108a7565b610ed1610db382610ecb610706565b90610e97565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f019082610e97565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610ff990859061118e565b50505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611049856112a4565b905061105f61105987838761130b565b8361116d565b61106e428410156101b861116d565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061110f61141d565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107d2576107d281611421565b6000610ea983836001610cff565b600255565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106111f757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611259576040519150601f19603f3d011682016040523d82523d6000602084013e61125e565b606091505b50915091506000821415611276573d6000803e3d6000fd5b610ff981516000148061129c575081806020019051602081101561129957600080fd5b50515b6101a261116d565b60006112ae6110a2565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061131d82516041146101b961116d565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611396573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061141157508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610845917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dacbba998b0476b456c84d47e7313d155ae7ed6b814355453672cf7842e1414464736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1855 CODESIZE SUB DUP1 PUSH3 0x1855 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD DUP5 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD DUP5 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP3 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 SWAP7 POP SWAP4 SWAP5 POP SWAP1 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1EE SWAP2 PUSH1 0x3 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x290 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x204 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x290 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x257 DUP2 PUSH3 0x27A JUMP JUMPDEST POP POP POP PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE PUSH1 0x7 SSTORE POP PUSH3 0x32C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2D3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x303 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x303 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x303 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2E6 JUMP JUMPDEST POP PUSH3 0x311 SWAP3 SWAP2 POP PUSH3 0x315 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x311 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x316 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x14E6 PUSH3 0x36F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7AB MSTORE DUP1 PUSH2 0x9DB MSTORE DUP1 PUSH2 0xB45 MSTORE POP DUP1 PUSH2 0x10A6 MSTORE POP DUP1 PUSH2 0x10E8 MSTORE POP DUP1 PUSH2 0x10C7 MSTORE POP PUSH2 0x14E6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x60B JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xC3819FB6 EQ PUSH2 0x54D JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4BE JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x450 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x77C7B8FC EQ PUSH2 0x3D6 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x30C JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x34D JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2EE JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x272 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x217 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27A PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x70C JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x76D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F6 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27A PUSH2 0x7DF JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x83B JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x848 JUMP JUMPDEST PUSH2 0x27A PUSH2 0x870 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x876 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x96E JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9C1 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA27 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB01 JUMP JUMPDEST PUSH2 0x27A PUSH2 0xB39 JUMP JUMPDEST PUSH2 0x613 PUSH2 0xB43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6C9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FD CALLER DUP5 DUP5 PUSH2 0xB67 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x719 DUP5 DUP5 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x763 SWAP2 DUP7 SWAP2 PUSH2 0x75E SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xB67 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x777 CALLER DUP3 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x7 SLOAD DUP4 MUL DUP2 PUSH2 0x78E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x7D2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER DUP4 PUSH2 0xE0A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E9 PUSH2 0xB39 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x6FD SWAP2 DUP6 SWAP1 PUSH2 0x75E SWAP1 DUP7 PUSH2 0xE97 JUMP JUMPDEST PUSH2 0x7D2 DUP3 DUP3 PUSH2 0xEB0 JUMP JUMPDEST PUSH2 0x845 CALLER DUP3 PUSH2 0xD15 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 DUP3 PUSH2 0x1A1 PUSH2 0x889 DUP7 CALLER PUSH2 0xB01 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCFF JUMP JUMPDEST SWAP1 POP PUSH2 0x89D DUP4 CALLER DUP4 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x8A7 DUP4 DUP4 PUSH2 0xD15 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7D2 DUP3 DUP3 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 DUP3 PUSH2 0x8C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x6FD SWAP2 DUP6 SWAP1 PUSH2 0x75E SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FD CALLER DUP5 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0xA03 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP5 PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD DUP3 PUSH8 0xDE0B6B3A7640000 MUL DUP2 PUSH2 0xA1A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x7D2 CALLER DUP3 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA5B DUP13 PUSH2 0x8C7 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xAEC DUP9 DUP3 PUSH2 0xAE3 DUP8 DUP8 DUP8 PUSH2 0xFFF JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x103E JUMP JUMPDEST PUSH2 0xAF7 DUP9 DUP9 DUP9 PUSH2 0xB67 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E9 PUSH2 0x10A2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBFA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x116D JUMP JUMPDEST PUSH2 0xC1E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x116D JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC5C SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC98 SWAP1 DUP3 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x116D JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xD39 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x116D JUMP JUMPDEST PUSH2 0xD45 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD78 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDB8 PUSH2 0xDB3 DUP3 PUSH2 0xDAD PUSH2 0x706 JUMP JUMPDEST SWAP1 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x8A7 SWAP1 DUP5 SWAP1 PUSH2 0x118E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xEA9 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x116D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEBC PUSH1 0x0 DUP4 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0xED1 PUSH2 0xDB3 DUP3 PUSH2 0xECB PUSH2 0x706 JUMP JUMPDEST SWAP1 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF01 SWAP1 DUP3 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xFF9 SWAP1 DUP6 SWAP1 PUSH2 0x118E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1049 DUP6 PUSH2 0x12A4 JUMP JUMPDEST SWAP1 POP PUSH2 0x105F PUSH2 0x1059 DUP8 DUP4 DUP8 PUSH2 0x130B JUMP JUMPDEST DUP4 PUSH2 0x116D JUMP JUMPDEST PUSH2 0x106E TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x116D JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x110F PUSH2 0x141D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7D2 JUMPI PUSH2 0x7D2 DUP2 PUSH2 0x1421 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x11F7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11BA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x125E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1276 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x129C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x116D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE PUSH2 0x10A2 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x131D DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x116D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1411 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x845 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0xCB 0xBA SWAP10 DUP12 DIV PUSH23 0xB456C84D47E7313D155AE7ED6B814355453672CF7842E1 COINBASE DIFFICULTY PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1010:1157:119:-:0;;;1164:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1164:284:119;;;;;;;;;;-1:-1:-1;1164:284:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1164:284:119;;;;;;;;;;-1:-1:-1;1164:284:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1164:284:119;;;;;;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1164:284:119;;-1:-1:-1;1164:284:119;;-1:-1:-1;1164:284:119;;1339:4;;1345:6;;1164:284;;1339:4;;;;1164:284;;1339:4;;1345:6;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;;1373:23:119::1;::::0;;;;-1:-1:-1;;;;;;1373:23:119;::::1;::::0;1406:18:::1;:35:::0;-1:-1:-1;1010:1157:119;;-1:-1:-1;;1010:1157:119;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;1010:1157:119:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1010:1157:119;;;-1:-1:-1;1010:1157:119;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":4295}],"7648":[{"length":32,"start":4328}],"7650":[{"length":32,"start":4262}],"19085":[{"length":32,"start":1963},{"length":32,"start":2523},{"length":32,"start":2885}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101a35760003560e01c806379cc6790116100ee578063a9059cbb11610097578063d505accf11610071578063d505accf1461056a578063dd62ed3e146105c8578063ed24911d14610603578063fc0c546a1461060b576101a3565b8063a9059cbb146104f7578063b6b55f2514610530578063c3819fb61461054d576101a3565b806390193b7c116100c857806390193b7c1461048357806395d89b41146104b6578063a457c2d7146104be576101a3565b806379cc6790146103de5780637c602bc2146104175780637ecebe0014610450576101a3565b80633644e5151161015057806342966c681161012a57806342966c681461038657806370a08231146103a357806377c7b8fc146103d6576101a3565b80633644e5151461030c578063395093511461031457806340c10f191461034d576101a3565b806323b872dd1161018157806323b872dd1461028c5780632e1a7d4d146102cf578063313ce567146102ee576101a3565b806306fdde03146101a8578063095ea7b31461022557806318160ddd14610272575b600080fd5b6101b061063c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ea5781810151838201526020016101d2565b50505050905090810190601f1680156102175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61025e6004803603604081101561023b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b604080519115158252519081900360200190f35b61027a610706565b60408051918252519081900360200190f35b61025e600480360360608110156102a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561070c565b6102ec600480360360208110156102e557600080fd5b503561076d565b005b6102f66107d6565b6040805160ff9092168252519081900360200190f35b61027a6107df565b61025e6004803603604081101561032a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ee565b6102ec6004803603604081101561036357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610831565b6102ec6004803603602081101561039c57600080fd5b503561083b565b61027a600480360360208110156103b957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610848565b61027a610870565b6102ec600480360360408110156103f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610876565b6102ec6004803603604081101561042d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108ac565b61027a6004803603602081101561046657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108b6565b61027a6004803603602081101561049957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108c7565b6101b06108ef565b61025e600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561096e565b61025e6004803603604081101561050d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109b4565b6102ec6004803603602081101561054657600080fd5b50356109c1565b6102ec6004803603602081101561056357600080fd5b5035610a27565b6102ec600480360360e081101561058057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a2c565b61027a600480360360408110156105de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b01565b61027a610b39565b610613610b43565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b5050505050905090565b60006106fd338484610b67565b50600192915050565b60025490565b6000610719848484610bd6565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461076391869161075e908661019e610cff565b610b67565b5060019392505050565b6107773382610d15565b6000670de0b6b3a764000060075483028161078e57fe5b0490506107d273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163383610e0a565b5050565b60055460ff1690565b60006107e9610b39565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fd91859061075e9086610e97565b6107d28282610eb0565b6108453382610d15565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60075490565b6000610890826101a16108898633610b01565b9190610cff565b905061089d833383610b67565b6108a78383610d15565b505050565b6107d28282610d15565b60006108c1826108c7565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fd91859061075e908661019f610cff565b60006106fd338484610bd6565b610a0373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610f64565b600060075482670de0b6b3a76400000281610a1a57fe5b0490506107d23382610eb0565b600755565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a5b8c6108c7565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610aec8882610ae3878787610fff565b886101f861103e565b610af7888888610b67565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107e96110a2565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610bfa73ffffffffffffffffffffffffffffffffffffffff8416151561019861116d565b610c1e73ffffffffffffffffffffffffffffffffffffffff8316151561019961116d565b610c298383836108a7565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c5c90826101a0610cff565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c989082610e97565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610d0e848411158361116d565b5050900390565b610d3973ffffffffffffffffffffffffffffffffffffffff8316151561019b61116d565b610d45826000836108a7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d7890826101b2610cff565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610db8610db382610dad610706565b9061117b565b611189565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526108a790849061118e565b6000828201610ea9848210158361116d565b9392505050565b610ebc600083836108a7565b610ed1610db382610ecb610706565b90610e97565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f019082610e97565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610ff990859061118e565b50505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000611049856112a4565b905061105f61105987838761130b565b8361116d565b61106e428410156101b861116d565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061110f61141d565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107d2576107d281611421565b6000610ea983836001610cff565b600255565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106111f757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016111ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611259576040519150601f19603f3d011682016040523d82523d6000602084013e61125e565b606091505b50915091506000821415611276573d6000803e3d6000fd5b610ff981516000148061129c575081806020019051602081101561129957600080fd5b50515b6101a261116d565b60006112ae6110a2565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061131d82516041146101b961116d565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611396573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061141157508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610845917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220dacbba998b0476b456c84d47e7313d155ae7ed6b814355453672cf7842e1414464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x56A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x60B JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0xC3819FB6 EQ PUSH2 0x54D JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x483 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4BE JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x450 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x42966C68 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3A3 JUMPI DUP1 PUSH4 0x77C7B8FC EQ PUSH2 0x3D6 JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x30C JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x34D JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2EE JUMPI PUSH2 0x1A3 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x272 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x217 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27A PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x70C JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x76D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F6 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x27A PUSH2 0x7DF JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x83B JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x848 JUMP JUMPDEST PUSH2 0x27A PUSH2 0x870 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x876 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x1B0 PUSH2 0x8EF JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x96E JUMP JUMPDEST PUSH2 0x25E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9C1 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA27 JUMP JUMPDEST PUSH2 0x2EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB01 JUMP JUMPDEST PUSH2 0x27A PUSH2 0xB39 JUMP JUMPDEST PUSH2 0x613 PUSH2 0xB43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6C9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FD CALLER DUP5 DUP5 PUSH2 0xB67 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x719 DUP5 DUP5 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x763 SWAP2 DUP7 SWAP2 PUSH2 0x75E SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCFF JUMP JUMPDEST PUSH2 0xB67 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x777 CALLER DUP3 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH1 0x7 SLOAD DUP4 MUL DUP2 PUSH2 0x78E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x7D2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER DUP4 PUSH2 0xE0A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E9 PUSH2 0xB39 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x6FD SWAP2 DUP6 SWAP1 PUSH2 0x75E SWAP1 DUP7 PUSH2 0xE97 JUMP JUMPDEST PUSH2 0x7D2 DUP3 DUP3 PUSH2 0xEB0 JUMP JUMPDEST PUSH2 0x845 CALLER DUP3 PUSH2 0xD15 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x890 DUP3 PUSH2 0x1A1 PUSH2 0x889 DUP7 CALLER PUSH2 0xB01 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCFF JUMP JUMPDEST SWAP1 POP PUSH2 0x89D DUP4 CALLER DUP4 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x8A7 DUP4 DUP4 PUSH2 0xD15 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7D2 DUP3 DUP3 PUSH2 0xD15 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C1 DUP3 PUSH2 0x8C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x6FD SWAP2 DUP6 SWAP1 PUSH2 0x75E SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FD CALLER DUP5 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0xA03 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP5 PUSH2 0xF64 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD DUP3 PUSH8 0xDE0B6B3A7640000 MUL DUP2 PUSH2 0xA1A JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x7D2 CALLER DUP3 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA5B DUP13 PUSH2 0x8C7 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xAEC DUP9 DUP3 PUSH2 0xAE3 DUP8 DUP8 DUP8 PUSH2 0xFFF JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x103E JUMP JUMPDEST PUSH2 0xAF7 DUP9 DUP9 DUP9 PUSH2 0xB67 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E9 PUSH2 0x10A2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBFA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x116D JUMP JUMPDEST PUSH2 0xC1E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x116D JUMP JUMPDEST PUSH2 0xC29 DUP4 DUP4 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC5C SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC98 SWAP1 DUP3 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD0E DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x116D JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xD39 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x116D JUMP JUMPDEST PUSH2 0xD45 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD78 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDB8 PUSH2 0xDB3 DUP3 PUSH2 0xDAD PUSH2 0x706 JUMP JUMPDEST SWAP1 PUSH2 0x117B JUMP JUMPDEST PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x8A7 SWAP1 DUP5 SWAP1 PUSH2 0x118E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xEA9 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x116D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEBC PUSH1 0x0 DUP4 DUP4 PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0xED1 PUSH2 0xDB3 DUP3 PUSH2 0xECB PUSH2 0x706 JUMP JUMPDEST SWAP1 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF01 SWAP1 DUP3 PUSH2 0xE97 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xFF9 SWAP1 DUP6 SWAP1 PUSH2 0x118E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1049 DUP6 PUSH2 0x12A4 JUMP JUMPDEST SWAP1 POP PUSH2 0x105F PUSH2 0x1059 DUP8 DUP4 DUP8 PUSH2 0x130B JUMP JUMPDEST DUP4 PUSH2 0x116D JUMP JUMPDEST PUSH2 0x106E TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x116D JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x110F PUSH2 0x141D JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7D2 JUMPI PUSH2 0x7D2 DUP2 PUSH2 0x1421 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA9 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x11F7 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x11BA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x125E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1276 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF9 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x129C JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x116D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE PUSH2 0x10A2 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x131D DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x116D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1396 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1411 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x845 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0xCB 0xBA SWAP10 DUP12 DIV PUSH23 0xB456C84D47E7313D155AE7ED6B814355453672CF7842E1 COINBASE DIFFICULTY PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1010:1157:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;1942:223:119:-;;;;;;;;;;;;;;;;-1:-1:-1;1942:223:119;;:::i;:::-;;3156:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;473:87:72:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;1454:106:119:-;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1699:237:119:-;;;;;;;;;;;;;;;;-1:-1:-1;1699:237:119;;:::i;1566:127::-;;;;;;;;;;;;;;;;-1:-1:-1;1566:127:119;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;:::i;1087:30:119:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2254:81:71;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;1942:223:119:-;1994:26;2000:10;2012:7;1994:5;:26::i;:::-;2031:22;2087:6;2066:18;;2056:7;:28;:37;;;;;;;-1:-1:-1;2104:54:119;:26;2111:5;2104:26;2131:10;2056:37;2104:26;:54::i;:::-;1942:223;;:::o;3156:81:71:-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;1454:106:119:-;1535:18;;1454:106;:::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1699:237:119:-;1750:66;:30;1757:5;1750:30;1781:10;1801:4;1808:7;1750:30;:66::i;:::-;1827:20;1869:18;;1850:7;1860:6;1850:16;:37;;;;;;1827:60;;1898:31;1904:10;1916:12;1898:5;:31::i;1566:127::-;1644:18;:42;1566:127::o;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;1087:30:119:-;;;:::o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;9200:411:71:-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;:::-;9510:15;:42::i;:::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;966:167:78:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;8718:42::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;1734:250:77:-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3870:94:71:-;3937:12;:20;3870:94::o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256)":"b6b55f25","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getPricePerFullShare()":"77c7b8fc","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setPricePerFullShare(uint256)":"c3819fb6","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fullSharePrice\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newPricePerFullShare\",\"type\":\"uint256\"}],\"name\":\"setPricePerFullShare\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockReaperVault.sol\":\"MockReaperVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockReaperVault.sol\":{\"keccak256\":\"0xa90694059e03885aac300782de303454de0d29725cad2ae8b142dcf8a79bbb4e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d48d796bd7ee76cd8ed37bd160dccd5e5826705b1b8d04ca0f414f537f8af950\",\"dweb:/ipfs/QmVUsHpYkFHdrsMspB9v8guC8n2pVoXGC9txRURjLh55Eg\"]}},\"version\":1}"}},"contracts/test/MockRecoveryRateProviderPool.sol":{"MockRecoveryRateProviderPool":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRateProviders","outputs":[{"internalType":"contract IRateProvider[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b506040516108993803806108998339818101604052604081101561003457600080fd5b81516020830180516040519294929383019291908464010000000082111561005b57600080fd5b90830190602082018581111561007057600080fd5b825186602082028301116401000000008211171561008d57600080fd5b82525081516020918201928201910280838360005b838110156100ba5781810151838201526020016100a2565b505050509190910160405250503060805250507fba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b00000000000000000000000060a0526001600160601b0319606083901b1660c081905260e052805161011b906001906020840190610123565b5050506101a7565b828054828255906000526020600020908101928215610178579160200282015b8281111561017857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610143565b50610184929150610188565b5090565b5b808211156101845780546001600160a01b0319168155600101610189565b60805160a05160601c60c05160601c60e05160601c6106b96101e0600039806103e2525050806102c452508061025752506106b96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220038d1afdbd7278bb0961229c38c1f9603456dd6161742bff0389c2058b2551b964736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x899 CODESIZE SUB DUP1 PUSH2 0x899 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH32 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B000000000000000000000000 PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH1 0xE0 MSTORE DUP1 MLOAD PUSH2 0x11B SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x123 JUMP JUMPDEST POP POP POP PUSH2 0x1A7 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x178 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x178 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x143 JUMP JUMPDEST POP PUSH2 0x184 SWAP3 SWAP2 POP PUSH2 0x188 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x184 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x189 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B9 PUSH2 0x1E0 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3E2 MSTORE POP POP DUP1 PUSH2 0x2C4 MSTORE POP DUP1 PUSH2 0x257 MSTORE POP PUSH2 0x6B9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB DUP14 BYTE REVERT 0xBD PUSH19 0x78BB0961229C38C1F9603456DD6161742BFF03 DUP10 0xC2 SDIV DUP12 0x25 MLOAD 0xB9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1003:1189:120:-:0;;;1220:270;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1220:270:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1220:270:120;;;;;;-1:-1:-1;;1331:4:120;2049:46:56;;-1:-1:-1;;1725:14:52;;;-1:-1:-1;3046:14:53;;;-1:-1:-1;3046:14:53;;;;;1429::120::3;::::0;1453:30;;::::3;::::0;-1:-1:-1;;1453:30:120::3;::::0;::::3;::::0;::::3;:::i;:::-;;1220:270:::0;;1003:1189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:1189:120;-1:-1:-1;1003:1189:120;;;;;;;;;;;-1:-1:-1;1003:1189:120;;;;;;;-1:-1:-1;1003:1189:120;;;-1:-1:-1;1003:1189:120;:::i;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1003:1189:120;;;-1:-1:-1;1003:1189:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3873":[{"length":32,"start":708}],"4355":[{"length":32,"start":599}],"19213":[{"length":32,"start":994}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220038d1afdbd7278bb0961229c38c1f9603456dd6161742bff0389c2058b2551b964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB DUP14 BYTE REVERT 0xBD PUSH19 0x78BB0961229C38C1F9603456DD6161742BFF03 DUP10 0xC2 SDIV DUP12 0x25 MLOAD 0xB9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1003:1189:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1522:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3599:562:53;;;:::i;:::-;;2607:430:56;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:56;;;;:::i;:::-;;;;;;;;;;;;;;;;1752:80:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1838:101;;;:::i;1825:99:120:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4409:511:53;;;:::i;1522:122:120:-;1582:22;1623:14;1616:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1522:122;:::o;3599:562:53:-;2276:21:56;:19;:21::i;:::-;4049:26:53::1;:24;:26::i;:::-;4086:22;4103:4;4086:16;:22::i;:::-;4124:30;::::0;;4149:4:::1;4124:30:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;3599:562::o:0;2607:430:56:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1752:80:52:-;1819:6;1752:80;:::o;1838:101::-;1886:11;1916:16;:14;:16::i;:::-;1909:23;;1838:101;:::o;1825:99:120:-;1881:4;1904:13;;;1825:99;:::o;4409:511:53:-;2276:21:56;:19;:21::i;:::-;4809:23:53::1;:21;:23::i;:::-;4843;4860:5;4843:16;:23::i;:::-;4882:31;::::0;;4907:5:::1;4882:31:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4409:511::o:0;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;:::-;2420:181;:::o;5767:119:53:-;5827:52;5837:16;:14;:16::i;:::-;5836:17;12490:3:12;5827:8:53;:52::i;:::-;5767:119::o;1930:98:120:-;1998:13;:23;;;;;;;;;;;;;1930:98::o;1680:117::-;1738:11;1768:6;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1768:22:120;;-1:-1:-1;1680:117:120;:::o;5569:119:53:-;5626:55;5635:16;:14;:16::i;:::-;12548:3:12;5626:8:53;:55::i;1945:544:52:-;2033:4;1639:42;2054:10;:8;:10::i;:::-;:29;;;;2053:63;;;;;2088:28;2107:8;2088:18;:28::i;:::-;2049:434;;;2248:10;:8;:10::i;:::-;2234:24;;:10;:24;;;2227:31;;;;2049:434;2411:16;:14;:16::i;:::-;:27;;;2439:8;2449:7;2466:4;2411:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2411:61:52;;-1:-1:-1;2049:434:52;1945:544;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;2495:103:52:-;-1:-1:-1;2563:4:52;;2495:103::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8","getRateProviders()":"238a2d59","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateProviders\",\"outputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disableRecoveryMode()\":{\"details\":\"Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly necessary.\"},\"enableRecoveryMode()\":{\"details\":\"Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may perform certain operations in a \\\"safer\\\" manner that is less likely to fail, in an attempt to keep the pool running, even in a pathological state. Unlike the Pause operation, which is only available during a short window after factory deployment, Recovery Mode can always be enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getRateProviders()\":{\"details\":\"Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider for that token.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disable recovery mode, which disables the special safe exit path for LPs.\"},\"enableRecoveryMode()\":{\"notice\":\"Enable recovery mode, which enables a special safe exit path for LPs.\"},\"inRecoveryMode()\":{\"notice\":\"Override to check storage and return whether the pool is in Recovery Mode\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRecoveryRateProviderPool.sol\":\"MockRecoveryRateProviderPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0x614be1c287eeee041691cccf080f232469b74999d31b84e1d1b43dcf823c9c9d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://07dc2f5687c980c9b20da45e359a5b31be35a3dd6069c7bd94e524c5abdea0d5\",\"dweb:/ipfs/QmTMdUyYoHh6GRnUf8yuKoXMtBUhQsQzPoYdcjwVCK19Fb\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRecoveryRateProviderPool.sol\":{\"keccak256\":\"0x688d73b77df349e28d8c36e29a2ad9ecae1fc15789e7e1450fd3ae5edb83db00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5edf723cce0fa989a4507a6a11c451feeb480764d13b8bd8242b4384dbf0d7c4\",\"dweb:/ipfs/QmRDQ39yEtfGKZaSXNFDhW5bLWTpuTfprZC6CdqjdjkaJd\"]}},\"version\":1}"}},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"MockRecoveryRateProviderPoolFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"},{"internalType":"contract IProtocolFeePercentagesProvider","name":"protocolFeeProvider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseConfiguration","outputs":[{"internalType":"uint256","name":"pauseWindowDuration","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodDuration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeePercentagesProvider","outputs":[{"internalType":"contract IProtocolFeePercentagesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101c06040523480156200001257600080fd5b50604051620017da380380620017da833981016040819052620000359162000242565b81816276a70062278d0060405180602001620000519062000234565b601f1982820381018352601f9091011660405280518390839087903090859060006002820460a081905280830360e081905281855290915083620000a18162000155602090811b6200048417901c565b60601b6001600160601b0319166080528285018051838252620000d08262000155602090811b6200048417901c565b6001600160601b0319606091821b811660c0529690935290526101009590955250509290911b909116610120525062000113630163f500831115610194620001a9565b620001276276a700821115610195620001a9565b6101408290526101605242016101805250505060601b6001600160601b0319166101a0525062000296915050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f09084529150620001a36001600160a01b03831615156101ac620001a9565b50919050565b81620001ba57620001ba81620001be565b5050565b620001d0816210905360ea1b620001d3565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6108998062000f4183390190565b6000806040838503121562000255578182fd5b8251620002628162000280565b6020840151909250620002758162000280565b809150509250929050565b6001600160a01b0381168114620001d057600080fd5b60805160601c60a05160c05160601c60e051610100516101205160601c6101405161016051610180516101a05160601c610c236200031e6000398061036552508061020c5280610235525080610259525050806103db52508061038b5250806104eb5250806101e3528061056752508061050c5250806101c252806105435250610c236000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80636634b75311610081578063851c1bb31161005b578063851c1bb3146101715780638d928af814610191578063aaabadc514610199576100c8565b80636634b753146101415780636c57f5a914610161578063739238d614610169576100c8565b80632da47c40116100b25780632da47c40146101015780632f2770db146101175780634c848f7314610121576100c8565b8062c194db146100cd578063174481fa146100eb575b600080fd5b6100d56101a1565b6040516100e29190610abe565b60405180910390f35b6100f36101c0565b6040516100e2929190610a57565b610109610206565b6040516100e2929190610b96565b61011f61028d565b005b61013461012f3660046108d9565b6102f2565b6040516100e29190610a36565b61015461014f3660046108b6565b61032f565b6040516100e29190610a7e565b61015461035a565b610134610363565b61018461017f3660046109aa565b610387565b6040516100e29190610a89565b6101346103d9565b6101346103fd565b60606101bb604051806020016040528060008152506104e3565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561027f57807f00000000000000000000000000000000000000000000000000000000000000000392507f00000000000000000000000000000000000000000000000000000000000000009150610288565b60009250600091505b509091565b6102956105bc565b61029d610605565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d5090600090a1565b60006103266102ff6103d9565b84604051602001610311929190610b2f565b6040516020818303038152906040528361061a565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60015460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016103bc929190610a06565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006104076103d9565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb91906109ea565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f090845291506104dd73ffffffffffffffffffffffffffffffffffffffff831615156101ac6106b0565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016105ae8183866106c2565b505050505050505050919050565b60006105eb6000357fffffffff0000000000000000000000000000000000000000000000000000000016610387565b90506106026105fa823361073c565b6101916106b0565b50565b61061861061061035a565b1560d36106b0565b565b6000610624610605565b600061063084846107d2565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a29392505050565b816106be576106be8161081c565b5050565b5b602081106107005781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016106c3565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60006107466103fd565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161078293929190610a92565b60206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061098a565b600060606107df846104e3565b90506000838251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610814573d6000803e3d6000fd5b949350505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610602917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803561032981610bcb565b6000602082840312156108c7578081fd5b81356108d281610bcb565b9392505050565b600080604083850312156108eb578081fd5b823567ffffffffffffffff80821115610902578283fd5b818501915085601f830112610915578283fd5b813581811115610923578384fd5b60209150818102610935838201610ba4565b8281528381019085850183870186018b101561094f578788fd5b8796505b84871015610979576109658b826108ab565b835260019690960195918501918501610953565b509997909301359750505050505050565b60006020828403121561099b578081fd5b815180151581146108d2578182fd5b6000602082840312156109bb578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d2578182fd5b6000602082840312156109fb578081fd5b81516108d281610bcb565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b81811015610aea57858101830151858201604001528201610ace565b81811115610afb5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006040820173ffffffffffffffffffffffffffffffffffffffff808616845260206040818601528286518085526060870191508288019450855b81811015610b88578551851683529483019491830191600101610b6a565b509098975050505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610bc357600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461060257600080fdfea2646970667358221220cb0b7ae41ef36593e9fce4f8f6207b1ce4b0f2890c5dc1fc92bd72c412928ab264736f6c6343000701003361010060405234801561001157600080fd5b506040516108993803806108998339818101604052604081101561003457600080fd5b81516020830180516040519294929383019291908464010000000082111561005b57600080fd5b90830190602082018581111561007057600080fd5b825186602082028301116401000000008211171561008d57600080fd5b82525081516020918201928201910280838360005b838110156100ba5781810151838201526020016100a2565b505050509190910160405250503060805250507fba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b00000000000000000000000060a0526001600160601b0319606083901b1660c081905260e052805161011b906001906020840190610123565b5050506101a7565b828054828255906000526020600020908101928215610178579160200282015b8281111561017857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610143565b50610184929150610188565b5090565b5b808211156101845780546001600160a01b0319168155600101610189565b60805160a05160601c60c05160601c60e05160601c6106b96101e0600039806103e2525050806102c452508061025752506106b96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220038d1afdbd7278bb0961229c38c1f9603456dd6161742bff0389c2058b2551b964736f6c63430007010033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17DA CODESIZE SUB DUP1 PUSH3 0x17DA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x242 JUMP JUMPDEST DUP2 DUP2 PUSH3 0x76A700 PUSH3 0x278D00 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x51 SWAP1 PUSH3 0x234 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x0 PUSH1 0x2 DUP3 DIV PUSH1 0xA0 DUP2 SWAP1 MSTORE DUP1 DUP4 SUB PUSH1 0xE0 DUP2 SWAP1 MSTORE DUP2 DUP6 MSTORE SWAP1 SWAP2 POP DUP4 PUSH3 0xA1 DUP2 PUSH3 0x155 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x484 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE DUP3 DUP6 ADD DUP1 MLOAD DUP4 DUP3 MSTORE PUSH3 0xD0 DUP3 PUSH3 0x155 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x484 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP7 SWAP1 SWAP4 MSTORE SWAP1 MSTORE PUSH2 0x100 SWAP6 SWAP1 SWAP6 MSTORE POP POP SWAP3 SWAP1 SWAP2 SHL SWAP1 SWAP2 AND PUSH2 0x120 MSTORE POP PUSH3 0x113 PUSH4 0x163F500 DUP4 GT ISZERO PUSH2 0x194 PUSH3 0x1A9 JUMP JUMPDEST PUSH3 0x127 PUSH3 0x76A700 DUP3 GT ISZERO PUSH2 0x195 PUSH3 0x1A9 JUMP JUMPDEST PUSH2 0x140 DUP3 SWAP1 MSTORE PUSH2 0x160 MSTORE TIMESTAMP ADD PUSH2 0x180 MSTORE POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x1A0 MSTORE POP PUSH3 0x296 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH3 0x1A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH3 0x1A9 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH3 0x1BA JUMPI PUSH3 0x1BA DUP2 PUSH3 0x1BE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x1D0 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x1D3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x899 DUP1 PUSH3 0xF41 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x255 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x262 DUP2 PUSH3 0x280 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x275 DUP2 PUSH3 0x280 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x60 SHR PUSH2 0xC23 PUSH3 0x31E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x365 MSTORE POP DUP1 PUSH2 0x20C MSTORE DUP1 PUSH2 0x235 MSTORE POP DUP1 PUSH2 0x259 MSTORE POP POP DUP1 PUSH2 0x3DB MSTORE POP DUP1 PUSH2 0x38B MSTORE POP DUP1 PUSH2 0x4EB MSTORE POP DUP1 PUSH2 0x1E3 MSTORE DUP1 PUSH2 0x567 MSTORE POP DUP1 PUSH2 0x50C MSTORE POP DUP1 PUSH2 0x1C2 MSTORE DUP1 PUSH2 0x543 MSTORE POP PUSH2 0xC23 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6634B753 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x199 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH4 0x6634B753 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x739238D6 EQ PUSH2 0x169 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH4 0x2DA47C40 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2DA47C40 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x2F2770DB EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x4C848F73 EQ PUSH2 0x121 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH3 0xC194DB EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x174481FA EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP3 SWAP2 SWAP1 PUSH2 0xA57 JUMP JUMPDEST PUSH2 0x109 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x28D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x154 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x154 PUSH2 0x35A JUMP JUMPDEST PUSH2 0x134 PUSH2 0x363 JUMP JUMPDEST PUSH2 0x184 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x9AA JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA89 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x3D9 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x3FD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1BB PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4E3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 TIMESTAMP PUSH32 0x0 DUP2 LT ISZERO PUSH2 0x27F JUMPI DUP1 PUSH32 0x0 SUB SWAP3 POP PUSH32 0x0 SWAP2 POP PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x295 PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x29D PUSH2 0x605 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326 PUSH2 0x2FF PUSH2 0x3D9 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x311 SWAP3 SWAP2 SWAP1 PUSH2 0xB2F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 PUSH2 0x61A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3BC SWAP3 SWAP2 SWAP1 PUSH2 0xA06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x407 PUSH2 0x3D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x460 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x9EA JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH2 0x4DD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH2 0x6B0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH32 0x0 DUP2 DUP2 ADD DUP6 DUP2 ADD DUP5 DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP7 MSTORE DUP1 DUP6 MSTORE SWAP4 SWAP6 PUSH32 0x0 SWAP6 SWAP3 SWAP5 PUSH32 0x0 SWAP5 SWAP4 DUP9 ADD DUP7 PUSH1 0x0 DUP3 DUP11 EXTCODECOPY DUP5 PUSH1 0x0 DUP9 DUP4 ADD DUP9 EXTCODECOPY POP PUSH1 0x20 DUP10 DUP2 ADD SWAP1 DUP10 DUP6 ADD ADD PUSH2 0x5AE DUP2 DUP4 DUP7 PUSH2 0x6C2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EB PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x387 JUMP JUMPDEST SWAP1 POP PUSH2 0x602 PUSH2 0x5FA DUP3 CALLER PUSH2 0x73C JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6B0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x618 PUSH2 0x610 PUSH2 0x35A JUMP JUMPDEST ISZERO PUSH1 0xD3 PUSH2 0x6B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x624 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x630 DUP5 DUP5 PUSH2 0x7D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 SWAP1 LOG2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6BE JUMPI PUSH2 0x6BE DUP2 PUSH2 0x81C JUMP JUMPDEST POP POP JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x700 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x6C3 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x3FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x782 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x326 SWAP2 SWAP1 PUSH2 0x98A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x7DF DUP5 PUSH2 0x4E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x814 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x602 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x329 DUP2 PUSH2 0xBCB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8D2 DUP2 PUSH2 0xBCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x902 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x915 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x923 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP2 POP DUP2 DUP2 MUL PUSH2 0x935 DUP4 DUP3 ADD PUSH2 0xBA4 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP6 DUP6 ADD DUP4 DUP8 ADD DUP7 ADD DUP12 LT ISZERO PUSH2 0x94F JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x979 JUMPI PUSH2 0x965 DUP12 DUP3 PUSH2 0x8AB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x953 JUMP JUMPDEST POP SWAP10 SWAP8 SWAP1 SWAP4 ADD CALLDATALOAD SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x99B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8D2 DUP2 PUSH2 0xBCB JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAEA JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xACE JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xAFB JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB88 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xB6A JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB SIGNEXTEND PUSH27 0xE41EF36593E9FCE4F8F6207B1CE4B0F2890C5DC1FC92BD72C41292 DUP11 0xB2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x899 CODESIZE SUB DUP1 PUSH2 0x899 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH32 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B000000000000000000000000 PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xC0 DUP2 SWAP1 MSTORE PUSH1 0xE0 MSTORE DUP1 MLOAD PUSH2 0x11B SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x123 JUMP JUMPDEST POP POP POP PUSH2 0x1A7 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x178 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x178 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x143 JUMP JUMPDEST POP PUSH2 0x184 SWAP3 SWAP2 POP PUSH2 0x188 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x184 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x189 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B9 PUSH2 0x1E0 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3E2 MSTORE POP POP DUP1 PUSH2 0x2C4 MSTORE POP DUP1 PUSH2 0x257 MSTORE POP PUSH2 0x6B9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB DUP14 BYTE REVERT 0xBD PUSH19 0x78BB0961229C38C1F9603456DD6161742BFF03 DUP10 0xC2 SDIV DUP12 0x25 MLOAD 0xB9 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"938:762:121:-:0;;;1144:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1261:6;1281:19;1066:7;1130;1395:47;;;;;;;;:::i;:::-;-1:-1:-1;;1395:47:121;;;;;;;;;;;;;;1942:19:57;;2708:26:54;;2736:20;;2670:5;;1054:4:62;;1395:47:121;;1030:31:62;2336:1:57;1942:19;2317:20;2347:38;;;;2424:36;;;2470:38;;;;3172:40;;;2317:20;;-1:-1:-1;3172:40:57;3347:34;3172:40;3347:19;;;;;;;:34;;:::i;:::-;3322:59;;-1:-1:-1;;;;;;3322:59:57;;;3920:36;;;3982:20;;4015:40;;;4240:34;3920:36;4240:19;;;;;;;:34;;:::i;:::-;-1:-1:-1;;;;;;4215:59:57;;;;;;;;4429:39;;;;4481:32;;2049:46:56;;;;;-1:-1:-1;;1073:14:62;;;;;;;::::1;::::0;-1:-1:-1;2246:151:55;5493:8:63;2268:73:55;;;10435:3:12;2246:8:55;:151::i;:::-;2407:147;5560:7:63;2429:68:55;;;10499:3:12;2407:8:55;:147::i;:::-;2565:56;;;;2631:44;;2713:15;:44;2686:71;;-1:-1:-1;;;2772:42:54::3;::::0;-1:-1:-1;;;;;;2772:42:54;::::3;::::0;-1:-1:-1;938:762:121;;-1:-1:-1;;938:762:121;2737:1366:58;3232:11;;2514:66;3465:34;;;2790:19;;3768:2;3752:19;;3238:4;2790:19;3736:36;3872:24;;;3721:51;-1:-1:-1;4030:66:58;-1:-1:-1;;;;;4039:25:58;;;;11974:3:12;4030:8:58;:66::i;:::-;2737:1366;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:12;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:12;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;938:762:121;;;;;;;;:::o;397:509:-1:-;;;584:2;572:9;563:7;559:23;555:32;552:2;;;-1:-1;;590:12;552:2;325:6;319:13;337:48;379:5;337:48;:::i;:::-;768:2;858:22;;123:13;642:89;;-1:-1;141:73;123:13;141:73;:::i;:::-;776:114;;;;546:360;;;;;:::o;1390:197::-;-1:-1;;;;;1324:54;;1489:75;;1479:2;;1578:1;;1568:12;1473:114;938:762:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4120":[{"length":32,"start":869}],"4264":[{"length":32,"start":601}],"4266":[{"length":32,"start":524},{"length":32,"start":565}],"4355":[{"length":32,"start":907}],"4430":[{"length":32,"start":450},{"length":32,"start":1347}],"4432":[{"length":32,"start":1292}],"4434":[{"length":32,"start":483},{"length":32,"start":1383}],"4436":[{"length":32,"start":1259}],"5180":[{"length":32,"start":987}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c85760003560e01c80636634b75311610081578063851c1bb31161005b578063851c1bb3146101715780638d928af814610191578063aaabadc514610199576100c8565b80636634b753146101415780636c57f5a914610161578063739238d614610169576100c8565b80632da47c40116100b25780632da47c40146101015780632f2770db146101175780634c848f7314610121576100c8565b8062c194db146100cd578063174481fa146100eb575b600080fd5b6100d56101a1565b6040516100e29190610abe565b60405180910390f35b6100f36101c0565b6040516100e2929190610a57565b610109610206565b6040516100e2929190610b96565b61011f61028d565b005b61013461012f3660046108d9565b6102f2565b6040516100e29190610a36565b61015461014f3660046108b6565b61032f565b6040516100e29190610a7e565b61015461035a565b610134610363565b61018461017f3660046109aa565b610387565b6040516100e29190610a89565b6101346103d9565b6101346103fd565b60606101bb604051806020016040528060008152506104e3565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b600080427f000000000000000000000000000000000000000000000000000000000000000081101561027f57807f00000000000000000000000000000000000000000000000000000000000000000392507f00000000000000000000000000000000000000000000000000000000000000009150610288565b60009250600091505b509091565b6102956105bc565b61029d610605565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d5090600090a1565b60006103266102ff6103d9565b84604051602001610311929190610b2f565b6040516020818303038152906040528361061a565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60015460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016103bc929190610a06565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006104076103d9565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb91906109ea565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f090845291506104dd73ffffffffffffffffffffffffffffffffffffffff831615156101ac6106b0565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c50602089810190898501016105ae8183866106c2565b505050505050505050919050565b60006105eb6000357fffffffff0000000000000000000000000000000000000000000000000000000016610387565b90506106026105fa823361073c565b6101916106b0565b50565b61061861061061035a565b1560d36106b0565b565b6000610624610605565b600061063084846107d2565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a29392505050565b816106be576106be8161081c565b5050565b5b602081106107005781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016106c3565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b60006107466103fd565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161078293929190610a92565b60206040518083038186803b15801561079a57600080fd5b505afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061098a565b600060606107df846104e3565b90506000838251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610814573d6000803e3d6000fd5b949350505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610602917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803561032981610bcb565b6000602082840312156108c7578081fd5b81356108d281610bcb565b9392505050565b600080604083850312156108eb578081fd5b823567ffffffffffffffff80821115610902578283fd5b818501915085601f830112610915578283fd5b813581811115610923578384fd5b60209150818102610935838201610ba4565b8281528381019085850183870186018b101561094f578788fd5b8796505b84871015610979576109658b826108ab565b835260019690960195918501918501610953565b509997909301359750505050505050565b60006020828403121561099b578081fd5b815180151581146108d2578182fd5b6000602082840312156109bb578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108d2578182fd5b6000602082840312156109fb578081fd5b81516108d281610bcb565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b81811015610aea57858101830151858201604001528201610ace565b81811115610afb5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006040820173ffffffffffffffffffffffffffffffffffffffff808616845260206040818601528286518085526060870191508288019450855b81811015610b88578551851683529483019491830191600101610b6a565b509098975050505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610bc357600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461060257600080fdfea2646970667358221220cb0b7ae41ef36593e9fce4f8f6207b1ce4b0f2890c5dc1fc92bd72c412928ab264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6634B753 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x199 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH4 0x6634B753 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x739238D6 EQ PUSH2 0x169 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH4 0x2DA47C40 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2DA47C40 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x2F2770DB EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x4C848F73 EQ PUSH2 0x121 JUMPI PUSH2 0xC8 JUMP JUMPDEST DUP1 PUSH3 0xC194DB EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x174481FA EQ PUSH2 0xEB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP3 SWAP2 SWAP1 PUSH2 0xA57 JUMP JUMPDEST PUSH2 0x109 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP3 SWAP2 SWAP1 PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x28D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x8D9 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x154 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x154 PUSH2 0x35A JUMP JUMPDEST PUSH2 0x134 PUSH2 0x363 JUMP JUMPDEST PUSH2 0x184 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x9AA JUMP JUMPDEST PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE2 SWAP2 SWAP1 PUSH2 0xA89 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x3D9 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x3FD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1BB PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4E3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 TIMESTAMP PUSH32 0x0 DUP2 LT ISZERO PUSH2 0x27F JUMPI DUP1 PUSH32 0x0 SUB SWAP3 POP PUSH32 0x0 SWAP2 POP PUSH2 0x288 JUMP JUMPDEST PUSH1 0x0 SWAP3 POP PUSH1 0x0 SWAP2 POP JUMPDEST POP SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x295 PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x29D PUSH2 0x605 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326 PUSH2 0x2FF PUSH2 0x3D9 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x311 SWAP3 SWAP2 SWAP1 PUSH2 0xB2F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 PUSH2 0x61A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3BC SWAP3 SWAP2 SWAP1 PUSH2 0xA06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x407 PUSH2 0x3D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x460 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x9EA JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH2 0x4DD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH2 0x6B0 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH32 0x0 DUP2 DUP2 ADD DUP6 DUP2 ADD DUP5 DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP7 MSTORE DUP1 DUP6 MSTORE SWAP4 SWAP6 PUSH32 0x0 SWAP6 SWAP3 SWAP5 PUSH32 0x0 SWAP5 SWAP4 DUP9 ADD DUP7 PUSH1 0x0 DUP3 DUP11 EXTCODECOPY DUP5 PUSH1 0x0 DUP9 DUP4 ADD DUP9 EXTCODECOPY POP PUSH1 0x20 DUP10 DUP2 ADD SWAP1 DUP10 DUP6 ADD ADD PUSH2 0x5AE DUP2 DUP4 DUP7 PUSH2 0x6C2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EB PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x387 JUMP JUMPDEST SWAP1 POP PUSH2 0x602 PUSH2 0x5FA DUP3 CALLER PUSH2 0x73C JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6B0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x618 PUSH2 0x610 PUSH2 0x35A JUMP JUMPDEST ISZERO PUSH1 0xD3 PUSH2 0x6B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x624 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x630 DUP5 DUP5 PUSH2 0x7D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 SWAP1 LOG2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6BE JUMPI PUSH2 0x6BE DUP2 PUSH2 0x81C JUMP JUMPDEST POP POP JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x700 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x6C3 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x746 PUSH2 0x3FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x782 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x326 SWAP2 SWAP1 PUSH2 0x98A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x7DF DUP5 PUSH2 0x4E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x814 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x602 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x329 DUP2 PUSH2 0xBCB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8D2 DUP2 PUSH2 0xBCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x902 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x915 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x923 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP2 POP DUP2 DUP2 MUL PUSH2 0x935 DUP4 DUP3 ADD PUSH2 0xBA4 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP6 DUP6 ADD DUP4 DUP8 ADD DUP7 ADD DUP12 LT ISZERO PUSH2 0x94F JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x979 JUMPI PUSH2 0x965 DUP12 DUP3 PUSH2 0x8AB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x953 JUMP JUMPDEST POP SWAP10 SWAP8 SWAP1 SWAP4 ADD CALLDATALOAD SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x99B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9BB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8D2 DUP2 PUSH2 0xBCB JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAEA JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xACE JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xAFB JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB88 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xB6A JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xBC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB SIGNEXTEND PUSH27 0xE41EF36593E9FCE4F8F6207B1CE4B0F2890C5DC1FC92BD72C41292 DUP11 0xB2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"938:762:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:114:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4663:167;;;:::i;:::-;;;;;;;;:::i;3123:885:55:-;;;:::i;:::-;;;;;;;;:::i;3057:143:54:-;;;:::i;:::-;;1527:171:121;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2827:127:54:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2960:91::-;;;:::i;3309:143::-;;;:::i;2607:430:56:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1158:79:62:-;;;:::i;1297:109::-;;;:::i;4928:114:57:-;4976:12;5007:28;;;;;;;;;;;;;:24;:28::i;:::-;5000:35;;4928:114;:::o;4663:167::-;4776:22;4800;4663:167;;:::o;3123:885:55:-;3177:27;;3268:15;3311:24;3297:38;;3293:709;;;3634:11;3607:24;:38;3585:60;;3717:21;3694:44;;3293:709;;;3952:1;3930:23;;3990:1;3967:24;;3293:709;3123:885;;;:::o;3057:143:54:-;2276:21:56;:19;:21::i;:::-;3117:16:54::1;:14;:16::i;:::-;3156:4;3144:16:::0;;;::::1;::::0;::::1;::::0;;3176:17:::1;::::0;::::1;::::0;3144:9:::1;::::0;3176:17:::1;3057:143::o:0;1527:171:121:-;1613:7;1639:52;1658:10;:8;:10::i;:::-;1670:13;1647:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1686:4;1639:7;:52::i;:::-;1632:59;;1527:171;;;;;:::o;2827:127:54:-;2923:24;;2900:4;2923:24;;;;;;;;;;;;;;2827:127::o;2960:91::-;3035:9;;;;2960:91;:::o;3309:143::-;3425:20;3309:143;:::o;2607:430:56:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1158:79:62:-;1224:6;1158:79;:::o;1297:109::-;1343:11;1373:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2737:1366:58:-;3232:11;;2514:66;3465:34;;;2790:19;;3768:2;3752:19;;3238:4;2790:19;3736:36;3872:24;;;3721:51;-1:-1:-1;4030:66:58;4039:25;;;;;11974:3:12;4030:8:58;:66::i;:::-;2737:1366;;;;:::o;5172:2692:57:-;6433:22;;6807:4;6801:11;;6300:18;6180;6356:37;;;6485:38;;;6838:28;;;6862:2;6838:28;;;6825:42;;;6960:22;;;6801:11;;6120:22;;6180:18;;6240:22;;6300:18;7086:13;;6180:18;6088:29;7086:13;6120:22;7112:67;7265:17;7262:1;7242:17;7231:9;7227:33;7204:21;7192:91;-1:-1:-1;7675:2:57;7654:24;;;;7721:36;;;;7777:80;7721:36;7654:24;7837:19;7777:7;:80::i;:::-;5172:2692;;;;;;;;;;;;:::o;2420:181:56:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10270:3:12;2524:8:56;:70::i;:::-;2420:181;:::o;3206:97:54:-;3256:40;3266:12;:10;:12::i;:::-;3265:13;6583:3:12;3256:8:54;:40::i;:::-;3206:97::o;3458:297::-;3554:7;3573:16;:14;:16::i;:::-;3600:12;3615:36;3629:15;3646:4;3615:13;:36::i;:::-;3662:24;;;:18;:24;;;;;;;;;;;:31;;;;3689:4;3662:31;;;3709:17;3600:51;;-1:-1:-1;3662:24:54;;3709:17;;3662:18;3709:17;3744:4;3458:297;-1:-1:-1;;;3458:297:54:o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;8892:590:57:-;9052:165;9066:2;9059:3;:9;9052:165;;9135:10;;9122:24;;9181:2;9173:10;;;;9197:9;;;;9070;;9052:165;;;9345:10;;9400:11;;9280:2;:8;;;;9274:3;:15;:19;;9357:9;;9341:26;;;9396:22;;9444:21;9431:35;;9312:164::o;1412:178:62:-;1500:4;1523:15;:13;:15::i;:::-;:26;;;1550:8;1560:7;1577:4;1523:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8105:651:57:-;8192:7;8211:25;8239:41;8264:15;8239:24;:41::i;:::-;8211:69;;8291:19;8413:4;8398:12;8392:19;8387:2;8373:12;8369:21;8366:1;8358:60;8343:75;-1:-1:-1;8442:25:57;;;8438:283;;8636:16;8633:1;;8615:38;8680:16;8633:1;8670:27;8597:114;8738:11;8105:651;-1:-1:-1;;;;8105:651:57:o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;1541:172:-1;1629:20;;1654:54;1629:20;1654:54;:::i;1720:241::-;;1824:2;1812:9;1803:7;1799:23;1795:32;1792:2;;;-1:-1;;1830:12;1792:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1882:63;1786:175;-1:-1;;;1786:175::o;1968:544::-;;;2135:2;2123:9;2114:7;2110:23;2106:32;2103:2;;;-1:-1;;2141:12;2103:2;2199:17;2186:31;2237:18;;2229:6;2226:30;2223:2;;;-1:-1;;2259:12;2223:2;2371:6;2360:9;2356:22;;;313:3;306:4;298:6;294:17;290:27;280:2;;-1:-1;;321:12;280:2;368:6;355:20;2237:18;10606:6;10603:30;10600:2;;;-1:-1;;10636:12;10600:2;10681:4;;;;10673:6;10669:17;390:101;10681:4;10669:17;10734:15;390:101;:::i;:::-;519:21;;;576:14;;;;551:17;;;656:27;;;;;653:36;-1:-1;650:2;;;-1:-1;;692:12;650:2;-1:-1;718:10;;712:227;737:6;734:1;731:13;712:227;;;817:58;871:3;859:10;817:58;:::i;:::-;805:71;;759:1;752:9;;;;;890:14;;;;918;;712:227;;;-1:-1;2279:109;2464:22;;;;1155:20;;-1:-1;;;;;;;2097:415::o;2519:257::-;;2631:2;2619:9;2610:7;2606:23;2602:32;2599:2;;;-1:-1;;2637:12;2599:2;1034:6;1028:13;14604:5;11896:13;11889:21;14582:5;14579:32;14569:2;;-1:-1;;14615:12;2783:239;;2886:2;2874:9;2865:7;2861:23;2857:32;2854:2;;;-1:-1;;2892:12;2854:2;1304:6;1291:20;12073:66;14850:5;12062:78;14826:5;14823:34;14813:2;;-1:-1;;14861:12;3029:303;;3164:2;3152:9;3143:7;3139:23;3135:32;3132:2;;;-1:-1;;3170:12;3132:2;1464:6;1458:13;1476:53;1523:5;1476:53;:::i;6261:387::-;4714:37;;;12073:66;12062:78;6512:2;6503:12;;5009:56;6612:11;;;6403:245::o;6655:222::-;12462:42;12451:54;;;;3634:37;;6782:2;6767:18;;6753:124::o;6884:333::-;12462:42;12451:54;;;3634:37;;12451:54;;7203:2;7188:18;;3634:37;7039:2;7024:18;;7010:207::o;7224:210::-;11896:13;;11889:21;4597:34;;7345:2;7330:18;;7316:118::o;7441:222::-;4714:37;;;7568:2;7553:18;;7539:124::o;7670:444::-;4714:37;;;12462:42;12451:54;;;8017:2;8002:18;;3634:37;12451:54;8100:2;8085:18;;3634:37;7853:2;7838:18;;7824:290::o;8121:306::-;;8266:2;;8287:17;8280:47;5219:5;11069:12;11505:6;8266:2;8255:9;8251:18;11493:19;-1:-1;13929:101;13943:6;13940:1;13937:13;13929:101;;;14010:11;;;;;14004:18;13991:11;;;11533:14;13991:11;13984:39;13958:10;;13929:101;;;14045:6;14042:1;14039:13;14036:2;;;-1:-1;11533:14;14101:6;8255:9;14092:16;;14085:27;14036:2;-1:-1;14382:2;14362:14;14378:7;14358:28;5376:39;;;;11533:14;5376:39;;8237:190;-1:-1;;;8237:190::o;9271:553::-;;9512:2;9501:9;9497:18;12462:42;;11812:5;12451:54;5525:3;5518:70;9645:2;9512;9645;9634:9;9630:18;9623:48;9685:129;3964:5;11069:12;11505:6;11500:3;11493:19;11533:14;9501:9;11533:14;3976:93;;9645:2;4161:5;10902:14;4173:21;;-1:-1;4200:302;4225:6;4222:1;4219:13;4200:302;;;4286:13;;12451:54;;5518:70;;11348:14;;;;3535;;;;4247:1;4240:9;4200:302;;;-1:-1;9677:137;;9483:341;-1:-1;;;;;;;;9483:341::o;9831:333::-;4714:37;;;10150:2;10135:18;;4714:37;9986:2;9971:18;;9957:207::o;10171:256::-;10233:2;10227:9;10259:17;;;10334:18;10319:34;;10355:22;;;10316:62;10313:2;;;10391:1;;10381:12;10313:2;10233;10400:22;10211:216;;-1:-1;10211:216::o;14399:117::-;12462:42;14486:5;12451:54;14461:5;14458:35;14448:2;;14507:1;;14497:12"},"methodIdentifiers":{"create(address[],bytes32)":"4c848f73","disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa","getPauseConfiguration()":"2da47c40","getProtocolFeePercentagesProvider()":"739238d6","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"protocolFeeProvider\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseConfiguration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pauseWindowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeePercentagesProvider\",\"outputs\":[{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"},\"getPauseConfiguration()\":{\"details\":\"Returns the current `TemporarilyPausable` configuration that will be applied to Pools created by this factory. `pauseWindowDuration` will decrease over time until it reaches zero, at which point both it and `bufferPeriodDuration` will be zero forever, meaning deployed Pools will not be pausable.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRecoveryRateProviderPoolFactory.sol\":\"MockRecoveryRateProviderPoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0x614be1c287eeee041691cccf080f232469b74999d31b84e1d1b43dcf823c9c9d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://07dc2f5687c980c9b20da45e359a5b31be35a3dd6069c7bd94e524c5abdea0d5\",\"dweb:/ipfs/QmTMdUyYoHh6GRnUf8yuKoXMtBUhQsQzPoYdcjwVCK19Fb\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":{\"keccak256\":\"0xd5f7ef8a35322c19a6644eca1b6210acd82fdb0e2ae2175fb5cc757fd89e6d01\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3ba8405b70fb4d811b8408bf0071403f9a63d52b0bd824978b7edb9d515ddf74\",\"dweb:/ipfs/QmfSLZzShEurmazJsEKY8xhmZtRJCeomMcSaGdHUAN5Bmt\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9b1eb9d6fcdb6ff7170337e021b4cb76116ec8c4cb12d51bec2206fe8b546016\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b26fa997ae9cc135d6236b1a41d164052bf44c2da6e432fb3653f8d485abd36\",\"dweb:/ipfs/QmcAWPdk4Bwq9PKjAvWdfuV8dRd2fS7EEHCxotDkh1Y522\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xd13a9c66440204fdd94c422e4759e323d396c1bd1ee8d3858f33917cc65e60d6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://052a2c0319dc342444101a99bd91527c1c33d38e5bf3037ede11299a6a2a6e41\",\"dweb:/ipfs/QmSYSGZ4UpSAvEJbd4zSjRAzfie1GkBgByvCei46JxY5Zh\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0xb903f5d3f429ba5322a01af059cfd5b46f87d9a352a0064598c19e0536f150bc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0c5a8ed08c0ec6664e66b1e21d5536bf80606dad8ba428a7ae8146d911a51e3\",\"dweb:/ipfs/QmPqX5qD9UnZovLexNZettjyE98gjcQzGjRFodb2m82VVE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/TemporarilyPausable.sol\":{\"keccak256\":\"0x5931cd930a053c327257b9d246c583fe195b2ac5adffe3485e1be354b3ec298b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a0f50399308e97a4c560397bc0599ff77100ac472a6281d894d1ad536b61e1df\",\"dweb:/ipfs/QmeqJpptHFPnvtAHMJDfCYPB2PLnDrFUMLi2fNb3njmpt7\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRecoveryRateProviderPool.sol\":{\"keccak256\":\"0x688d73b77df349e28d8c36e29a2ad9ecae1fc15789e7e1450fd3ae5edb83db00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5edf723cce0fa989a4507a6a11c451feeb480764d13b8bd8242b4384dbf0d7c4\",\"dweb:/ipfs/QmRDQ39yEtfGKZaSXNFDhW5bLWTpuTfprZC6CdqjdjkaJd\"]},\"contracts/test/MockRecoveryRateProviderPoolFactory.sol\":{\"keccak256\":\"0x95a0a5f28fe4d8c5ec080f09c08a77be1096c4573423473bfc0080385a65cfe3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9bdfaca3384b8c0587a8a88ad63a73bdf35942071cded4077e157542fd5cb9c6\",\"dweb:/ipfs/QmT6m5kWuEedneyQEhh1c8G1VV16xdUmnLbFGwWGW6a6CZ\"]}},\"version\":1}"}},"contracts/test/MockRevertingRateProvider.sol":{"MockRevertingRateProvider":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"revertOnGetRate","type":"bool"}],"name":"setRevertOnGetRate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50670de0b6b3a76400006000556001805460ff19169055610159806100366000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063679aefce1461003b578063fa38825c14610055575b600080fd5b610043610076565b60408051918252519081900360200190f35b6100746004803603602081101561006b57600080fd5b503515156100f2565b005b60015460009060ff16156100eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6765745261746520726576657274000000000000000000000000000000000000604482015290519081900360640190fd5b5060005490565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea264697066735822122012eef802243711b5ed46c8de339f717c11b5231d579232fae8cf409738c88c0764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x159 DUP1 PUSH2 0x36 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFA38825C EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6765745261746520726576657274000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xEE 0xF8 MUL 0x24 CALLDATACOPY GT 0xB5 0xED CHAINID 0xC8 0xDE CALLER SWAP16 PUSH18 0x7C11B5231D579232FAE8CF409738C88C0764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"865:503:122:-:0;;;987:87;;;;;;;;;-1:-1:-1;988:4:66;1011:5:122;:22;1043:16;:24;;-1:-1:-1;;1043:24:122;;;865:503;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063679aefce1461003b578063fa38825c14610055575b600080fd5b610043610076565b60408051918252519081900360200190f35b6100746004803603602081101561006b57600080fd5b503515156100f2565b005b60015460009060ff16156100eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6765745261746520726576657274000000000000000000000000000000000000604482015290519081900360640190fd5b5060005490565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea264697066735822122012eef802243711b5ed46c8de339f717c11b5231d579232fae8cf409738c88c0764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFA38825C EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6765745261746520726576657274000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xEE 0xF8 MUL 0x24 CALLDATACOPY GT 0xB5 0xED CHAINID 0xC8 0xDE CALLER SWAP16 PUSH18 0x7C11B5231D579232FAE8CF409738C88C0764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"865:503:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1080:170;;;:::i;:::-;;;;;;;;;;;;;;;;1256:110;;;;;;;;;;;;;;;;-1:-1:-1;1256:110:122;;;;:::i;:::-;;1080:170;1154:16;;1131:7;;1154:16;;1150:71;;;1186:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1150:71;-1:-1:-1;1238:5:122;;1080:170;:::o;1256:110::-;1325:16;:34;;;;;;;;;;;;;1256:110::o"},"methodIdentifiers":{"getRate()":"679aefce","setRevertOnGetRate(bool)":"fa38825c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"revertOnGetRate\",\"type\":\"bool\"}],\"name\":\"setRevertOnGetRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRevertingRateProvider.sol\":\"MockRevertingRateProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRevertingRateProvider.sol\":{\"keccak256\":\"0x26fa3849ad3faddbfb7b2d622ea21a5fb1de7c43a99a1198f3131a75b9b0228b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4f3b362f2c32a41fe3347aed4beace5e0610c9fe2c61c86dd5c91cad85a13c1\",\"dweb:/ipfs/QmS3S4UZc2cEBwPbSongqNYazMeBcMxmmwZHCj85Swzmzv\"]}},\"version\":1}"}},"contracts/test/MockShareToken.sol":{"MockShareToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"silo","type":"address"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"silo","outputs":[{"internalType":"contract ISilo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101206040523480156200001257600080fd5b50604051620014f4380380620014f4833981810160405260a08110156200003857600080fd5b81019080805160405193929190846401000000008211156200005957600080fd5b9083019060208201858111156200006f57600080fd5b82516401000000008111828201881017156200008a57600080fd5b82525081516020918201929091019080838360005b83811015620000b95781810151838201526020016200009f565b50505050905090810190601f168015620000e75780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010b57600080fd5b9083019060208201858111156200012157600080fd5b82516401000000008111828201881017156200013c57600080fd5b82525081516020918201929091019080838360005b838110156200016b57818101518382015260200162000151565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060408181526020838101518483015160609095015184840190935260018452603160f81b828501528851909650939450909287928792879285928392909183918791620001ee916003919085019062000294565b5080516200020490600490602084019062000294565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c05262000257816200027e565b5050506001600160601b0319606092831b811660e052911b16610100525062000330915050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d757805160ff191683800117855562000307565b8280016001018555821562000307579182015b8281111562000307578251825591602001919060010190620002ea565b506200031592915062000319565b5090565b5b808211156200031557600081556001016200031a565b60805160a05160c05160e05160601c6101005160601c61117e620003766000398061070f525080610a11525080610e54525080610e96525080610e75525061117e6000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806379cc6790116100d8578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e14610579578063eb3beb29146105b4578063ed24911d146105bc57610182565b8063a457c2d7146104a9578063a9059cbb146104e2578063d505accf1461051b57610182565b80637ecebe00116100bd5780637ecebe001461043b57806390193b7c1461046e57806395d89b41146104a157610182565b806379cc6790146103c95780637c602bc21461040257610182565b80633644e5151161013a57806340c10f191161011457806340c10f191461033e57806342966c681461037957806370a082311461039657610182565b80633644e515146102cc57806338d52e0f146102d4578063395093511461030557610182565b806318160ddd1161016b57806318160ddd1461025157806323b872dd1461026b578063313ce567146102ae57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f6105c4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023d6004803603604081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610678565b604080519115158252519081900360200190f35b61025961068e565b60408051918252519081900360200190f35b61023d6004803603606081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610694565b6102b66106f5565b6040805160ff9092168252519081900360200190f35b6102596106fe565b6102dc61070d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61023d6004803603604081101561031b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610731565b6103776004803603604081101561035457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610774565b005b6103776004803603602081101561038f57600080fd5b5035610782565b610259600480360360208110156103ac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661078f565b610377600480360360408110156103df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b7565b6103776004803603604081101561041857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ed565b6102596004803603602081101561045157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107f7565b6102596004803603602081101561048457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610808565b61018f610830565b61023d600480360360408110156104bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108af565b61023d600480360360408110156104f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f5565b610377600480360360e081101561053157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610902565b6102596004803603604081101561058f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109d7565b6102dc610a0f565b610259610a33565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066e5780601f106106435761010080835404028352916020019161066e565b820191906000526020600020905b81548152906001019060200180831161065157829003601f168201915b5050505050905090565b6000610685338484610a3d565b50600192915050565b60025490565b60006106a1848484610aac565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546106eb9186916106e6908661019e610bd5565b610a3d565b5060019392505050565b60055460ff1690565b6000610708610a33565b905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106859185906106e69086610beb565b61077e8282610c04565b5050565b61078c3382610cbd565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006107d1826101a16107ca86336109d7565b9190610bd5565b90506107de833383610a3d565b6107e88383610cbd565b505050565b61077e8282610cbd565b600061080282610808565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066e5780601f106106435761010080835404028352916020019161066e565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106859185906106e6908661019f610bd5565b6000610685338484610aac565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109318c610808565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506109c288826109b9878787610dad565b886101f8610dec565b6109cd888888610a3d565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610708610e50565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ad073ffffffffffffffffffffffffffffffffffffffff84161515610198610f1b565b610af473ffffffffffffffffffffffffffffffffffffffff83161515610199610f1b565b610aff8383836107e8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610b3290826101a0610bd5565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b6e9082610beb565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610be48484111583610f1b565b5050900390565b6000828201610bfd8482101583610f1b565b9392505050565b610c10600083836107e8565b610c2a610c2582610c1f61068e565b90610beb565b610f29565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c5a9082610beb565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610ce173ffffffffffffffffffffffffffffffffffffffff8316151561019b610f1b565b610ced826000836107e8565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d2090826101b2610bd5565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d5b610c2582610d5561068e565b90610f2e565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610df785610f3c565b9050610e0d610e07878387610fa3565b83610f1b565b610e1c428410156101b8610f1b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610ebd6110b5565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161077e5761077e816110b9565b600255565b6000610bfd83836001610bd5565b6000610f46610e50565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610fb582516041146101b9610f1b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561102e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906110a957508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261078c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212200b2558a04d8f333eba233e5eba73789f7bf2d02400d77425ed6283ba7e5056ce64736f6c63430007010033","opcodes":"PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x14F4 CODESIZE SUB DUP1 PUSH3 0x14F4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x151 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x199 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD DUP5 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD DUP5 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP3 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 SWAP7 POP SWAP4 SWAP5 POP SWAP1 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1EE SWAP2 PUSH1 0x3 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x294 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x204 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x294 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x257 DUP2 PUSH3 0x27E JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP2 SHL AND PUSH2 0x100 MSTORE POP PUSH3 0x330 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2D7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x307 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x307 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x307 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2EA JUMP JUMPDEST POP PUSH3 0x315 SWAP3 SWAP2 POP PUSH3 0x319 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x315 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x31A JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x117E PUSH3 0x376 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x70F MSTORE POP DUP1 PUSH2 0xA11 MSTORE POP DUP1 PUSH2 0xE54 MSTORE POP DUP1 PUSH2 0xE96 MSTORE POP DUP1 PUSH2 0xE75 MSTORE POP PUSH2 0x117E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0xEB3BEB29 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x5BC JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x51B JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4A1 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x402 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x396 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x305 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2AE JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x5C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x678 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x694 JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x2DC PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x731 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x774 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x782 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x78F JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x808 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x830 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x902 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9D7 JUMP JUMPDEST PUSH2 0x2DC PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x259 PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x66E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x643 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x651 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x685 CALLER DUP5 DUP5 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 DUP5 PUSH2 0xAAC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x6EB SWAP2 DUP7 SWAP2 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xBD5 JUMP JUMPDEST PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x708 PUSH2 0xA33 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x685 SWAP2 DUP6 SWAP1 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0xC04 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x78C CALLER DUP3 PUSH2 0xCBD JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 DUP3 PUSH2 0x1A1 PUSH2 0x7CA DUP7 CALLER PUSH2 0x9D7 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DE DUP4 CALLER DUP4 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0x7E8 DUP4 DUP4 PUSH2 0xCBD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 DUP3 PUSH2 0x808 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x66E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x643 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66E JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x685 SWAP2 DUP6 SWAP1 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xBD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x685 CALLER DUP5 DUP5 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x931 DUP13 PUSH2 0x808 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x9C2 DUP9 DUP3 PUSH2 0x9B9 DUP8 DUP8 DUP8 PUSH2 0xDAD JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x9CD DUP9 DUP9 DUP9 PUSH2 0xA3D JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x708 PUSH2 0xE50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xAD0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xAF4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xAFF DUP4 DUP4 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB32 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xBD5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB6E SWAP1 DUP3 PUSH2 0xBEB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF1B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xBFD DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x0 DUP4 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH2 0xC2A PUSH2 0xC25 DUP3 PUSH2 0xC1F PUSH2 0x68E JUMP JUMPDEST SWAP1 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC5A SWAP1 DUP3 PUSH2 0xBEB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xCE1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xCED DUP3 PUSH1 0x0 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD20 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xBD5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD5B PUSH2 0xC25 DUP3 PUSH2 0xD55 PUSH2 0x68E JUMP JUMPDEST SWAP1 PUSH2 0xF2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF7 DUP6 PUSH2 0xF3C JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH2 0xE07 DUP8 DUP4 DUP8 PUSH2 0xFA3 JUMP JUMPDEST DUP4 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xE1C TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xF1B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xEBD PUSH2 0x10B5 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x77E JUMPI PUSH2 0x77E DUP2 PUSH2 0x10B9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBFD DUP4 DUP4 PUSH1 0x1 PUSH2 0xBD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF46 PUSH2 0xE50 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB5 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x102E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10A9 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x78C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND 0x25 PC LOG0 0x4D DUP16 CALLER RETURNDATACOPY 0xBA 0x23 RETURNDATACOPY 0x5E 0xBA PUSH20 0x789F7BF2D02400D77425ED6283BA7E5056CE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"945:825:123:-:0;;;1345:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1345:239:123;;;;;;;;;;-1:-1:-1;1345:239:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1345:239:123;;;;;;;;;;-1:-1:-1;1345:239:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1345:239:123;;;;;;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1345:239:123;;-1:-1:-1;1345:239:123;;-1:-1:-1;1345:239:123;;1500:4;;1506:6;;1345:239;;1500:4;;;;1345:239;;1500:4;;1506:6;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;;;;;;;;1534:19:123::1;::::0;;;;;::::1;::::0;1563:14;;;::::1;::::0;-1:-1:-1;945:825:123;;-1:-1:-1;;945:825:123;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;945:825:123:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;945:825:123;;;-1:-1:-1;945:825:123;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":3701}],"7648":[{"length":32,"start":3734}],"7650":[{"length":32,"start":3668}],"19427":[{"length":32,"start":2577}],"19429":[{"length":32,"start":1807}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101825760003560e01c806379cc6790116100d8578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e14610579578063eb3beb29146105b4578063ed24911d146105bc57610182565b8063a457c2d7146104a9578063a9059cbb146104e2578063d505accf1461051b57610182565b80637ecebe00116100bd5780637ecebe001461043b57806390193b7c1461046e57806395d89b41146104a157610182565b806379cc6790146103c95780637c602bc21461040257610182565b80633644e5151161013a57806340c10f191161011457806340c10f191461033e57806342966c681461037957806370a082311461039657610182565b80633644e515146102cc57806338d52e0f146102d4578063395093511461030557610182565b806318160ddd1161016b57806318160ddd1461025157806323b872dd1461026b578063313ce567146102ae57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f6105c4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023d6004803603604081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610678565b604080519115158252519081900360200190f35b61025961068e565b60408051918252519081900360200190f35b61023d6004803603606081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610694565b6102b66106f5565b6040805160ff9092168252519081900360200190f35b6102596106fe565b6102dc61070d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61023d6004803603604081101561031b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610731565b6103776004803603604081101561035457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610774565b005b6103776004803603602081101561038f57600080fd5b5035610782565b610259600480360360208110156103ac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661078f565b610377600480360360408110156103df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b7565b6103776004803603604081101561041857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ed565b6102596004803603602081101561045157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107f7565b6102596004803603602081101561048457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610808565b61018f610830565b61023d600480360360408110156104bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108af565b61023d600480360360408110156104f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f5565b610377600480360360e081101561053157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610902565b6102596004803603604081101561058f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109d7565b6102dc610a0f565b610259610a33565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066e5780601f106106435761010080835404028352916020019161066e565b820191906000526020600020905b81548152906001019060200180831161065157829003601f168201915b5050505050905090565b6000610685338484610a3d565b50600192915050565b60025490565b60006106a1848484610aac565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546106eb9186916106e6908661019e610bd5565b610a3d565b5060019392505050565b60055460ff1690565b6000610708610a33565b905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106859185906106e69086610beb565b61077e8282610c04565b5050565b61078c3382610cbd565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006107d1826101a16107ca86336109d7565b9190610bd5565b90506107de833383610a3d565b6107e88383610cbd565b505050565b61077e8282610cbd565b600061080282610808565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066e5780601f106106435761010080835404028352916020019161066e565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106859185906106e6908661019f610bd5565b6000610685338484610aac565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109318c610808565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506109c288826109b9878787610dad565b886101f8610dec565b6109cd888888610a3d565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610708610e50565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ad073ffffffffffffffffffffffffffffffffffffffff84161515610198610f1b565b610af473ffffffffffffffffffffffffffffffffffffffff83161515610199610f1b565b610aff8383836107e8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610b3290826101a0610bd5565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610b6e9082610beb565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610be48484111583610f1b565b5050900390565b6000828201610bfd8482101583610f1b565b9392505050565b610c10600083836107e8565b610c2a610c2582610c1f61068e565b90610beb565b610f29565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c5a9082610beb565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610ce173ffffffffffffffffffffffffffffffffffffffff8316151561019b610f1b565b610ced826000836107e8565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d2090826101b2610bd5565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d5b610c2582610d5561068e565b90610f2e565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610df785610f3c565b9050610e0d610e07878387610fa3565b83610f1b565b610e1c428410156101b8610f1b565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610ebd6110b5565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b8161077e5761077e816110b9565b600255565b6000610bfd83836001610bd5565b6000610f46610e50565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610fb582516041146101b9610f1b565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561102e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906110a957508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261078c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea26469706673582212200b2558a04d8f333eba233e5eba73789f7bf2d02400d77425ed6283ba7e5056ce64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x182 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0xEB3BEB29 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x5BC JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x51B JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4A1 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x402 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x396 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x305 JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x16B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2AE JUMPI PUSH2 0x182 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18F PUSH2 0x5C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x678 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x694 JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x6F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x2DC PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x731 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x774 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x782 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x78F JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B7 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7ED JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7F7 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x808 JUMP JUMPDEST PUSH2 0x18F PUSH2 0x830 JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x23D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F5 JUMP JUMPDEST PUSH2 0x377 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x902 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9D7 JUMP JUMPDEST PUSH2 0x2DC PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x259 PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x66E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x643 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x651 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x685 CALLER DUP5 DUP5 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A1 DUP5 DUP5 DUP5 PUSH2 0xAAC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x6EB SWAP2 DUP7 SWAP2 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xBD5 JUMP JUMPDEST PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x708 PUSH2 0xA33 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x685 SWAP2 DUP6 SWAP1 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0xC04 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x78C CALLER DUP3 PUSH2 0xCBD JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D1 DUP3 PUSH2 0x1A1 PUSH2 0x7CA DUP7 CALLER PUSH2 0x9D7 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xBD5 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DE DUP4 CALLER DUP4 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0x7E8 DUP4 DUP4 PUSH2 0xCBD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 DUP3 PUSH2 0x808 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x66E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x643 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66E JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x685 SWAP2 DUP6 SWAP1 PUSH2 0x6E6 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xBD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x685 CALLER DUP5 DUP5 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x931 DUP13 PUSH2 0x808 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x9C2 DUP9 DUP3 PUSH2 0x9B9 DUP8 DUP8 DUP8 PUSH2 0xDAD JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x9CD DUP9 DUP9 DUP9 PUSH2 0xA3D JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x708 PUSH2 0xE50 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xAD0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xAF4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xAFF DUP4 DUP4 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB32 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xBD5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB6E SWAP1 DUP3 PUSH2 0xBEB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE4 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF1B JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xBFD DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC10 PUSH1 0x0 DUP4 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH2 0xC2A PUSH2 0xC25 DUP3 PUSH2 0xC1F PUSH2 0x68E JUMP JUMPDEST SWAP1 PUSH2 0xBEB JUMP JUMPDEST PUSH2 0xF29 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC5A SWAP1 DUP3 PUSH2 0xBEB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xCE1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xCED DUP3 PUSH1 0x0 DUP4 PUSH2 0x7E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD20 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xBD5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD5B PUSH2 0xC25 DUP3 PUSH2 0xD55 PUSH2 0x68E JUMP JUMPDEST SWAP1 PUSH2 0xF2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDF7 DUP6 PUSH2 0xF3C JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH2 0xE07 DUP8 DUP4 DUP8 PUSH2 0xFA3 JUMP JUMPDEST DUP4 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0xE1C TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xF1B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xEBD PUSH2 0x10B5 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x77E JUMPI PUSH2 0x77E DUP2 PUSH2 0x10B9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBFD DUP4 DUP4 PUSH1 0x1 PUSH2 0xBD5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF46 PUSH2 0xE50 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB5 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x102E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x10A9 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x78C SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND 0x25 PC LOG0 0x4D DUP16 CALLER RETURNDATACOPY 0xBA 0x23 RETURNDATACOPY 0x5E 0xBA PUSH20 0x789F7BF2D02400D77425ED6283BA7E5056CE6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"945:825:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;:::i;1590:88:123:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211:71;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;:::-;;473:87:72;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1684:84:123:-;;;:::i;1184:113:59:-;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;1590:88:123:-;1665:6;1590:88;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1684:84:123:-;1756:5;1684:84;:::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","silo()":"eb3beb29","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"silo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"silo\",\"outputs\":[{\"internalType\":\"contract ISilo\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"asset()\":{\"details\":\"returns the underlying asset\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"constructor\":{\"details\":\"Token is always deployed for specific Silo and asset\",\"params\":{\"asset\":\"Asset for which these tokens were deployed\",\"name\":\"token name\",\"silo\":\"Silo address at which tokens were deployed\",\"symbol\":\"token symbol\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"silo()\":{\"details\":\"returns the address of the silo\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockShareToken.sol\":\"MockShareToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockShareToken.sol\":{\"keccak256\":\"0xef574f30074ddc3eeb4b21ec7b71c8755b262d0d6915bd209092216bca80e6c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1e8c3ac94096af70c6307e58bf626e644d2fb3501cdd1b0fddf6f1b326adf74d\",\"dweb:/ipfs/QmXpXL9xYCmfHgBKRRmWovxYmWPyyt87TK9SsoN4rkZUMK\"]}},\"version\":1}"}},"contracts/test/MockSilo.sol":{"MockBaseSilo":{"abi":[{"inputs":[{"internalType":"address","name":"siloAsset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"assetStorage","outputs":[{"components":[{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"internalType":"struct IBaseSilo.AssetStorage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"interestBearingAsset","type":"address"},{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"name":"setAssetStorage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161042038038061042083398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c61039661008a600039506103966000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063686196d01461003b578063bf27304114610050575b600080fd5b61004e610049366004610265565b610079565b005b61006361005e366004610242565b61014c565b60405161007091906102db565b60405180910390f35b6100816101ca565b506040805160c08101825273ffffffffffffffffffffffffffffffffffffffff97881681529587166020808801918252958816878301908152606088019586526080880194855260a088019384529888166000908152958690529420945185549087167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178655935160018601805491881691861691909117905595516002850180549190961693169290921790935591516003820155905160048201559051600590910155565b6101546101ca565b5073ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604091829020825160c0810184528154851681526001820154851692810192909252600281015490931691810191909152600382015460608201526004820154608082015260059091015460a082015290565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b600060208284031215610253578081fd5b813561025e8161033b565b9392505050565b600080600080600080600060e0888a03121561027f578283fd5b873561028a8161033b565b9650602088013561029a8161033b565b955060408801356102aa8161033b565b945060608801356102ba8161033b565b9699959850939660808101359560a0820135955060c0909101359350915050565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015292915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461035d57600080fd5b5056fea26469706673582212201c07006774bec98a118016cfd80a8d556b0fbf1c7082ff9cba70136f82c7313b64736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x420 CODESIZE SUB DUP1 PUSH2 0x420 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH2 0x72 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x396 PUSH2 0x8A PUSH1 0x0 CODECOPY POP PUSH2 0x396 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x686196D0 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBF273041 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x265 JUMP JUMPDEST PUSH2 0x79 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x14C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x70 SWAP2 SWAP1 PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x1CA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP1 DUP9 ADD SWAP2 DUP3 MSTORE SWAP6 DUP9 AND DUP8 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x60 DUP9 ADD SWAP6 DUP7 MSTORE PUSH1 0x80 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 DUP5 MSTORE SWAP9 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP6 DUP7 SWAP1 MSTORE SWAP5 KECCAK256 SWAP5 MLOAD DUP6 SLOAD SWAP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP7 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP7 ADD DUP1 SLOAD SWAP2 DUP9 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP7 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x3 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH2 0x154 PUSH2 0x1CA JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP6 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x253 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x25E DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x27F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x28A DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x29A DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x2AA DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x2BA DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SMOD STOP PUSH8 0x74BEC98A118016CF 0xD8 EXP DUP14 SSTORE PUSH12 0xFBF1C7082FF9CBA70136F82 0xC7 BALANCE EXTCODESIZE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1010:972:124:-:0;;;1155:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1196:22;;-1:-1:-1;;;;;;1196:22:124;;;1010:972;;146:263:-1;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;576:54;;701:35;;691:2;;-1:-1;;740:12;691:2;319:74;223:186;-1:-1;;;223:186::o;:::-;1010:972:124;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063686196d01461003b578063bf27304114610050575b600080fd5b61004e610049366004610265565b610079565b005b61006361005e366004610242565b61014c565b60405161007091906102db565b60405180910390f35b6100816101ca565b506040805160c08101825273ffffffffffffffffffffffffffffffffffffffff97881681529587166020808801918252958816878301908152606088019586526080880194855260a088019384529888166000908152958690529420945185549087167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178655935160018601805491881691861691909117905595516002850180549190961693169290921790935591516003820155905160048201559051600590910155565b6101546101ca565b5073ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604091829020825160c0810184528154851681526001820154851692810192909252600281015490931691810191909152600382015460608201526004820154608082015260059091015460a082015290565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b600060208284031215610253578081fd5b813561025e8161033b565b9392505050565b600080600080600080600060e0888a03121561027f578283fd5b873561028a8161033b565b9650602088013561029a8161033b565b955060408801356102aa8161033b565b945060608801356102ba8161033b565b9699959850939660808101359560a0820135955060c0909101359350915050565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015292915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461035d57600080fd5b5056fea26469706673582212201c07006774bec98a118016cfd80a8d556b0fbf1c7082ff9cba70136f82c7313b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x686196D0 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBF273041 EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x265 JUMP JUMPDEST PUSH2 0x79 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x5E CALLDATASIZE PUSH1 0x4 PUSH2 0x242 JUMP JUMPDEST PUSH2 0x14C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x70 SWAP2 SWAP1 PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x81 PUSH2 0x1CA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP1 DUP9 ADD SWAP2 DUP3 MSTORE SWAP6 DUP9 AND DUP8 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x60 DUP9 ADD SWAP6 DUP7 MSTORE PUSH1 0x80 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 DUP5 MSTORE SWAP9 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP6 DUP7 SWAP1 MSTORE SWAP5 KECCAK256 SWAP5 MLOAD DUP6 SLOAD SWAP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP7 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP7 ADD DUP1 SLOAD SWAP2 DUP9 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP7 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x3 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH2 0x154 PUSH2 0x1CA JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP6 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x253 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x25E DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x27F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x28A DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x29A DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x2AA DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x2BA DUP2 PUSH2 0x33B JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SMOD STOP PUSH8 0x74BEC98A118016CF 0xD8 EXP DUP14 SSTORE PUSH12 0xFBF1C7082FF9CBA70136F82 0xC7 BALANCE EXTCODESIZE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1010:972:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1373:607;;;;;;:::i;:::-;;:::i;:::-;;1231:136;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1373:607;1676:32;;:::i;:::-;-1:-1:-1;1711:201:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:35;;;-1:-1:-1;1923:35:124;;;;;;;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1373:607::o;1231:136::-;1301:19;;:::i;:::-;-1:-1:-1;1339:21:124;;;;:13;:21;;;;;;;;;;;;1332:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:136::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;456:241::-;;560:2;548:9;539:7;535:23;531:32;528:2;;;-1:-1;;566:12;528:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;618:63;522:175;-1:-1;;;522:175::o;704:1115::-;;;;;;;;970:3;958:9;949:7;945:23;941:33;938:2;;;-1:-1;;977:12;938:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1029:63;-1:-1;1129:2;1188:22;;229:20;254:53;229:20;254:53;:::i;:::-;1137:83;-1:-1;1257:2;1316:22;;229:20;254:53;229:20;254:53;:::i;:::-;1265:83;-1:-1;1385:2;1444:22;;229:20;254:53;229:20;254:53;:::i;:::-;932:887;;;;-1:-1;932:887;;1513:3;1553:22;;386:20;;1622:3;1662:22;;386:20;;-1:-1;1731:3;1771:22;;;386:20;;-1:-1;932:887;-1:-1;;932:887::o;3408:343::-;;3595:3;3584:9;3580:19;3572:27;;4047:42;;2294:16;2288:23;4036:54;1914:3;1907:70;4047:42;2494:4;2487:5;2483:16;2477:23;4036:54;2494:4;2578:3;2574:14;1907:70;4047:42;2673:4;2666:5;2662:16;2656:23;4036:54;2673:4;2757:3;2753:14;1907:70;;2856:4;2849:5;2845:16;2839:23;2856:4;2920:3;2916:14;3359:37;3028:4;3021:5;3017:16;3011:23;3028:4;3092:3;3088:14;3359:37;3195:4;3188:5;3184:16;3178:23;3195:4;3259:3;3255:14;3359:37;3566:185;;;;:::o;4484:117::-;4047:42;4571:5;4036:54;4546:5;4543:35;4533:2;;4592:1;;4582:12;4533:2;4527:74;:::o"},"methodIdentifiers":{"assetStorage(address)":"bf273041","setAssetStorage(address,address,address,address,uint256,uint256,uint256)":"686196d0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"siloAsset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"assetStorage\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct IBaseSilo.AssetStorage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interestBearingAsset\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"name\":\"setAssetStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetStorage(address)\":{\"details\":\"returns the asset storage structAssetStorage struct contains necessary information for calculating shareToken exchange rates\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockSilo.sol\":\"MockBaseSilo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockShareToken.sol\":{\"keccak256\":\"0xef574f30074ddc3eeb4b21ec7b71c8755b262d0d6915bd209092216bca80e6c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1e8c3ac94096af70c6307e58bf626e644d2fb3501cdd1b0fddf6f1b326adf74d\",\"dweb:/ipfs/QmXpXL9xYCmfHgBKRRmWovxYmWPyyt87TK9SsoN4rkZUMK\"]},\"contracts/test/MockSilo.sol\":{\"keccak256\":\"0x65c231b611b677bbabb455350bd3da006c5d8af179b8db3bc137cd2d42ba210c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://202e38cf52d1951c8bb1506dd755230afc349fd5878d619733e9dee70e0c3cd3\",\"dweb:/ipfs/QmPmJ8tmY9RKwe8VUA23fgfpURpR3s9AyefqKF7U4vMyMM\"]}},\"version\":1}"},"MockSilo":{"abi":[{"inputs":[{"internalType":"address","name":"_siloAsset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"assetStorage","outputs":[{"components":[{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"internalType":"struct IBaseSilo.AssetStorage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_depositor","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"collateralAmount","type":"uint256"},{"internalType":"uint256","name":"collateralShare","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"interestBearingAsset","type":"address"},{"internalType":"contract IShareToken","name":"collateralToken","type":"address"},{"internalType":"contract IShareToken","name":"collateralOnlyToken","type":"address"},{"internalType":"contract IShareToken","name":"debtToken","type":"address"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"collateralOnlyDeposits","type":"uint256"},{"internalType":"uint256","name":"totalBorrowAmount","type":"uint256"}],"name":"setAssetStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sharesToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"underlyingToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"withdrawnAmount","type":"uint256"},{"internalType":"uint256","name":"withdrawnShare","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b50604051610c63380380610c6383398101604081905261002f91610050565b60601b6001600160601b031916608052671bc16d674ec8000060015561007e565b600060208284031215610061578081fd5b81516001600160a01b0381168114610077578182fd5b9392505050565b60805160601c610bcd61009660003950610bcd6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063bf2730411161005b578063bf273041146100e6578063ead5d35914610106578063f3e7387514610127578063fbf178db1461013a57610088565b80632c4e722e1461008d57806334fcf437146100ab578063686196d0146100c05780638c871019146100d3575b600080fd5b61009561014d565b6040516100a29190610b50565b60405180910390f35b6100be6100b9366004610a0f565b610153565b005b6100be6100ce36600461093c565b610158565b6100956100e1366004610a0f565b61022b565b6100f96100f43660046108c7565b610248565b6040516100a29190610af0565b6101196101143660046109b2565b6102c6565b6040516100a2929190610b59565b610095610135366004610a0f565b61048e565b6101196101483660046108ea565b6104a5565b60015481565b600155565b61016061084f565b506040805160c08101825273ffffffffffffffffffffffffffffffffffffffff97881681529587166020808801918252958816878301908152606088019586526080880194855260a088019384529888166000908152958690529420945185549087167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178655935160018601805491881691861691909117905595516002850180549190961693169290921790935591516003820155905160048201559051600590910155565b60006102426001548361059590919063ffffffff16565b92915050565b61025061084f565b5073ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604091829020825160c0810184528154851681526001820154851692810192909252600281015490931691810191909152600382015460608201526004820154608082015260059091015460a082015290565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152602081905260408120549091829116817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156103cf576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906370a082319061036d903390600401610a78565b60206040518083038186803b15801561038557600080fd5b505afa158015610399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bd9190610a27565b90506103c88161048e565b95506103db565b6103d88661022b565b90505b6040517f7c602bc200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690637c602bc29061042f9033908590600401610a99565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b506104839250505073ffffffffffffffffffffffffffffffffffffffff881633886105e8565b949694955050505050565b60006102426001548361068e90919063ffffffff16565b6000806104ca73ffffffffffffffffffffffffffffffffffffffff87163330876106c1565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260208190526040812054909116906104fe8661022b565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906340c10f1990610555908a908590600401610a99565b600060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b50979a92995091975050505050505050565b60006105a482151560046106e8565b670de0b6b3a764000083026105d68415806105cf5750670de0b6b3a76400008583816105cc57fe5b04145b60056106e8565b8281816105df57fe5b04949350505050565b6106898363a9059cbb60e01b8484604051602401610607929190610a99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106fa565b505050565b60008282026106b28415806106ab5750838583816106a857fe5b04145b60036106e8565b670de0b6b3a7640000816105df565b6106e2846323b872dd60e01b85858560405160240161060793929190610abf565b50505050565b816106f6576106f6816107a7565b5050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516107239190610a3f565b6000604051808303816000865af19150503d8060008114610760576040519150601f19603f3d011682016040523d82523d6000602084013e610765565b606091505b5091509150600082141561077d573d6000803e3d6000fd5b6106e281516000148061079f57508180602001905181019061079f91906109f3565b6101a26106e8565b6107d1817f42414c00000000000000000000000000000000000000000000000000000000006107d4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000602082840312156108d8578081fd5b81356108e381610b67565b9392505050565b600080600080608085870312156108ff578283fd5b843561090a81610b67565b9350602085013561091a81610b67565b925060408501359150606085013561093181610b89565b939692955090935050565b600080600080600080600060e0888a031215610956578283fd5b873561096181610b67565b9650602088013561097181610b67565b9550604088013561098181610b67565b9450606088013561099181610b67565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000806000606084860312156109c6578283fd5b83356109d181610b67565b92506020840135915060408401356109e881610b89565b809150509250925092565b600060208284031215610a04578081fd5b81516108e381610b89565b600060208284031215610a20578081fd5b5035919050565b600060208284031215610a38578081fd5b5051919050565b60008251815b81811015610a5f5760208186018101518583015201610a45565b81811115610a6d5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146107d157600080fd5b80151581146107d157600080fdfea264697066735822122084061c6d3f30a7bcca0195489b23ba2d3553e9ed6315409f8533f617eb63ea7564736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC63 CODESIZE SUB DUP1 PUSH2 0xC63 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x50 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH8 0x1BC16D674EC80000 PUSH1 0x1 SSTORE PUSH2 0x7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x61 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x77 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0xBCD PUSH2 0x96 PUSH1 0x0 CODECOPY POP PUSH2 0xBCD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF273041 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xBF273041 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xF3E73875 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0xFBF178DB EQ PUSH2 0x13A JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x686196D0 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x8C871019 EQ PUSH2 0xD3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBE PUSH2 0xB9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBE PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0x93C JUMP JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0x95 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x22B JUMP JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xAF0 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0xB59 JUMP JUMPDEST PUSH2 0x95 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH2 0x119 PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x84F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP1 DUP9 ADD SWAP2 DUP3 MSTORE SWAP6 DUP9 AND DUP8 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x60 DUP9 ADD SWAP6 DUP7 MSTORE PUSH1 0x80 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 DUP5 MSTORE SWAP9 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP6 DUP7 SWAP1 MSTORE SWAP5 KECCAK256 SWAP5 MLOAD DUP6 SLOAD SWAP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP7 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP7 ADD DUP1 SLOAD SWAP2 DUP9 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP7 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x3 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x242 PUSH1 0x1 SLOAD DUP4 PUSH2 0x595 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x250 PUSH2 0x84F JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP6 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 EQ ISZERO PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x36D SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0xA78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BD SWAP2 SWAP1 PUSH2 0xA27 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C8 DUP2 PUSH2 0x48E JUMP JUMPDEST SWAP6 POP PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x3D8 DUP7 PUSH2 0x22B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7C602BC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x7C602BC2 SWAP1 PUSH2 0x42F SWAP1 CALLER SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x483 SWAP3 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND CALLER DUP9 PUSH2 0x5E8 JUMP JUMPDEST SWAP5 SWAP7 SWAP5 SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x242 PUSH1 0x1 SLOAD DUP4 PUSH2 0x68E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4CA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP8 PUSH2 0x6C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x4FE DUP7 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH2 0x555 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x583 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP8 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A4 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x6E8 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x5D6 DUP5 ISZERO DUP1 PUSH2 0x5CF JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x5CC JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x6E8 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x5DF JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x689 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x607 SWAP3 SWAP2 SWAP1 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x6FA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x6B2 DUP5 ISZERO DUP1 PUSH2 0x6AB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x6A8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x6E8 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x6E2 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x607 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6F6 JUMPI PUSH2 0x6F6 DUP2 PUSH2 0x7A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x723 SWAP2 SWAP1 PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x760 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x765 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x77D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6E2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x79F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x79F SWAP2 SWAP1 PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x7D1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7D4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8E3 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8FF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x90A DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x91A DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x931 DUP2 PUSH2 0xB89 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x956 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x961 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x971 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x981 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x991 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9C6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x9D1 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x9E8 DUP2 PUSH2 0xB89 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA04 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8E3 DUP2 PUSH2 0xB89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA20 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA38 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA5F JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0xA45 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA6D JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 MOD SHR PUSH14 0x3F30A7BCCA0195489B23BA2D3553 0xE9 0xED PUSH4 0x15409F85 CALLER 0xF6 OR 0xEB PUSH4 0xEA756473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1984:1976:124:-:0;;;2124:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1196:22;;-1:-1:-1;;;;;;1196:22:124;;;1051:7:66;2191:4:124::1;:21:::0;1984:1976;;146:263:-1;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;576:54;;701:35;;691:2;;-1:-1;;740:12;691:2;319:74;223:186;-1:-1;;;223:186::o;:::-;1984:1976:124;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063bf2730411161005b578063bf273041146100e6578063ead5d35914610106578063f3e7387514610127578063fbf178db1461013a57610088565b80632c4e722e1461008d57806334fcf437146100ab578063686196d0146100c05780638c871019146100d3575b600080fd5b61009561014d565b6040516100a29190610b50565b60405180910390f35b6100be6100b9366004610a0f565b610153565b005b6100be6100ce36600461093c565b610158565b6100956100e1366004610a0f565b61022b565b6100f96100f43660046108c7565b610248565b6040516100a29190610af0565b6101196101143660046109b2565b6102c6565b6040516100a2929190610b59565b610095610135366004610a0f565b61048e565b6101196101483660046108ea565b6104a5565b60015481565b600155565b61016061084f565b506040805160c08101825273ffffffffffffffffffffffffffffffffffffffff97881681529587166020808801918252958816878301908152606088019586526080880194855260a088019384529888166000908152958690529420945185549087167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178655935160018601805491881691861691909117905595516002850180549190961693169290921790935591516003820155905160048201559051600590910155565b60006102426001548361059590919063ffffffff16565b92915050565b61025061084f565b5073ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604091829020825160c0810184528154851681526001820154851692810192909252600281015490931691810191909152600382015460608201526004820154608082015260059091015460a082015290565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152602081905260408120549091829116817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156103cf576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906370a082319061036d903390600401610a78565b60206040518083038186803b15801561038557600080fd5b505afa158015610399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bd9190610a27565b90506103c88161048e565b95506103db565b6103d88661022b565b90505b6040517f7c602bc200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690637c602bc29061042f9033908590600401610a99565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b506104839250505073ffffffffffffffffffffffffffffffffffffffff881633886105e8565b949694955050505050565b60006102426001548361068e90919063ffffffff16565b6000806104ca73ffffffffffffffffffffffffffffffffffffffff87163330876106c1565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260208190526040812054909116906104fe8661022b565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906340c10f1990610555908a908590600401610a99565b600060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b50979a92995091975050505050505050565b60006105a482151560046106e8565b670de0b6b3a764000083026105d68415806105cf5750670de0b6b3a76400008583816105cc57fe5b04145b60056106e8565b8281816105df57fe5b04949350505050565b6106898363a9059cbb60e01b8484604051602401610607929190610a99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106fa565b505050565b60008282026106b28415806106ab5750838583816106a857fe5b04145b60036106e8565b670de0b6b3a7640000816105df565b6106e2846323b872dd60e01b85858560405160240161060793929190610abf565b50505050565b816106f6576106f6816107a7565b5050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516107239190610a3f565b6000604051808303816000865af19150503d8060008114610760576040519150601f19603f3d011682016040523d82523d6000602084013e610765565b606091505b5091509150600082141561077d573d6000803e3d6000fd5b6106e281516000148061079f57508180602001905181019061079f91906109f3565b6101a26106e8565b6107d1817f42414c00000000000000000000000000000000000000000000000000000000006107d4565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000602082840312156108d8578081fd5b81356108e381610b67565b9392505050565b600080600080608085870312156108ff578283fd5b843561090a81610b67565b9350602085013561091a81610b67565b925060408501359150606085013561093181610b89565b939692955090935050565b600080600080600080600060e0888a031215610956578283fd5b873561096181610b67565b9650602088013561097181610b67565b9550604088013561098181610b67565b9450606088013561099181610b67565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000806000606084860312156109c6578283fd5b83356109d181610b67565b92506020840135915060408401356109e881610b89565b809150509250925092565b600060208284031215610a04578081fd5b81516108e381610b89565b600060208284031215610a20578081fd5b5035919050565b600060208284031215610a38578081fd5b5051919050565b60008251815b81811015610a5f5760208186018101518583015201610a45565b81811115610a6d5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600060c08201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015292915050565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff811681146107d157600080fd5b80151581146107d157600080fdfea264697066735822122084061c6d3f30a7bcca0195489b23ba2d3553e9ed6315409f8533f617eb63ea7564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBF273041 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xBF273041 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x106 JUMPI DUP1 PUSH4 0xF3E73875 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0xFBF178DB EQ PUSH2 0x13A JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x686196D0 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x8C871019 EQ PUSH2 0xD3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBE PUSH2 0xB9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x153 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xBE PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0x93C JUMP JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH2 0x95 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x22B JUMP JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xAF0 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B2 JUMP JUMPDEST PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0xB59 JUMP JUMPDEST PUSH2 0x95 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH2 0x119 PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x8EA JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x84F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 DUP8 AND PUSH1 0x20 DUP1 DUP9 ADD SWAP2 DUP3 MSTORE SWAP6 DUP9 AND DUP8 DUP4 ADD SWAP1 DUP2 MSTORE PUSH1 0x60 DUP9 ADD SWAP6 DUP7 MSTORE PUSH1 0x80 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 DUP5 MSTORE SWAP9 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP6 DUP7 SWAP1 MSTORE SWAP5 KECCAK256 SWAP5 MLOAD DUP6 SLOAD SWAP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND OR DUP7 SSTORE SWAP4 MLOAD PUSH1 0x1 DUP7 ADD DUP1 SLOAD SWAP2 DUP9 AND SWAP2 DUP7 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP7 AND SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x3 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x4 DUP3 ADD SSTORE SWAP1 MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x242 PUSH1 0x1 SLOAD DUP4 PUSH2 0x595 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x250 PUSH2 0x84F JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0xC0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP6 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP6 AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 DUP3 SWAP2 AND DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 EQ ISZERO PUSH2 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x36D SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0xA78 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BD SWAP2 SWAP1 PUSH2 0xA27 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C8 DUP2 PUSH2 0x48E JUMP JUMPDEST SWAP6 POP PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x3D8 DUP7 PUSH2 0x22B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7C602BC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x7C602BC2 SWAP1 PUSH2 0x42F SWAP1 CALLER SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x483 SWAP3 POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND CALLER DUP9 PUSH2 0x5E8 JUMP JUMPDEST SWAP5 SWAP7 SWAP5 SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x242 PUSH1 0x1 SLOAD DUP4 PUSH2 0x68E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4CA PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP8 PUSH2 0x6C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND SWAP1 PUSH2 0x4FE DUP7 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x40C10F1900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x40C10F19 SWAP1 PUSH2 0x555 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x583 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP8 SWAP11 SWAP3 SWAP10 POP SWAP2 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A4 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x6E8 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x5D6 DUP5 ISZERO DUP1 PUSH2 0x5CF JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x5CC JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x6E8 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x5DF JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x689 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x607 SWAP3 SWAP2 SWAP1 PUSH2 0xA99 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x6FA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x6B2 DUP5 ISZERO DUP1 PUSH2 0x6AB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x6A8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x6E8 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x5DF JUMP JUMPDEST PUSH2 0x6E2 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x607 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xABF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x6F6 JUMPI PUSH2 0x6F6 DUP2 PUSH2 0x7A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x723 SWAP2 SWAP1 PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x760 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x765 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x77D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6E2 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x79F JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x79F SWAP2 SWAP1 PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x7D1 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7D4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8D8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8E3 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8FF JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x90A DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x91A DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x931 DUP2 PUSH2 0xB89 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x956 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x961 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x971 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x981 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x991 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9C6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x9D1 DUP2 PUSH2 0xB67 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x9E8 DUP2 PUSH2 0xB89 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA04 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8E3 DUP2 PUSH2 0xB89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA20 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA38 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA5F JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0xA45 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA6D JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 MLOAD AND DUP4 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 MOD SHR PUSH14 0x3F30A7BCCA0195489B23BA2D3553 0xE9 0xED PUSH4 0x15409F85 CALLER 0xF6 OR 0xEB PUSH4 0xEA756473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1984:1976:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3636:70;;;;;;:::i;:::-;;:::i;:::-;;1373:607;;;;;;:::i;:::-;;:::i;3838:120::-;;;;;;:::i;:::-;;:::i;1231:136::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2770:860::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3712:120::-;;;;;;:::i;:::-;;:::i;2225:539::-;;;;;;:::i;:::-;;:::i;2098:19::-;;;;:::o;3636:70::-;3687:4;:12;3636:70::o;1373:607::-;1676:32;;:::i;:::-;-1:-1:-1;1711:201:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:35;;;-1:-1:-1;1923:35:124;;;;;;;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1373:607::o;3838:120::-;3904:7;3930:21;3946:4;;3930:7;:15;;:21;;;;:::i;:::-;3923:28;3838:120;-1:-1:-1;;3838:120:124:o;1231:136::-;1301:19;;:::i;:::-;-1:-1:-1;1339:21:124;;;;:13;:21;;;;;;;;;;;;1332:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:136::o;2770:860::-;2999:21;;;;2904:23;2999:21;;;;;;;;;;:37;2904:23;;;;2999:37;2904:23;3201:17;3190:28;;3186:252;;;3248:52;;;;;:40;;;;;;:52;;3289:10;;3248:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3234:66;;3324:31;3343:11;3324:18;:31::i;:::-;3314:41;;3186:252;;;3400:27;3419:7;3400:18;:27::i;:::-;3386:41;;3186:252;3447:79;;;;;:54;;;;;;:79;;3502:10;;3514:11;;3447:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3536:48:124;;-1:-1:-1;;;3536:27:124;;;3564:10;3576:7;3536:27;:48::i;:::-;3602:7;;3611:11;;-1:-1:-1;;;;;2770:860:124:o;3712:120::-;3778:7;3804:21;3820:4;;3804:7;:15;;:21;;;;:::i;2225:539::-;2389:24;;2450:67;:31;;;2482:10;2502:4;2509:7;2450:31;:67::i;:::-;2563:21;;;;2527:25;2563:21;;;;;;;;;;:37;;;;;2628:27;2647:7;2628:18;:27::i;:::-;2665:58;;;;;2611:44;;-1:-1:-1;2665:38:124;;;;;;:58;;2704:10;;2611:44;;2665:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2741:7:124;;2750:6;;-1:-1:-1;2225:539:124;;-1:-1:-1;;;;;;;;2225:539:124:o;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:66:o;1514:214:77:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1626:19;:95::i;:::-;1514:214;;;:::o;1833:209:66:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;1734:250:77;1872:105;1900:5;1931:27;;;1960:4;1966:2;1970:5;1908:68;;;;;;;;;;:::i;1872:105::-;1734:250;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11359:3:12;3134:8:77;:97::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;863:241::-;;967:2;955:9;946:7;942:23;938:32;935:2;;;-1:-1;;973:12;935:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1025:63;929:175;-1:-1;;;929:175::o;1111:611::-;;;;;1263:3;1251:9;1242:7;1238:23;1234:33;1231:2;;;-1:-1;;1270:12;1231:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1322:63;-1:-1;1422:2;1461:22;;72:20;97:33;72:20;97:33;:::i;:::-;1430:63;-1:-1;1530:2;1569:22;;652:20;;-1:-1;1638:2;1674:22;;206:20;231:30;206:20;231:30;:::i;:::-;1225:497;;;;-1:-1;1225:497;;-1:-1;;1225:497::o;1729:1115::-;;;;;;;;1995:3;1983:9;1974:7;1970:23;1966:33;1963:2;;;-1:-1;;2002:12;1963:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2054:63;-1:-1;2154:2;2213:22;;495:20;520:53;495:20;520:53;:::i;:::-;2162:83;-1:-1;2282:2;2341:22;;495:20;520:53;495:20;520:53;:::i;:::-;2290:83;-1:-1;2410:2;2469:22;;495:20;520:53;495:20;520:53;:::i;:::-;1957:887;;;;-1:-1;1957:887;;2538:3;2578:22;;652:20;;2647:3;2687:22;;652:20;;-1:-1;2756:3;2796:22;;;652:20;;-1:-1;1957:887;-1:-1;;1957:887::o;2851:485::-;;;;2986:2;2974:9;2965:7;2961:23;2957:32;2954:2;;;-1:-1;;2992:12;2954:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3044:63;-1:-1;3144:2;3183:22;;652:20;;-1:-1;3252:2;3288:22;;206:20;231:30;206:20;231:30;:::i;:::-;3260:60;;;;2948:388;;;;;:::o;3343:257::-;;3455:2;3443:9;3434:7;3430:23;3426:32;3423:2;;;-1:-1;;3461:12;3423:2;354:6;348:13;366:30;390:5;366:30;:::i;3607:241::-;;3711:2;3699:9;3690:7;3686:23;3682:32;3679:2;;;-1:-1;;3717:12;3679:2;-1:-1;652:20;;3673:175;-1:-1;3673:175::o;3855:263::-;;3970:2;3958:9;3949:7;3945:23;3941:32;3938:2;;;-1:-1;;3976:12;3938:2;-1:-1;800:13;;3932:186;-1:-1;3932:186::o;6459:271::-;;4554:5;9135:12;-1:-1;10599:101;10613:6;10610:1;10607:13;10599:101;;;4698:4;10680:11;;;;;10674:18;10661:11;;;10654:39;10628:10;10599:101;;;10715:6;10712:1;10709:13;10706:2;;;-1:-1;10771:6;10766:3;10762:16;10755:27;10706:2;-1:-1;4729:16;;;;;6593:137;-1:-1;;6593:137::o;6737:238::-;9710:42;9699:54;;;;4204:58;;6872:2;6857:18;;6843:132::o;6982:349::-;9710:42;9699:54;;;;4204:58;;7317:2;7302:18;;6290:37;7145:2;7130:18;;7116:215::o;7338:444::-;9710:42;9699:54;;;4345:37;;9699:54;;;;7685:2;7670:18;;4345:37;7768:2;7753:18;;6290:37;;;;7521:2;7506:18;;7492:290::o;8129:343::-;;8316:3;8305:9;8301:19;8293:27;;9710:42;;5225:16;5219:23;9699:54;4845:3;4838:70;9710:42;5425:4;5418:5;5414:16;5408:23;9699:54;5425:4;5509:3;5505:14;4838:70;9710:42;5604:4;5597:5;5593:16;5587:23;9699:54;5604:4;5688:3;5684:14;4838:70;;5787:4;5780:5;5776:16;5770:23;5787:4;5851:3;5847:14;6290:37;5959:4;5952:5;5948:16;5942:23;5959:4;6023:3;6019:14;6290:37;6126:4;6119:5;6115:16;6109:23;6126:4;6190:3;6186:14;6290:37;8287:185;;;;:::o;8479:222::-;6290:37;;;8606:2;8591:18;;8577:124::o;8708:333::-;6290:37;;;9027:2;9012:18;;6290:37;8863:2;8848:18;;8834:207::o;10803:117::-;9710:42;10890:5;9699:54;10865:5;10862:35;10852:2;;10911:1;;10901:12;10927:111;11008:5;9493:13;9486:21;10986:5;10983:32;10973:2;;11029:1;;11019:12"},"methodIdentifiers":{"assetStorage(address)":"bf273041","depositFor(address,address,uint256,bool)":"fbf178db","rate()":"2c4e722e","setAssetStorage(address,address,address,address,uint256,uint256,uint256)":"686196d0","setRate(uint256)":"34fcf437","sharesToUnderlying(uint256)":"f3e73875","underlyingToShares(uint256)":"8c871019","withdraw(address,uint256,bool)":"ead5d359"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_siloAsset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"assetStorage\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct IBaseSilo.AssetStorage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_depositor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralShare\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"interestBearingAsset\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"collateralOnlyToken\",\"type\":\"address\"},{\"internalType\":\"contract IShareToken\",\"name\":\"debtToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralOnlyDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowAmount\",\"type\":\"uint256\"}],\"name\":\"setAssetStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"underlyingToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnShare\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetStorage(address)\":{\"details\":\"returns the asset storage structAssetStorage struct contains necessary information for calculating shareToken exchange rates\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockSilo.sol\":\"MockSilo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IShareToken.sol\":{\"keccak256\":\"0x7355b2fdcaf3ac9a49b21843cf1b82b560ba2478cc8a3e16a74059194aaab009\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5bedd545194b51f5cb1349bdb71630721c37ae88bf56b42131df69b394f7dddc\",\"dweb:/ipfs/QmScPCLh8HznByhWobA8AHRnEL9oC7edps62hgudP3w1ck\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ISilo.sol\":{\"keccak256\":\"0x2b0b6577d2198cf0aac001c37b1aaeb72572f72b95996d95b4e86c20ede7084c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f1cd7c551b89590c5cf91d17d5a4470258517bc34a4526696d6b9a8d3d9d60a0\",\"dweb:/ipfs/Qmbht9vPERbe352JdBkGV8SKQFK9AhcuWGjaFvTdTCtRGr\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockShareToken.sol\":{\"keccak256\":\"0xef574f30074ddc3eeb4b21ec7b71c8755b262d0d6915bd209092216bca80e6c3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1e8c3ac94096af70c6307e58bf626e644d2fb3501cdd1b0fddf6f1b326adf74d\",\"dweb:/ipfs/QmXpXL9xYCmfHgBKRRmWovxYmWPyyt87TK9SsoN4rkZUMK\"]},\"contracts/test/MockSilo.sol\":{\"keccak256\":\"0x65c231b611b677bbabb455350bd3da006c5d8af179b8db3bc137cd2d42ba210c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://202e38cf52d1951c8bb1506dd755230afc349fd5878d619733e9dee70e0c3cd3\",\"dweb:/ipfs/QmPmJ8tmY9RKwe8VUA23fgfpURpR3s9AyefqKF7U4vMyMM\"]}},\"version\":1}"}},"contracts/test/MockStETH.sol":{"MockStETH":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200159238038062001592833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350859285928592839283918791620001dc9160039185019062000267565b508051620001f290600490602084019062000267565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c052620002458162000251565b50505050505062000303565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002aa57805160ff1916838001178555620002da565b82800160010185558215620002da579182015b82811115620002da578251825591602001919060010190620002bd565b50620002e8929150620002ec565b5090565b5b80821115620002e85760008155600101620002ed565b60805160a05160c0516112626200033060003980610f38525080610f7a525080610f5952506112626000f3fe60806040526004361061016a5760003560e01c806379cc6790116100cb578063a1903eab1161007f578063d505accf11610059578063d505accf146105e2578063dd62ed3e1461064d578063ed24911d146106955761016a565b8063a1903eab14610523578063a457c2d714610556578063a9059cbb1461059c5761016a565b80637ecebe00116100b05780637ecebe001461048e57806390193b7c146104ce57806395d89b411461050e5761016a565b806379cc6790146104025780637c602bc2146104485761016a565b80633644e5151161012257806340c10f191161010757806340c10f191461035057806342966c681461039857806370a08231146103c25761016a565b80633644e515146102f5578063395093511461030a5761016a565b806318160ddd1161015357806318160ddd1461025357806323b872dd1461027a578063313ce567146102ca5761016a565b806306fdde031461016f578063095ea7b3146101f9575b600080fd5b34801561017b57600080fd5b506101846106aa565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020557600080fd5b5061023f6004803603604081101561021c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561075e565b604080519115158252519081900360200190f35b34801561025f57600080fd5b50610268610774565b60408051918252519081900360200190f35b34801561028657600080fd5b5061023f6004803603606081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561077a565b3480156102d657600080fd5b506102df6107db565b6040805160ff9092168252519081900360200190f35b34801561030157600080fd5b506102686107e4565b34801561031657600080fd5b5061023f6004803603604081101561032d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f3565b34801561035c57600080fd5b506103966004803603604081101561037357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610836565b005b3480156103a457600080fd5b50610396600480360360208110156103bb57600080fd5b5035610844565b3480156103ce57600080fd5b50610268600480360360208110156103e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610851565b34801561040e57600080fd5b506103966004803603604081101561042557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610879565b34801561045457600080fd5b506103966004803603604081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108af565b34801561049a57600080fd5b50610268600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108b9565b3480156104da57600080fd5b50610268600480360360208110156104f157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108ca565b34801561051a57600080fd5b506101846108f2565b6102686004803603602081101561053957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610971565b34801561056257600080fd5b5061023f6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109b7565b3480156105a857600080fd5b5061023f600480360360408110156105bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109fd565b3480156105ee57600080fd5b50610396600480360360e081101561060557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a0a565b34801561065957600080fd5b506102686004803603604081101561067057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610adf565b3480156106a157600080fd5b50610268610b17565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b5050505050905090565b600061076b338484610b21565b50600192915050565b60025490565b6000610787848484610b90565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107d19186916107cc908661019e610cb9565b610b21565b5060019392505050565b60055460ff1690565b60006107ee610b17565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161076b9185906107cc9086610ccf565b6108408282610ce8565b5050565b61084e3382610da1565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610893826101a161088c8633610adf565b9190610cb9565b90506108a0833383610b21565b6108aa8383610da1565b505050565b6108408282610da1565b60006108c4826108ca565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107545780601f1061072957610100808354040283529160200191610754565b600061097d3334610ce8565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161076b9185906107cc908661019f610cb9565b600061076b338484610b90565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a398c6108ca565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610aca8882610ac1878787610e91565b886101f8610ed0565b610ad5888888610b21565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107ee610f34565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610bb473ffffffffffffffffffffffffffffffffffffffff84161515610198610fff565b610bd873ffffffffffffffffffffffffffffffffffffffff83161515610199610fff565b610be38383836108aa565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c1690826101a0610cb9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c529082610ccf565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cc88484111583610fff565b5050900390565b6000828201610ce18482101583610fff565b9392505050565b610cf4600083836108aa565b610d0e610d0982610d03610774565b90610ccf565b61100d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d3e9082610ccf565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610dc573ffffffffffffffffffffffffffffffffffffffff8316151561019b610fff565b610dd1826000836108aa565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e0490826101b2610cb9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610e3f610d0982610e39610774565b90611012565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610edb85611020565b9050610ef1610eeb878387611087565b83610fff565b610f00428410156101b8610fff565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fa1611199565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b81610840576108408161119d565b600255565b6000610ce183836001610cb9565b600061102a610f34565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061109982516041146101b9610fff565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061118d57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261084e917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220c6b9fca1bf5bb70e2bebf54d1ca5c1d2a2dcc12246e1188e3a16bc998f5664cb64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1592 CODESIZE SUB DUP1 PUSH3 0x1592 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP6 SWAP3 DUP6 SWAP3 DUP6 SWAP3 DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1DC SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1F2 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x245 DUP2 PUSH3 0x251 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x303 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2AA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2DA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2DA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2DA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2BD JUMP JUMPDEST POP PUSH3 0x2E8 SWAP3 SWAP2 POP PUSH3 0x2EC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2ED JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x1262 PUSH3 0x330 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xF38 MSTORE POP DUP1 PUSH2 0xF7A MSTORE POP DUP1 PUSH2 0xF59 MSTORE POP PUSH2 0x1262 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA1903EAB GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x695 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50E JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x448 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C2 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x30A JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2CA JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x6AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x75E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0x774 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0x7DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0x7E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x836 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xADF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B CALLER DUP5 DUP5 PUSH2 0xB21 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x787 DUP5 DUP5 DUP5 PUSH2 0xB90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7D1 SWAP2 DUP7 SWAP2 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0xB21 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE PUSH2 0xB17 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x76B SWAP2 DUP6 SWAP1 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x840 DUP3 DUP3 PUSH2 0xCE8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x84E CALLER DUP3 PUSH2 0xDA1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x893 DUP3 PUSH2 0x1A1 PUSH2 0x88C DUP7 CALLER PUSH2 0xADF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 POP PUSH2 0x8A0 DUP4 CALLER DUP4 PUSH2 0xB21 JUMP JUMPDEST PUSH2 0x8AA DUP4 DUP4 PUSH2 0xDA1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x840 DUP3 DUP3 PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C4 DUP3 PUSH2 0x8CA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x754 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D CALLER CALLVALUE PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x76B SWAP2 DUP6 SWAP1 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B CALLER DUP5 DUP5 PUSH2 0xB90 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA39 DUP13 PUSH2 0x8CA JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xACA DUP9 DUP3 PUSH2 0xAC1 DUP8 DUP8 DUP8 PUSH2 0xE91 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xED0 JUMP JUMPDEST PUSH2 0xAD5 DUP9 DUP9 DUP9 PUSH2 0xB21 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE PUSH2 0xF34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBB4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xBD8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xBE3 DUP4 DUP4 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC16 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC52 SWAP1 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFFF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xCE1 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFFF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCF4 PUSH1 0x0 DUP4 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH2 0xD0E PUSH2 0xD09 DUP3 PUSH2 0xD03 PUSH2 0x774 JUMP JUMPDEST SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD3E SWAP1 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xDC5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xDD1 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE04 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xE3F PUSH2 0xD09 DUP3 PUSH2 0xE39 PUSH2 0x774 JUMP JUMPDEST SWAP1 PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDB DUP6 PUSH2 0x1020 JUMP JUMPDEST SWAP1 POP PUSH2 0xEF1 PUSH2 0xEEB DUP8 DUP4 DUP8 PUSH2 0x1087 JUMP JUMPDEST DUP4 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xF00 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFFF JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xFA1 PUSH2 0x1199 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x840 JUMPI PUSH2 0x840 DUP2 PUSH2 0x119D JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE1 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102A PUSH2 0xF34 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1112 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x118D JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x84E SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 0xB9 0xFC LOG1 0xBF JUMPDEST 0xB7 0xE 0x2B 0xEB CREATE2 0x4D SHR 0xA5 0xC1 0xD2 LOG2 0xDC 0xC1 0x22 CHAINID 0xE1 XOR DUP15 GASPRICE AND 0xBC SWAP10 DUP16 JUMP PUSH5 0xCB64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"980:465:125:-:0;;;1026:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:125;;;;;;;;;;-1:-1:-1;1026:198:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:125;;;;;;;;;;-1:-1:-1;1026:198:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:125;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1026:198:125;;-1:-1:-1;1136:4:125;;-1:-1:-1;1142:6:125;;1026:198;;1136:4;;;;;;1142:6;;2118:13:71;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;1026:198:125;;;980:465;;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;980:465:125:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;980:465:125;;;-1:-1:-1;980:465:125;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":3929}],"7648":[{"length":32,"start":3962}],"7650":[{"length":32,"start":3896}]},"linkReferences":{},"object":"60806040526004361061016a5760003560e01c806379cc6790116100cb578063a1903eab1161007f578063d505accf11610059578063d505accf146105e2578063dd62ed3e1461064d578063ed24911d146106955761016a565b8063a1903eab14610523578063a457c2d714610556578063a9059cbb1461059c5761016a565b80637ecebe00116100b05780637ecebe001461048e57806390193b7c146104ce57806395d89b411461050e5761016a565b806379cc6790146104025780637c602bc2146104485761016a565b80633644e5151161012257806340c10f191161010757806340c10f191461035057806342966c681461039857806370a08231146103c25761016a565b80633644e515146102f5578063395093511461030a5761016a565b806318160ddd1161015357806318160ddd1461025357806323b872dd1461027a578063313ce567146102ca5761016a565b806306fdde031461016f578063095ea7b3146101f9575b600080fd5b34801561017b57600080fd5b506101846106aa565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101be5781810151838201526020016101a6565b50505050905090810190601f1680156101eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020557600080fd5b5061023f6004803603604081101561021c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561075e565b604080519115158252519081900360200190f35b34801561025f57600080fd5b50610268610774565b60408051918252519081900360200190f35b34801561028657600080fd5b5061023f6004803603606081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561077a565b3480156102d657600080fd5b506102df6107db565b6040805160ff9092168252519081900360200190f35b34801561030157600080fd5b506102686107e4565b34801561031657600080fd5b5061023f6004803603604081101561032d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f3565b34801561035c57600080fd5b506103966004803603604081101561037357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610836565b005b3480156103a457600080fd5b50610396600480360360208110156103bb57600080fd5b5035610844565b3480156103ce57600080fd5b50610268600480360360208110156103e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610851565b34801561040e57600080fd5b506103966004803603604081101561042557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610879565b34801561045457600080fd5b506103966004803603604081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108af565b34801561049a57600080fd5b50610268600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108b9565b3480156104da57600080fd5b50610268600480360360208110156104f157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108ca565b34801561051a57600080fd5b506101846108f2565b6102686004803603602081101561053957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610971565b34801561056257600080fd5b5061023f6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109b7565b3480156105a857600080fd5b5061023f600480360360408110156105bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109fd565b3480156105ee57600080fd5b50610396600480360360e081101561060557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610a0a565b34801561065957600080fd5b506102686004803603604081101561067057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610adf565b3480156106a157600080fd5b50610268610b17565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b5050505050905090565b600061076b338484610b21565b50600192915050565b60025490565b6000610787848484610b90565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546107d19186916107cc908661019e610cb9565b610b21565b5060019392505050565b60055460ff1690565b60006107ee610b17565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161076b9185906107cc9086610ccf565b6108408282610ce8565b5050565b61084e3382610da1565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610893826101a161088c8633610adf565b9190610cb9565b90506108a0833383610b21565b6108aa8383610da1565b505050565b6108408282610da1565b60006108c4826108ca565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107545780601f1061072957610100808354040283529160200191610754565b600061097d3334610ce8565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161076b9185906107cc908661019f610cb9565b600061076b338484610b90565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a398c6108ca565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610aca8882610ac1878787610e91565b886101f8610ed0565b610ad5888888610b21565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60006107ee610f34565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610bb473ffffffffffffffffffffffffffffffffffffffff84161515610198610fff565b610bd873ffffffffffffffffffffffffffffffffffffffff83161515610199610fff565b610be38383836108aa565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c1690826101a0610cb9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c529082610ccf565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cc88484111583610fff565b5050900390565b6000828201610ce18482101583610fff565b9392505050565b610cf4600083836108aa565b610d0e610d0982610d03610774565b90610ccf565b61100d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d3e9082610ccf565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610dc573ffffffffffffffffffffffffffffffffffffffff8316151561019b610fff565b610dd1826000836108aa565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e0490826101b2610cb9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610e3f610d0982610e39610774565b90611012565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610edb85611020565b9050610ef1610eeb878387611087565b83610fff565b610f00428410156101b8610fff565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610fa1611199565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b81610840576108408161119d565b600255565b6000610ce183836001610cb9565b600061102a610f34565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061109982516041146101b9610fff565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611112573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061118d57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261084e917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220c6b9fca1bf5bb70e2bebf54d1ca5c1d2a2dcc12246e1188e3a16bc998f5664cb64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xA1903EAB GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5E2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x64D JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x695 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x523 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59C JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x50E JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x448 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3C2 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x30A JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x153 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2CA JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1F9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x6AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1BE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1A6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x75E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0x774 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DF PUSH2 0x7DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0x7E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x836 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x879 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x454 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH2 0x8F2 JUMP JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x396 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xA0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xADF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x268 PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B CALLER DUP5 DUP5 PUSH2 0xB21 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x787 DUP5 DUP5 DUP5 PUSH2 0xB90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x7D1 SWAP2 DUP7 SWAP2 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCB9 JUMP JUMPDEST PUSH2 0xB21 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE PUSH2 0xB17 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x76B SWAP2 DUP6 SWAP1 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x840 DUP3 DUP3 PUSH2 0xCE8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x84E CALLER DUP3 PUSH2 0xDA1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x893 DUP3 PUSH2 0x1A1 PUSH2 0x88C DUP7 CALLER PUSH2 0xADF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xCB9 JUMP JUMPDEST SWAP1 POP PUSH2 0x8A0 DUP4 CALLER DUP4 PUSH2 0xB21 JUMP JUMPDEST PUSH2 0x8AA DUP4 DUP4 PUSH2 0xDA1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x840 DUP3 DUP3 PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C4 DUP3 PUSH2 0x8CA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x754 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97D CALLER CALLVALUE PUSH2 0xCE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x76B SWAP2 DUP6 SWAP1 PUSH2 0x7CC SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B CALLER DUP5 DUP5 PUSH2 0xB90 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xA39 DUP13 PUSH2 0x8CA JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xACA DUP9 DUP3 PUSH2 0xAC1 DUP8 DUP8 DUP8 PUSH2 0xE91 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xED0 JUMP JUMPDEST PUSH2 0xAD5 DUP9 DUP9 DUP9 PUSH2 0xB21 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE PUSH2 0xF34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBB4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xBD8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xBE3 DUP4 DUP4 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC16 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC52 SWAP1 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC8 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFFF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xCE1 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFFF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCF4 PUSH1 0x0 DUP4 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH2 0xD0E PUSH2 0xD09 DUP3 PUSH2 0xD03 PUSH2 0x774 JUMP JUMPDEST SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD3E SWAP1 DUP3 PUSH2 0xCCF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xDC5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xDD1 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE04 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xE3F PUSH2 0xD09 DUP3 PUSH2 0xE39 PUSH2 0x774 JUMP JUMPDEST SWAP1 PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDB DUP6 PUSH2 0x1020 JUMP JUMPDEST SWAP1 POP PUSH2 0xEF1 PUSH2 0xEEB DUP8 DUP4 DUP8 PUSH2 0x1087 JUMP JUMPDEST DUP4 PUSH2 0xFFF JUMP JUMPDEST PUSH2 0xF00 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFFF JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xFA1 PUSH2 0x1199 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x840 JUMPI PUSH2 0x840 DUP2 PUSH2 0x119D JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE1 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCB9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102A PUSH2 0xF34 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1099 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFFF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1112 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x118D JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x84E SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 0xB9 0xFC LOG1 0xBF JUMPDEST 0xB7 0xE 0x2B 0xEB CREATE2 0x4D SHR 0xA5 0xC1 0xD2 LOG2 0xDC 0xC1 0x22 CHAINID 0xE1 XOR DUP15 GASPRICE AND 0xBC SWAP10 DUP16 JUMP PUSH5 0xCB64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"980:465:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:73;;;;;;;;;;;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;:::-;;473:87:72;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;;;;;;;;;;;:::i;1268:175:125:-;;;;;;;;;;;;;;;;-1:-1:-1;1268:175:125;;;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;;;;;;;;;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1268:175:125;1328:7;1347:28;1353:10;1365:9;1347:5;:28::i;:::-;1390:20;;;1400:9;1390:20;;;;;;;;;;;;;-1:-1:-1;1427:9:125;1268:175;;;:::o;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3199:183:70:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","submit(address)":"a1903eab","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EthStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStETH.sol\":\"MockStETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockStETH.sol\":{\"keccak256\":\"0x4a325185c05527823b09a38ef8ebe4e4a5d929eabaa59e60e222b1b59123619c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5032d479406cbc95056d6d13e42cd8790b4ab81a38721d34c1e008fc8beed063\",\"dweb:/ipfs/QmZoWGgRYpmEdJ6HRb8Z74RVW6HVX2qeZwPxUb86Ef581m\"]}},\"version\":1}"}},"contracts/test/MockStaticATokenLM.sol":{"MockStaticATokenLM":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20","name":"underlyingAsset","type":"address"},{"internalType":"contract IERC20","name":"aToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"referralCode","type":"uint16"},{"indexed":false,"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"staticAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200154e3803806200154e8339810160408190526200003491620001fb565b838381818160039080519060200190620000509291906200009a565b508051620000669060049060208401906200009a565b50506005805460ff191660121790555050506001600160601b0319606092831b8116608052911b1660a05250620002899050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000dd57805160ff19168380011785556200010d565b828001600101855582156200010d579182015b828111156200010d578251825591602001919060010190620000f0565b506200011b9291506200011f565b5090565b5b808211156200011b576000815560010162000120565b80516001600160a01b03811681146200014e57600080fd5b92915050565b600082601f83011262000165578081fd5b81516001600160401b03808211156200017c578283fd5b6040516020601f8401601f19168201810183811183821017156200019e578586fd5b80604052508194508382528681858801011115620001bb57600080fd5b600092505b83831015620001df5785830181015182840182015291820191620001c0565b83831115620001f15760008185840101525b5050505092915050565b6000806000806080858703121562000211578384fd5b84516001600160401b038082111562000228578586fd5b620002368883890162000154565b955060208701519150808211156200024c578485fd5b506200025b8782880162000154565b9350506200026d866040870162000136565b91506200027e866060870162000136565b905092959194509250565b60805160601c60a05160601c61129b620002b36000398061075b52508061072c525061129b6000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104e0578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104ba578063dd62ed3e146104cd576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b14610494578063d505accf146104a7576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d71461046e578063a9059cbb14610481576102c8565b806399248ea71461030b5780639dc29fac1461045b576102c8565b806370a082311161016057806370a08231146104405780637f372cff146103ac57806395d89b4114610453576102c8565b8063602665571461042d57806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610425576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104f3565b6040516102e291906111d8565b60405180910390f35b6102fe6102f9366004611043565b6105a8565b6040516102e291906111c4565b6103136105bf565b6040516102e29190611123565b6103286105cc565b6040516102e291906111cf565b6102fe610343366004610e9a565b6105d2565b61035b61035636600461106d565b610633565b6040516102e2929190611249565b610328610649565b61032861037f3660046110a1565b610659565b610328610392366004610e06565b6106a3565b61039f6106b5565b6040516102e29190611257565b6103286105bf565b6103286103c236600461110b565b6105a5565b6102fe6103d5366004611043565b6106be565b6103e2610701565b005b6103e26103f2366004611043565b61070e565b6103e26104053660046110f0565b61071c565b61031361072a565b6103e2610420366004611018565b61074e565b610313610759565b61035b61043b366004610f54565b61077d565b61032861044e366004610e06565b610797565b6102d56107bf565b6103e2610469366004611043565b61083e565b6102fe61047c366004611043565b610848565b6102fe61048f366004611043565b61088e565b6103286104a2366004610ed7565b61089b565b6103e26104b5366004610fa5565b6108b3565b6103e26104c8366004610e55565b6108c7565b6103286104db366004610e21565b6108d7565b61035b6104ee36600461106d565b61090f565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b820191906000526020600020905b81548152906001019060200180831161058057829003601f168201915b505050505090505b90565b60006105b5338484610964565b5060015b92915050565b60006105a56103e66109d9565b60025490565b60006105df848484610a03565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610629918691610624908661019e610b24565b610964565b5060019392505050565b6000806106416103e66109d9565b935093915050565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a63386868686604051610692959493929190611144565b60405180910390a150919392505050565b60006106b06103e66109d9565b919050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b59185906106249086610b3a565b61070c6103e66109d9565b565b6107188282610b53565b5050565b6107276103e66109d9565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107186103e66109d9565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008061078b6103e66109d9565b97509795505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b6107188282610c11565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b5918590610624908661019f610b24565b60006105b5338484610a03565b60006108a86103e66109d9565b979650505050505050565b6108be6103e66109d9565b50505050505050565b6108d26103e66109d9565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661093f886105a5565b87604051610951959493929190611186565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109cc9085906111cf565b60405180910390a3505050565b610727817f42414c0000000000000000000000000000000000000000000000000000000000610d0d565b610a2773ffffffffffffffffffffffffffffffffffffffff84161515610198610d88565b610a4b73ffffffffffffffffffffffffffffffffffffffff83161515610199610d88565b610a568383836108d2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a8990826101a0610b24565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ac59082610b3a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109cc9085906111cf565b6000610b338484111583610d88565b5050900390565b6000828201610b4c8482101583610d88565b9392505050565b610b5f600083836108d2565b610b79610b7482610b6e6105cc565b90610b3a565b610d96565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ba99082610b3a565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c059085906111cf565b60405180910390a35050565b610c3573ffffffffffffffffffffffffffffffffffffffff8316151561019b610d88565b610c41826000836108d2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c7490826101b2610b24565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610caf610b7482610ca96105cc565b90610d9b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0591906111cf565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b8161071857610718816109d9565b600255565b6000610b4c83836001610b24565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b957600080fd5b803580151581146105b957600080fd5b600060608284031215610dee578081fd5b50919050565b803561ffff811681146105b957600080fd5b600060208284031215610e17578081fd5b610b4c8383610da9565b60008060408385031215610e33578081fd5b610e3d8484610da9565b9150610e4c8460208501610da9565b90509250929050565b600080600060608486031215610e69578081fd5b610e738585610da9565b9250610e828560208601610da9565b9150610e918560408601610dcd565b90509250925092565b600080600060608486031215610eae578283fd5b610eb88585610da9565b9250610ec78560208601610da9565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ef2578283fd5b610efc8989610da9565b9650610f0b8960208a01610da9565b955060408801359450610f218960608a01610df4565b9350610f308960808a01610dcd565b925060a08801359150610f468960c08a01610ddd565b905092959891949750929550565b6000806000806000806000610120888a031215610f6f578283fd5b610f798989610da9565b9650610f888960208a01610da9565b95506040880135945060608801359350610f308960808a01610dcd565b600080600080600080600060e0888a031215610fbf578283fd5b610fc98989610da9565b9650610fd88960208a01610da9565b95506040880135945060608801359350608088013560ff81168114610ffb578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102a578182fd5b6110348484610da9565b9150610e4c8460208501610dcd565b60008060408385031215611055578182fd5b61105f8484610da9565b946020939093013593505050565b600080600060608486031215611081578081fd5b61108b8585610da9565b925060208401359150610e918560408601610dcd565b600080600080608085870312156110b6578182fd5b6110c08686610da9565b9350602085013592506110d68660408701610df4565b91506110e58660608701610dcd565b905092959194509250565b600060208284031215611101578081fd5b610b4c8383610dcd565b60006020828403121561111c578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015611204578581018301518582016040015282016111e8565b818111156112155783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b918252602082015260400190565b60ff9190911681526020019056fea2646970667358221220b54f208e0a18f12e9cd27b8abf6dbde5ec02bb51fb9da17a6e5685f09da35c0064736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x154E CODESIZE SUB DUP1 PUSH3 0x154E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1FB JUMP JUMPDEST DUP4 DUP4 DUP2 DUP2 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x50 SWAP3 SWAP2 SWAP1 PUSH3 0x9A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x66 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x9A JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE POP PUSH3 0x289 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST POP PUSH3 0x11B SWAP3 SWAP2 POP PUSH3 0x11F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x120 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x165 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x17C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH3 0x19E JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH3 0x1DF JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH3 0x1C0 JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x211 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x228 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH3 0x236 DUP9 DUP4 DUP10 ADD PUSH3 0x154 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x24C JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH3 0x25B DUP8 DUP3 DUP9 ADD PUSH3 0x154 JUMP JUMPDEST SWAP4 POP POP PUSH3 0x26D DUP7 PUSH1 0x40 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP2 POP PUSH3 0x27E DUP7 PUSH1 0x60 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x129B PUSH3 0x2B3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x75B MSTORE POP DUP1 PUSH2 0x72C MSTORE POP PUSH2 0x129B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4A7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x481 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x45B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x453 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x425 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x649 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x659 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1257 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x110B JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x71C JUMP JUMPDEST PUSH2 0x313 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH2 0x313 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH2 0x328 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x83E JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x848 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x89B JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x580 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A5 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP5 DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x629 SWAP2 DUP7 SWAP2 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x641 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x692 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x70C PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xB53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x727 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x718 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78B PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xC11 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A8 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8BE PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x93F DUP9 PUSH2 0x5A5 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x951 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1186 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x727 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA27 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA4B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA56 DUP4 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAC5 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB33 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB4C DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x0 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0xB79 PUSH2 0xB74 DUP3 PUSH2 0xB6E PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0xD96 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBA9 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC05 SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC35 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xC41 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC74 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCAF PUSH2 0xB74 DUP3 PUSH2 0xCA9 PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC05 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x718 JUMPI PUSH2 0x718 DUP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4C DUP4 DUP4 PUSH1 0x1 PUSH2 0xB24 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDEE JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE33 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE3D DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE69 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE73 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xE82 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEAE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEB8 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xEC7 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xEF2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEFC DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF0B DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF21 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF46 DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDDD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF6F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF79 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF88 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFBF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFC9 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xFD8 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFFB JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1034 DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105F DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x108B DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10B6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10C0 DUP7 DUP7 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10D6 DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x10E5 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1101 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1204 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11E8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1215 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0x4F KECCAK256 DUP15 EXP XOR CALL 0x2E SWAP13 0xD2 PUSH28 0x8ABF6DBDE5EC02BB51FB9DA17A6E5685F09DA35C0064736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"907:4939:126:-:0;;;1508:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1649:4;1655:6;844:4:79;850:6;2126:5:71;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;;;;;;;;;1673:24:126::1;::::0;;;;;::::1;::::0;1707:16;;;::::1;::::0;-1:-1:-1;907:4939:126;;-1:-1:-1;907:4939:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;907:4939:126;;;-1:-1:-1;907:4939:126;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;5:164:-1;98:13;;-1:-1;;;;;2431:54;;2848:50;;2838:2;;2912:1;;2902:12;2838:2;83:86;;;;:::o;177:444::-;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;332:13;;-1:-1;;;;;1962:30;;;1959:2;;;-1:-1;;1995:12;1959:2;1628;1622:9;2136:4;2068:9;2049:17;;-1:-1;;2045:33;1654:17;;;;1714:34;;;1750:22;;;1711:62;1708:2;;;-1:-1;;1776:12;1708:2;1806:10;1628:2;1795:22;;351:74;;;445:6;438:5;431:21;549:3;2136:4;540:6;473;531:16;;528:25;525:2;;;566:1;;556:12;525:2;2563:1;2554:10;;2570:101;2584:6;2581:1;2578:13;2570:101;;;2651:11;;;;;2645:18;2632:11;;;;;2625:39;2599:10;;;;2570:101;;;2686:6;2683:1;2680:13;2677:2;;;2563:1;2136:4;2742:6;507:5;2733:16;;2726:27;2677:2;;;;;250:371;;;;:::o;629:930::-;;;;;845:3;833:9;824:7;820:23;816:33;813:2;;;-1:-1;;852:12;813:2;897:24;;-1:-1;;;;;930:30;;;927:2;;;-1:-1;;963:12;927:2;993:74;1059:7;1050:6;1039:9;1035:22;993:74;:::i;:::-;983:84;;1125:2;1114:9;1110:18;1104:25;1090:39;;941:18;1141:6;1138:30;1135:2;;;-1:-1;;1171:12;1135:2;;1201:74;1267:7;1258:6;1247:9;1243:22;1201:74;:::i;:::-;1191:84;;;1330:79;1401:7;1312:2;1381:9;1377:22;1330:79;:::i;:::-;1320:89;;1464:79;1535:7;1446:2;1515:9;1511:22;1464:79;:::i;:::-;1454:89;;807:752;;;;;;;:::o;:::-;907:4939:126;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"19846":[{"length":32,"start":1836}],"19848":[{"length":32,"start":1883}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104e0578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104ba578063dd62ed3e146104cd576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b14610494578063d505accf146104a7576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d71461046e578063a9059cbb14610481576102c8565b806399248ea71461030b5780639dc29fac1461045b576102c8565b806370a082311161016057806370a08231146104405780637f372cff146103ac57806395d89b4114610453576102c8565b8063602665571461042d57806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610425576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104f3565b6040516102e291906111d8565b60405180910390f35b6102fe6102f9366004611043565b6105a8565b6040516102e291906111c4565b6103136105bf565b6040516102e29190611123565b6103286105cc565b6040516102e291906111cf565b6102fe610343366004610e9a565b6105d2565b61035b61035636600461106d565b610633565b6040516102e2929190611249565b610328610649565b61032861037f3660046110a1565b610659565b610328610392366004610e06565b6106a3565b61039f6106b5565b6040516102e29190611257565b6103286105bf565b6103286103c236600461110b565b6105a5565b6102fe6103d5366004611043565b6106be565b6103e2610701565b005b6103e26103f2366004611043565b61070e565b6103e26104053660046110f0565b61071c565b61031361072a565b6103e2610420366004611018565b61074e565b610313610759565b61035b61043b366004610f54565b61077d565b61032861044e366004610e06565b610797565b6102d56107bf565b6103e2610469366004611043565b61083e565b6102fe61047c366004611043565b610848565b6102fe61048f366004611043565b61088e565b6103286104a2366004610ed7565b61089b565b6103e26104b5366004610fa5565b6108b3565b6103e26104c8366004610e55565b6108c7565b6103286104db366004610e21565b6108d7565b61035b6104ee36600461106d565b61090f565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b820191906000526020600020905b81548152906001019060200180831161058057829003601f168201915b505050505090505b90565b60006105b5338484610964565b5060015b92915050565b60006105a56103e66109d9565b60025490565b60006105df848484610a03565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610629918691610624908661019e610b24565b610964565b5060019392505050565b6000806106416103e66109d9565b935093915050565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a63386868686604051610692959493929190611144565b60405180910390a150919392505050565b60006106b06103e66109d9565b919050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b59185906106249086610b3a565b61070c6103e66109d9565b565b6107188282610b53565b5050565b6107276103e66109d9565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107186103e66109d9565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008061078b6103e66109d9565b97509795505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b6107188282610c11565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b5918590610624908661019f610b24565b60006105b5338484610a03565b60006108a86103e66109d9565b979650505050505050565b6108be6103e66109d9565b50505050505050565b6108d26103e66109d9565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661093f886105a5565b87604051610951959493929190611186565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109cc9085906111cf565b60405180910390a3505050565b610727817f42414c0000000000000000000000000000000000000000000000000000000000610d0d565b610a2773ffffffffffffffffffffffffffffffffffffffff84161515610198610d88565b610a4b73ffffffffffffffffffffffffffffffffffffffff83161515610199610d88565b610a568383836108d2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a8990826101a0610b24565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ac59082610b3a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109cc9085906111cf565b6000610b338484111583610d88565b5050900390565b6000828201610b4c8482101583610d88565b9392505050565b610b5f600083836108d2565b610b79610b7482610b6e6105cc565b90610b3a565b610d96565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ba99082610b3a565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c059085906111cf565b60405180910390a35050565b610c3573ffffffffffffffffffffffffffffffffffffffff8316151561019b610d88565b610c41826000836108d2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c7490826101b2610b24565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610caf610b7482610ca96105cc565b90610d9b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0591906111cf565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b8161071857610718816109d9565b600255565b6000610b4c83836001610b24565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b957600080fd5b803580151581146105b957600080fd5b600060608284031215610dee578081fd5b50919050565b803561ffff811681146105b957600080fd5b600060208284031215610e17578081fd5b610b4c8383610da9565b60008060408385031215610e33578081fd5b610e3d8484610da9565b9150610e4c8460208501610da9565b90509250929050565b600080600060608486031215610e69578081fd5b610e738585610da9565b9250610e828560208601610da9565b9150610e918560408601610dcd565b90509250925092565b600080600060608486031215610eae578283fd5b610eb88585610da9565b9250610ec78560208601610da9565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ef2578283fd5b610efc8989610da9565b9650610f0b8960208a01610da9565b955060408801359450610f218960608a01610df4565b9350610f308960808a01610dcd565b925060a08801359150610f468960c08a01610ddd565b905092959891949750929550565b6000806000806000806000610120888a031215610f6f578283fd5b610f798989610da9565b9650610f888960208a01610da9565b95506040880135945060608801359350610f308960808a01610dcd565b600080600080600080600060e0888a031215610fbf578283fd5b610fc98989610da9565b9650610fd88960208a01610da9565b95506040880135945060608801359350608088013560ff81168114610ffb578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102a578182fd5b6110348484610da9565b9150610e4c8460208501610dcd565b60008060408385031215611055578182fd5b61105f8484610da9565b946020939093013593505050565b600080600060608486031215611081578081fd5b61108b8585610da9565b925060208401359150610e918560408601610dcd565b600080600080608085870312156110b6578182fd5b6110c08686610da9565b9350602085013592506110d68660408701610df4565b91506110e58660608701610dcd565b905092959194509250565b600060208284031215611101578081fd5b610b4c8383610dcd565b60006020828403121561111c578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015611204578581018301518582016040015282016111e8565b818111156112155783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b918252602082015260400190565b60ff9190911681526020019056fea2646970667358221220b54f208e0a18f12e9cd27b8abf6dbde5ec02bb51fb9da17a6e5685f09da35c0064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4A7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x481 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x45B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x453 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x425 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x649 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x659 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1257 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x110B JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x71C JUMP JUMPDEST PUSH2 0x313 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH2 0x313 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH2 0x328 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x83E JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x848 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x89B JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x580 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A5 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP5 DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x629 SWAP2 DUP7 SWAP2 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x641 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x692 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x70C PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xB53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x727 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x718 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78B PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xC11 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A8 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8BE PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x93F DUP9 PUSH2 0x5A5 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x951 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1186 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x727 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA27 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA4B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA56 DUP4 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAC5 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB33 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB4C DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x0 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0xB79 PUSH2 0xB74 DUP3 PUSH2 0xB6E PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0xD96 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBA9 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC05 SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC35 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xC41 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC74 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCAF PUSH2 0xB74 DUP3 PUSH2 0xCA9 PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC05 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x718 JUMPI PUSH2 0x718 DUP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4C DUP4 DUP4 PUSH1 0x1 PUSH2 0xB24 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDEE JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE33 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE3D DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE69 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE73 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xE82 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEAE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEB8 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xEC7 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xEF2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEFC DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF0B DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF21 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF46 DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDDD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF6F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF79 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF88 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFBF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFC9 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xFD8 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFFB JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1034 DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105F DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x108B DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10B6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10C0 DUP7 DUP7 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10D6 DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x10E5 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1101 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1204 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11E8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1215 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0x4F KECCAK256 DUP15 EXP XOR CALL 0x2E SWAP13 0xD2 PUSH28 0x8ABF6DBDE5EC02BB51FB9DA17A6E5685F09DA35C0064736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"907:4939:126:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:164;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5608:120:126:-;;;:::i;:::-;;;;;;;:::i;3500:106:71:-;;;:::i;:::-;;;;;;;:::i;5488:386::-;;;;;;:::i;:::-;;:::i;3395:181:126:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2147:84::-;;;:::i;2237:281::-;;;;;;:::i;:::-;;:::i;4844:125::-;;;;;;:::i;:::-;;:::i;3156:81:71:-;;;:::i;:::-;;;;;;;:::i;5232:124:126:-;;;:::i;2938:118::-;;;;;;:::i;:::-;;:::i;6269:211:71:-;;;;;;:::i;:::-;;:::i;4225:104:126:-;;;:::i;:::-;;866:99:79;;;;;;:::i;:::-;;:::i;4606:103:126:-;;;;;;:::i;:::-;;:::i;1789:87::-;;;:::i;4494:106::-;;;;;;:::i;:::-;;:::i;1882:89::-;;;:::i;3834:257::-;;;;;;:::i;:::-;;:::i;4022:117:71:-;;;;;;:::i;:::-;;:::i;2448:85::-;;;:::i;971:93:79:-;;;;;;:::i;:::-;;:::i;6967:312:71:-;;;;;;:::i;:::-;;:::i;4342:170::-;;;;;;:::i;:::-;;:::i;3582:246:126:-;;;;;;:::i;:::-;;:::i;3062:206::-;;;;;;:::i;:::-;;:::i;4335:153::-;;;;;;:::i;:::-;;:::i;4570:149:71:-;;;;;;:::i;:::-;;:::i;2524:286:126:-;;;;;;:::i;:::-;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;;:::o;5608:120:126:-;5673:7;5692:29;15034:3:12;5692:7:126;:29::i;3500:106:71:-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3395:181:126:-;3512:7;3521;3540:29;15034:3:12;3540:7:126;:29::i;:::-;3395:181;;;;;;:::o;2147:84::-;1422:4;2147:84;:::o;2237:281::-;2396:7;2420:68;2428:10;2440:9;2451:6;2459:12;2473:14;2420:68;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2505:6:126;;2237:281;-1:-1:-1;;;2237:281:126:o;4844:125::-;4914:7;4933:29;15034:3:12;4933:7:126;:29::i;:::-;4844:125;;;:::o;3156:81:71:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4225:104:126:-;4293:29;15034:3:12;4293:7:126;:29::i;:::-;4225:104::o;866:99:79:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;4606:103:126:-;4673:29;15034:3:12;4673:7:126;:29::i;:::-;4606:103;:::o;1789:87::-;1863:6;1789:87;:::o;4494:106::-;4564:29;15034:3:12;4564:7:126;:29::i;1882:89::-;1957:7;1882:89;:::o;3834:257::-;4027:7;4036;4055:29;15034:3:12;4055:7:126;:29::i;:::-;3834:257;;;;;;;;;;:::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:79;1036:21;1042:6;1050;1036:5;:21::i;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;3582:246:126:-;3773:7;3792:29;15034:3:12;3792:7:126;:29::i;:::-;3582:246;;;;;;;;;:::o;3062:206::-;3232:29;15034:3:12;3232:7:126;:29::i;:::-;3062:206;;;;;;;:::o;4335:153::-;4452:29;15034:3:12;4452:7:126;:29::i;:::-;4335:153;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2524:286:126:-;2653:7;2662;2686:84;2695:10;2707:9;2718:6;2726:29;2748:6;2726:21;:29::i;:::-;2757:12;2686:84;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2788:6:126;;;;-1:-1:-1;2524:286:126;-1:-1:-1;;2524:286:126:o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10208:32;;;;;10187:6;;10208:32;:::i;:::-;;;;;;;;10034:213;;;:::o;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;7753:559:71:-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;;;;8298:6;;8270:35;:::i;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;8770:18;;:9;8836:37;;;;8866:6;;8836:37;:::i;:::-;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9593:1;9567:37;;9576:7;9567:37;;;9597:6;9567:37;;;;;;:::i;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;926:101;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;5:130:-1:-;72:20;;13609:42;13598:54;;14939:35;;14929:2;;14988:1;;14978:12;142:124;206:20;;13340:13;;13333:21;15060:32;;15050:2;;15106:1;;15096:12;457:166;;576:2;567:6;562:3;558:16;554:25;551:2;;;-1:-1;;582:12;551:2;-1:-1;602:15;544:79;-1:-1;544:79::o;630:128::-;696:20;;13517:6;13506:18;;15304:34;;15294:2;;15352:1;;15342:12;1035:241;;1139:2;1127:9;1118:7;1114:23;1110:32;1107:2;;;-1:-1;;1145:12;1107:2;1207:53;1252:7;1228:22;1207:53;:::i;1283:366::-;;;1404:2;1392:9;1383:7;1379:23;1375:32;1372:2;;;-1:-1;;1410:12;1372:2;1472:53;1517:7;1493:22;1472:53;:::i;:::-;1462:63;;1580:53;1625:7;1562:2;1605:9;1601:22;1580:53;:::i;:::-;1570:63;;1366:283;;;;;:::o;1656:485::-;;;;1791:2;1779:9;1770:7;1766:23;1762:32;1759:2;;;-1:-1;;1797:12;1759:2;1859:53;1904:7;1880:22;1859:53;:::i;:::-;1849:63;;1967:53;2012:7;1949:2;1992:9;1988:22;1967:53;:::i;:::-;1957:63;;2075:50;2117:7;2057:2;2097:9;2093:22;2075:50;:::i;:::-;2065:60;;1753:388;;;;;:::o;2148:491::-;;;;2286:2;2274:9;2265:7;2261:23;2257:32;2254:2;;;-1:-1;;2292:12;2254:2;2354:53;2399:7;2375:22;2354:53;:::i;:::-;2344:63;;2462:53;2507:7;2444:2;2487:9;2483:22;2462:53;:::i;:::-;2452:63;;2552:2;2595:9;2591:22;832:20;2560:63;;2248:391;;;;;:::o;2646:1057::-;;;;;;;;2883:3;2871:9;2862:7;2858:23;2854:33;2851:2;;;-1:-1;;2890:12;2851:2;2952:53;2997:7;2973:22;2952:53;:::i;:::-;2942:63;;3060:53;3105:7;3042:2;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3150:2;3193:9;3189:22;832:20;3158:63;;3276:52;3320:7;3258:2;3300:9;3296:22;3276:52;:::i;:::-;3266:62;;3384:50;3426:7;3365:3;3406:9;3402:22;3384:50;:::i;:::-;3374:60;;3471:3;3515:9;3511:22;832:20;3480:63;;3599:88;3679:7;3580:3;3659:9;3655:22;3599:88;:::i;:::-;3589:98;;2845:858;;;;;;;;;;:::o;3710:1059::-;;;;;;;;3948:3;3936:9;3927:7;3923:23;3919:33;3916:2;;;-1:-1;;3955:12;3916:2;4017:53;4062:7;4038:22;4017:53;:::i;:::-;4007:63;;4125:53;4170:7;4107:2;4150:9;4146:22;4125:53;:::i;:::-;4115:63;;4215:2;4258:9;4254:22;832:20;4223:63;;4323:2;4366:9;4362:22;832:20;4331:63;;4450:50;4492:7;4431:3;4472:9;4468:22;4450:50;:::i;4776:991::-;;;;;;;;4980:3;4968:9;4959:7;4955:23;4951:33;4948:2;;;-1:-1;;4987:12;4948:2;5049:53;5094:7;5070:22;5049:53;:::i;:::-;5039:63;;5157:53;5202:7;5139:2;5182:9;5178:22;5157:53;:::i;:::-;5147:63;;5247:2;5290:9;5286:22;832:20;5255:63;;5355:2;5398:9;5394:22;832:20;5363:63;;5463:3;5505:9;5501:22;967:20;13814:4;15575:5;13803:16;15552:5;15549:33;15539:2;;-1:-1;;15586:12;15539:2;4942:825;;;;-1:-1;4942:825;;;;5472:61;5570:3;5610:22;;340:20;;-1:-1;5679:3;5719:22;;;340:20;;4942:825;-1:-1;;4942:825::o;5774:360::-;;;5892:2;5880:9;5871:7;5867:23;5863:32;5860:2;;;-1:-1;;5898:12;5860:2;5960:53;6005:7;5981:22;5960:53;:::i;:::-;5950:63;;6068:50;6110:7;6050:2;6090:9;6086:22;6068:50;:::i;6141:366::-;;;6262:2;6250:9;6241:7;6237:23;6233:32;6230:2;;;-1:-1;;6268:12;6230:2;6330:53;6375:7;6351:22;6330:53;:::i;:::-;6320:63;6420:2;6459:22;;;;832:20;;-1:-1;;;6224:283::o;6514:485::-;;;;6649:2;6637:9;6628:7;6624:23;6620:32;6617:2;;;-1:-1;;6655:12;6617:2;6717:53;6762:7;6738:22;6717:53;:::i;:::-;6707:63;;6807:2;6850:9;6846:22;832:20;6815:63;;6933:50;6975:7;6915:2;6955:9;6951:22;6933:50;:::i;7006:609::-;;;;;7157:3;7145:9;7136:7;7132:23;7128:33;7125:2;;;-1:-1;;7164:12;7125:2;7226:53;7271:7;7247:22;7226:53;:::i;:::-;7216:63;;7316:2;7359:9;7355:22;832:20;7324:63;;7442:52;7486:7;7424:2;7466:9;7462:22;7442:52;:::i;:::-;7432:62;;7549:50;7591:7;7531:2;7571:9;7567:22;7549:50;:::i;:::-;7539:60;;7119:496;;;;;;;:::o;7622:235::-;;7723:2;7711:9;7702:7;7698:23;7694:32;7691:2;;;-1:-1;;7729:12;7691:2;7791:50;7833:7;7809:22;7791:50;:::i;7864:241::-;;7968:2;7956:9;7947:7;7943:23;7939:32;7936:2;;;-1:-1;;7974:12;7936:2;-1:-1;832:20;;7930:175;-1:-1;7930:175::o;9480:222::-;13609:42;13598:54;;;;8332:37;;9607:2;9592:18;;9578:124::o;9709:668::-;13609:42;13598:54;;;8191:58;;13598:54;;;;10121:2;10106:18;;8332:37;10204:2;10189:18;;8563:37;;;;13517:6;13506:18;10285:2;10270:18;;9198:36;13340:13;;13333:21;10362:3;10347:19;;8446:34;9948:3;9933:19;;9919:458::o;10384:672::-;13609:42;13598:54;;;8191:58;;13598:54;;;;10798:2;10783:18;;8332:37;10881:2;10866:18;;8563:37;;;;10964:2;10949:18;;8563:37;13340:13;;13333:21;11041:3;11026:19;;8446:34;10625:3;10610:19;;10596:460::o;11063:210::-;13340:13;;13333:21;8446:34;;11184:2;11169:18;;11155:118::o;11280:222::-;8563:37;;;11407:2;11392:18;;11378:124::o;11768:310::-;;11915:2;;11936:17;11929:47;8920:5;12963:12;13120:6;11915:2;11904:9;11900:18;13108:19;-1:-1;14571:101;14585:6;14582:1;14579:13;14571:101;;;14652:11;;;;;14646:18;14633:11;;;13148:14;14633:11;14626:39;14600:10;;14571:101;;;14687:6;14684:1;14681:13;14678:2;;;-1:-1;13148:14;14743:6;11904:9;14734:16;;14727:27;14678:2;-1:-1;14863:2;14843:14;14859:7;14839:28;9078:39;;;;13148:14;9078:39;;11886:192;-1:-1;;;11886:192::o;12314:333::-;8563:37;;;12633:2;12618:18;;8563:37;12469:2;12454:18;;12440:207::o;12654:214::-;13814:4;13803:16;;;;9433:35;;12777:2;12762:18;;12748:120::o"},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","increaseAllowance(address,uint256)":"39509351","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","mint(address,uint256)":"40c10f19","name()":"06fdde03","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"aToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStaticATokenLM.sol\":\"MockStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]},\"contracts/test/MockStaticATokenLM.sol\":{\"keccak256\":\"0x6512dbead06601b2b9caec64d88bb0a4f09246679c66dca9c000bb21598cfa83\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://20963535a069cfd413a88c89ee969b043ae87ca4bcdf37f4cc1afa167a3220db\",\"dweb:/ipfs/QmVWjPFawJ4ThhkmncDAA9h3pjcQV8kb3YMJt7U8ZHnNJ8\"]}},\"version\":1}"}},"contracts/test/MockTetuShareValueHelper.sol":{"MockTetuShareValueHelper":{"abi":[{"inputs":[{"internalType":"uint256","name":"wrappedAmount","type":"uint256"},{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"}],"name":"fromTetuAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mainAmount","type":"uint256"},{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"}],"name":"toTetuAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a0604052670de0b6b3a764000060805234801561001c57600080fd5b5060805161058d61003c600039806101585280610354525061058d6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634d9ab5cb1461003b578063c8f93a9d14610064575b600080fd5b61004e6100493660046104fd565b610077565b60405161005b919061052c565b60405180910390f35b61004e6100723660046104fd565b61008a565b60006100838383610096565b9392505050565b600061008383836100b6565b6000806100a2836100ce565b90506100ae8482610232565b949350505050565b6000806100c2836100ce565b90506100ae848261026a565b6000808273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f91906104e5565b90508061017f577f000000000000000000000000000000000000000000000000000000000000000091505061022d565b60008373ffffffffffffffffffffffffffffffffffffffff1663c2baf3566040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c757600080fd5b505afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff91906104e5565b9050600061020c856102b4565b9050600061021a8383610401565b9050610226818561026a565b9450505050505b919050565b600082820261025684158061024f57508385838161024c57fe5b04145b600361040f565b670de0b6b3a7640000815b04949350505050565b6000610279821515600461040f565b670de0b6b3a764000083026102ab8415806102a45750670de0b6b3a76400008583816102a157fe5b04145b600561040f565b82818161026157fe5b6000808273ffffffffffffffffffffffffffffffffffffffff1663a8c62e766040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033591906104c9565b905073ffffffffffffffffffffffffffffffffffffffff811661037b577f000000000000000000000000000000000000000000000000000000000000000091505061022d565b8073ffffffffffffffffffffffffffffffffffffffff166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c157600080fd5b505afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906104e5565b91505061022d565b600082820161008384821015835b8161041d5761041d81610421565b5050565b61044b817f42414c000000000000000000000000000000000000000000000000000000000061044e565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6000602082840312156104da578081fd5b815161008381610535565b6000602082840312156104f6578081fd5b5051919050565b6000806040838503121561050f578081fd5b82359150602083013561052181610535565b809150509250929050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461044b57600080fdfea264697066735822122015af3cb444749e5dcbe46b8197dc6b4fb6af04f0a77cc6911fcf779f55955cd764736f6c63430007010033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x58D PUSH2 0x3C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x158 MSTORE DUP1 PUSH2 0x354 MSTORE POP PUSH2 0x58D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4D9AB5CB EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC8F93A9D EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x52C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x8A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83 DUP4 DUP4 PUSH2 0x96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83 DUP4 DUP4 PUSH2 0xB6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 DUP4 PUSH2 0xCE JUMP JUMPDEST SWAP1 POP PUSH2 0xAE DUP5 DUP3 PUSH2 0x232 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC2 DUP4 PUSH2 0xCE JUMP JUMPDEST SWAP1 POP PUSH2 0xAE DUP5 DUP3 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x17F JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2BAF356 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C DUP6 PUSH2 0x2B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21A DUP4 DUP4 PUSH2 0x401 JUMP JUMPDEST SWAP1 POP PUSH2 0x226 DUP2 DUP6 PUSH2 0x26A JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x256 DUP5 ISZERO DUP1 PUSH2 0x24F JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x24C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x40F JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x279 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x40F JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x2AB DUP5 ISZERO DUP1 PUSH2 0x2A4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x2A1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x40F JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x261 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA8C62E76 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x335 SWAP2 SWAP1 PUSH2 0x4C9 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x37B JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x45D01E4A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x83 DUP5 DUP3 LT ISZERO DUP4 JUMPDEST DUP2 PUSH2 0x41D JUMPI PUSH2 0x41D DUP2 PUSH2 0x421 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x44B DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x44E JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x50F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x521 DUP2 PUSH2 0x535 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0xAF EXTCODECOPY 0xB4 DIFFICULTY PUSH21 0x9E5DCBE46B8197DC6B4FB6AF04F0A77CC6911FCF77 SWAP16 SSTORE SWAP6 0x5C 0xD7 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1072:2609:127:-:0;;;988:4:66;1293:55:127;;1072:2609;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"20295":[{"length":32,"start":344},{"length":32,"start":852}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80634d9ab5cb1461003b578063c8f93a9d14610064575b600080fd5b61004e6100493660046104fd565b610077565b60405161005b919061052c565b60405180910390f35b61004e6100723660046104fd565b61008a565b60006100838383610096565b9392505050565b600061008383836100b6565b6000806100a2836100ce565b90506100ae8482610232565b949350505050565b6000806100c2836100ce565b90506100ae848261026a565b6000808273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014f91906104e5565b90508061017f577f000000000000000000000000000000000000000000000000000000000000000091505061022d565b60008373ffffffffffffffffffffffffffffffffffffffff1663c2baf3566040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c757600080fd5b505afa1580156101db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ff91906104e5565b9050600061020c856102b4565b9050600061021a8383610401565b9050610226818561026a565b9450505050505b919050565b600082820261025684158061024f57508385838161024c57fe5b04145b600361040f565b670de0b6b3a7640000815b04949350505050565b6000610279821515600461040f565b670de0b6b3a764000083026102ab8415806102a45750670de0b6b3a76400008583816102a157fe5b04145b600561040f565b82818161026157fe5b6000808273ffffffffffffffffffffffffffffffffffffffff1663a8c62e766040518163ffffffff1660e01b815260040160206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033591906104c9565b905073ffffffffffffffffffffffffffffffffffffffff811661037b577f000000000000000000000000000000000000000000000000000000000000000091505061022d565b8073ffffffffffffffffffffffffffffffffffffffff166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c157600080fd5b505afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906104e5565b91505061022d565b600082820161008384821015835b8161041d5761041d81610421565b5050565b61044b817f42414c000000000000000000000000000000000000000000000000000000000061044e565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6000602082840312156104da578081fd5b815161008381610535565b6000602082840312156104f6578081fd5b5051919050565b6000806040838503121561050f578081fd5b82359150602083013561052181610535565b809150509250929050565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461044b57600080fdfea264697066735822122015af3cb444749e5dcbe46b8197dc6b4fb6af04f0a77cc6911fcf779f55955cd764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4D9AB5CB EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC8F93A9D EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x52C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x8A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83 DUP4 DUP4 PUSH2 0x96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83 DUP4 DUP4 PUSH2 0xB6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA2 DUP4 PUSH2 0xCE JUMP JUMPDEST SWAP1 POP PUSH2 0xAE DUP5 DUP3 PUSH2 0x232 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC2 DUP4 PUSH2 0xCE JUMP JUMPDEST SWAP1 POP PUSH2 0xAE DUP5 DUP3 PUSH2 0x26A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14F SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x17F JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC2BAF356 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x20C DUP6 PUSH2 0x2B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21A DUP4 DUP4 PUSH2 0x401 JUMP JUMPDEST SWAP1 POP PUSH2 0x226 DUP2 DUP6 PUSH2 0x26A JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x256 DUP5 ISZERO DUP1 PUSH2 0x24F JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x24C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x40F JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x279 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x40F JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x2AB DUP5 ISZERO DUP1 PUSH2 0x2A4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x2A1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x40F JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x261 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA8C62E76 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x335 SWAP2 SWAP1 PUSH2 0x4C9 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x37B JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x45D01E4A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x83 DUP5 DUP3 LT ISZERO DUP4 JUMPDEST DUP2 PUSH2 0x41D JUMPI PUSH2 0x41D DUP2 PUSH2 0x421 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x44B DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x44E JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83 DUP2 PUSH2 0x535 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x50F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x521 DUP2 PUSH2 0x535 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0xAF EXTCODECOPY 0xB4 DIFFICULTY PUSH21 0x9E5DCBE46B8197DC6B4FB6AF04F0A77CC6911FCF77 SWAP16 SSTORE SWAP6 0x5C 0xD7 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1072:2609:127:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1502:177;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1832:167;;;;;;:::i;:::-;;:::i;1502:177::-;1602:7;1628:44;1644:13;1659:12;1628:15;:44::i;:::-;1621:51;1502:177;-1:-1:-1;;;1502:177:127:o;1832:167::-;1927:7;1953:39;1967:10;1979:12;1953:13;:39::i;2821:213::-;2922:7;2941:12;2956:27;2970:12;2956:13;:27::i;:::-;2941:42;-1:-1:-1;3000:27:127;:13;2941:42;3000:21;:27::i;:::-;2993:34;2821:213;-1:-1:-1;;;;2821:213:127:o;3040:205::-;3136:7;3155:12;3170:27;3184:12;3170:13;:27::i;:::-;3155:42;-1:-1:-1;3214:24:127;:10;3155:42;3214:18;:24::i;2005:810::-;2081:7;2100:31;2134:12;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2100:60;-1:-1:-1;2174:28:127;2170:639;;2225:12;2218:19;;;;;2170:639;2268:32;2303:12;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2268:74;;2356:41;2400:51;2438:12;2400:37;:51::i;:::-;2356:95;-1:-1:-1;2465:15:127;2483:63;:24;2356:95;2483:28;:63::i;:::-;2465:81;-1:-1:-1;2758:40:127;2465:81;2774:23;2758:15;:40::i;:::-;2751:47;;;;;;2005:810;;;;:::o;1833:209:66:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;;1833:209;-1:-1:-1;;;;1833:209:66:o;2768:282::-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;3251:428:127;3350:7;3369:20;3392:12;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3369:46;-1:-1:-1;3429:26:127;;;3425:248;;3557:12;3550:19;;;;;3425:248;3621:12;3607:53;;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3600:62;;;;;1343:239:66;1401:7;1505:5;;;1520:37;1529:6;;;;1401:7;926:101:12;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;609:263:-1;;724:2;712:9;703:7;699:23;695:32;692:2;;;-1:-1;;730:12;692:2;89:6;83:13;101:33;128:5;101:33;:::i;879:263::-;;994:2;982:9;973:7;969:23;965:32;962:2;;;-1:-1;;1000:12;962:2;-1:-1;546:13;;956:186;-1:-1;956:186::o;1149:414::-;;;1294:2;1282:9;1273:7;1269:23;1265:32;1262:2;;;-1:-1;;1300:12;1262:2;411:6;398:20;1352:63;;1452:2;1519:9;1515:22;237:20;262:57;313:5;262:57;:::i;:::-;1460:87;;;;1256:307;;;;;:::o;1690:222::-;1641:37;;;1817:2;1802:18;;1788:124::o;2346:117::-;2212:42;2433:5;2201:54;2408:5;2405:35;2395:2;;2454:1;;2444:12"},"methodIdentifiers":{"fromTetuAmount(uint256,address)":"4d9ab5cb","toTetuAmount(uint256,address)":"c8f93a9d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"fromTetuAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"toTetuAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockTetuShareValueHelper.sol\":\"MockTetuShareValueHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\":{\"keccak256\":\"0x99484dcb080b9d5d57fe39c9e9d2d349a4975fe7ca53a4d66f9672a56c6434b1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://effa8083764cdb7850f6e2294ff9f3724d6567319746d20a2002cdb7c621b97e\",\"dweb:/ipfs/QmPzmEbCTZ1R8QpqE98aqmcjZtRCfY1qrRmzrfQ1KLTZ5R\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/test/MockTetuShareValueHelper.sol\":{\"keccak256\":\"0x3f835957411f526808d80f764fe2beb57fa564f00fef28f4abf0a0f3509d9e91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d93c37b6aa4fbca46df0602e3f44051c0296a47dab6ba7fbe37e661230cca0c3\",\"dweb:/ipfs/QmZPffePUKyN9eFfQFWeFPCGX5Q7pfXipCDQDz2wwrj8Po\"]}},\"version\":1}"}},"contracts/test/MockTetuSmartVault.sol":{"MockTetuSmartVault":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"_underlyingAsset","type":"address"},{"internalType":"contract MockTetuStrategy","name":"tetuStrategy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"wrappedAmount","type":"uint256"},{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"}],"name":"fromTetuAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mainAmount","type":"uint256"},{"internalType":"contract ITetuSmartVault","name":"wrappedToken","type":"address"}],"name":"toTetuAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transferUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingAsset","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingBalanceInVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"underlyingBalanceWithInvestmentForHolder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfShares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"610160604052670de0b6b3a764000060e05260006007553480156200002357600080fd5b5060405162001def38038062001def833981810160405260a08110156200004957600080fd5b81019080805160405193929190846401000000008211156200006a57600080fd5b9083019060208201858111156200008057600080fd5b82516401000000008111828201881017156200009b57600080fd5b82525081516020918201929091019080838360005b83811015620000ca578181015183820152602001620000b0565b50505050905090810190601f168015620000f85780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011c57600080fd5b9083019060208201858111156200013257600080fd5b82516401000000008111828201881017156200014d57600080fd5b82525081516020918201929091019080838360005b838110156200017c57818101518382015260200162000162565b50505050905090810190601f168015620001aa5780820380516001836020036101000a031916815260200191505b5060408181526020838101518483015160609095015184840190935260018452603160f81b828501528851909650939450909287928792879285928392909183918791620001ff9160039190850190620002ae565b50805162000215906004906020840190620002ae565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c052620002688162000298565b5050506001600160601b0319606092831b81166101005260ff90931661012052901b1661014052506200034a9050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002f157805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032157825182559160200191906001019062000304565b506200032f92915062000333565b5090565b5b808211156200032f576000815560010162000334565b60805160a05160c05160e0516101005160601c610120516101405160601c611a28620003c760003980610bc2528061103f5250806109065280610fc4525080610848528061092d52806109705280610a505280610bfe52508061141a528061195d5250806112205250806112625250806112415250611a286000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c806377c7b8fc1161012a578063a457c2d7116100bd578063c2baf3561161008c578063d505accf11610071578063d505accf14610678578063dd62ed3e146106c9578063ed24911d146106f757610226565b8063c2baf35614610644578063c8f93a9d1461064c57610226565b8063a457c2d7146105c7578063a8c62e76146105f3578063a9059cbb146105fb578063b6b55f251461062757610226565b80638bbd3768116100f95780638bbd3768146105475780638cb1d67f1461057357806390193b7c1461059957806395d89b41146105bf57610226565b806377c7b8fc146104c157806379cc6790146104c95780637c602bc2146104f55780637ecebe001461052157610226565b806336efd16f116101bd5780634d9ab5cb1161018c5780636f307dc3116101715780636f307dc31461046f57806370a08231146104935780637158da7c146104b957610226565b80634d9ab5cb1461043b57806353ceb01c1461046757610226565b806336efd16f1461039a57806339509351146103c657806340c10f19146103f257806342966c681461041e57610226565b80632e1a7d4d116101f95780632e1a7d4d14610338578063313ce5671461035757806334fcf437146103755780633644e5151461039257610226565b806306fdde031461022b578063095ea7b3146102a857806318160ddd146102e857806323b872dd14610302575b600080fd5b6102336106ff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026d578181015183820152602001610255565b50505050905090810190601f16801561029a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d4600480360360408110156102be57600080fd5b506001600160a01b0381351690602001356107b3565b604080519115158252519081900360200190f35b6102f06107c9565b60408051918252519081900360200190f35b6102d46004803603606081101561031857600080fd5b506001600160a01b038135811691602081013590911690604001356107cf565b6103556004803603602081101561034e57600080fd5b5035610823565b005b61035f610873565b6040805160ff9092168252519081900360200190f35b6103556004803603602081101561038b57600080fd5b503561087c565b6102f061088d565b610355600480360360408110156103b057600080fd5b50803590602001356001600160a01b031661089c565b6102d4600480360360408110156103dc57600080fd5b506001600160a01b0381351690602001356108a7565b6103556004803603604081101561040857600080fd5b506001600160a01b0381351690602001356108dd565b6103556004803603602081101561043457600080fd5b50356108e7565b6102f06004803603604081101561045157600080fd5b50803590602001356001600160a01b03166108f1565b6102f0610904565b61047761092b565b604080516001600160a01b039092168252519081900360200190f35b6102f0600480360360208110156104a957600080fd5b50356001600160a01b031661094f565b61047761096e565b6102f0610992565b610355600480360360408110156104df57600080fd5b506001600160a01b0381351690602001356109fb565b6103556004803603604081101561050b57600080fd5b506001600160a01b038135169060200135610a31565b6102f06004803603602081101561053757600080fd5b50356001600160a01b0316610a3b565b6103556004803603604081101561055d57600080fd5b50803590602001356001600160a01b031661086f565b6102f06004803603602081101561058957600080fd5b50356001600160a01b0316610a4c565b6102f0600480360360208110156105af57600080fd5b50356001600160a01b0316610aed565b610233610b08565b6102d4600480360360408110156105dd57600080fd5b506001600160a01b038135169060200135610b87565b610477610bc0565b6102d46004803603604081101561061157600080fd5b506001600160a01b038135169060200135610be4565b6103556004803603602081101561063d57600080fd5b5035610bf1565b6102f0610c3e565b6102f06004803603604081101561066257600080fd5b50803590602001356001600160a01b0316610c44565b610355600480360360e081101561068e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610c50565b6102f0600480360360408110156106df57600080fd5b506001600160a01b0381358116916020013516610d0b565b6102f0610d36565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107c0338484610d40565b50600192915050565b60025490565b60006107dc848484610da2565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610819918691610814908661019e610e8a565b610d40565b5060019392505050565b61082d3382610ea0565b60006108398230610eb5565b905061086f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610ed5565b5050565b60055460ff1690565b600881905561088a81610f55565b50565b6000610897610d36565b905090565b61086f6103e761109a565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107c091859061081490866110c4565b61086f82826110d6565b61088a3382610ea0565b60006108fd8383610eb5565b9392505050565b7f0000000000000000000000000000000000000000000000000000000000000000600a0a90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0381166000908152602081905260409020545b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f53686f756c64206e6f742063616c6c20746869730000000000000000000000006044820152905160009181900360640190fd5b6000610a15826101a1610a0e8633610d0b565b9190610e8a565b9050610a22833383610d40565b610a2c8383610ea0565b505050565b61086f8282610ea0565b6000610a4682610aed565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610abb57600080fd5b505afa158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b505192915050565b6001600160a01b031660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a95780601f1061077e576101008083540402835291602001916107a9565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107c0918590610814908661019f610e8a565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006107c0338484610da2565b610c266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110e0565b6000610c32823061116e565b905061086f33826110d6565b60075490565b60006108fd838361116e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c7f8c610aed565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610cf68882610ced878787611186565b886101f86111c5565b610d01888888610d40565b5050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061089761121c565b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610db96001600160a01b03841615156101986112da565b610dd06001600160a01b03831615156101996112da565b610ddb838383610a2c565b6001600160a01b038316600090815260208190526040902054610e0190826101a0610e8a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e3090826110c4565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610e9984841115836112da565b5050900390565b610eaa82826112e8565b61086f600854610f55565b600080610ec1836113a9565b9050610ecd84826114da565b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610a2c908490611512565b6000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9057600080fd5b505afa158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b50519050600360007f0000000000000000000000000000000000000000000000000000000000000000600a0a84840281610ff057fe5b0490508160ff168181610fff57fe5b046007819055604080517fc4ee6db90000000000000000000000000000000000000000000000000000000081529183036004830152516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163c4ee6db991602480830192600092919082900301818387803b15801561108657600080fd5b505af1158015610d01573d6000803e3d6000fd5b61088a817f42414c000000000000000000000000000000000000000000000000000000000061161b565b60008282016108fd84821015836112da565b610eaa8282611696565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611168908590611512565b50505050565b60008061117a836113a9565b9050610ecd8482611730565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006111d08561177a565b90506111e66111e08783876117e1565b836112da565b6111f5428410156101b86112da565b5050506001600160a01b039092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112896118cc565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161086f5761086f8161109a565b6112ff6001600160a01b038316151561019b6112da565b61130b82600083610a2c565b6001600160a01b03821660009081526020819052604090205461133190826101b2610e8a565b6001600160a01b03831660009081526020819052604090205561136461135f826113596107c9565b906118d0565b6118de565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600080826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d602081101561140f57600080fd5b5051905080611441577f0000000000000000000000000000000000000000000000000000000000000000915050610969565b6000836001600160a01b031663c2baf3566040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b5051905060006114b5856118e3565b905060006114c383836110c4565b90506114cf8185611730565b945050505050610969565b60008282026114fe8415806114f75750838583816114f457fe5b04145b60036112da565b670de0b6b3a7640000815b04949350505050565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061156e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611531565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115d0576040519150601f19603f3d011682016040523d82523d6000602084013e6115d5565b606091505b509150915060008214156115ed573d6000803e3d6000fd5b611168815160001480611613575081806020019051602081101561161057600080fd5b50515b6101a26112da565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6116a260008383610a2c565b6116b761135f826116b16107c9565b906110c4565b6001600160a01b0382166000908152602081905260409020546116da90826110c4565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061173f82151560046112da565b670de0b6b3a7640000830261177184158061176a5750670de0b6b3a764000085838161176757fe5b04145b60056112da565b82818161150957fe5b600061178461121c565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60006117f382516041146101b96112da565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561186c573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906118c05750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b60006108fd83836001610e8a565b600255565b600080826001600160a01b031663a8c62e766040518163ffffffff1660e01b815260040160206040518083038186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b505190506001600160a01b038116611984577f0000000000000000000000000000000000000000000000000000000000000000915050610969565b806001600160a01b03166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119bd57600080fd5b505afa1580156119d1573d6000803e3d6000fd5b505050506040513d60208110156119e757600080fd5b50519150610969905056fea2646970667358221220083139f5bb53b7330496487370e704c0016dc1eaf4b0f86ae664a7f5dc320dfd64736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0xE0 MSTORE PUSH1 0x0 PUSH1 0x7 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1DEF CODESIZE SUB DUP1 PUSH3 0x1DEF DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xB0 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xF8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x17C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x162 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x1AA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD DUP5 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD DUP5 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP5 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP3 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 SWAP7 POP SWAP4 SWAP5 POP SWAP1 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1FF SWAP2 PUSH1 0x3 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x2AE JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x215 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2AE JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x268 DUP2 PUSH3 0x298 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH2 0x100 MSTORE PUSH1 0xFF SWAP1 SWAP4 AND PUSH2 0x120 MSTORE SWAP1 SHL AND PUSH2 0x140 MSTORE POP PUSH3 0x34A SWAP1 POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2F1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x321 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x321 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x321 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x304 JUMP JUMPDEST POP PUSH3 0x32F SWAP3 SWAP2 POP PUSH3 0x333 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x32F JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x334 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x1A28 PUSH3 0x3C7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xBC2 MSTORE DUP1 PUSH2 0x103F MSTORE POP DUP1 PUSH2 0x906 MSTORE DUP1 PUSH2 0xFC4 MSTORE POP DUP1 PUSH2 0x848 MSTORE DUP1 PUSH2 0x92D MSTORE DUP1 PUSH2 0x970 MSTORE DUP1 PUSH2 0xA50 MSTORE DUP1 PUSH2 0xBFE MSTORE POP DUP1 PUSH2 0x141A MSTORE DUP1 PUSH2 0x195D MSTORE POP DUP1 PUSH2 0x1220 MSTORE POP DUP1 PUSH2 0x1262 MSTORE POP DUP1 PUSH2 0x1241 MSTORE POP PUSH2 0x1A28 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x226 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C7B8FC GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC2BAF356 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x678 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x6F7 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0xC2BAF356 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0xC8F93A9D EQ PUSH2 0x64C JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x627 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x8BBD3768 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x8BBD3768 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0x8CB1D67F EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x599 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BF JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x77C7B8FC EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4F5 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x521 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x36EFD16F GT PUSH2 0x1BD JUMPI DUP1 PUSH4 0x4D9AB5CB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0x7158DA7C EQ PUSH2 0x4B9 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x4D9AB5CB EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x53CEB01C EQ PUSH2 0x467 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x36EFD16F EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x41E JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x392 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x302 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x233 PUSH2 0x6FF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x255 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x29A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F0 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x823 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x35F PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x87C JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x89C JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x904 JUMP JUMPDEST PUSH2 0x477 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94F JUMP JUMPDEST PUSH2 0x477 PUSH2 0x96E JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x992 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FB JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3B JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86F JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA4C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAED JUMP JUMPDEST PUSH2 0x233 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x477 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xC3E JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC44 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xC50 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD0B JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xD36 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x78C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C0 CALLER DUP5 DUP5 PUSH2 0xD40 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP5 DUP5 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x819 SWAP2 DUP7 SWAP2 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xE8A JUMP JUMPDEST PUSH2 0xD40 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x82D CALLER DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x839 DUP3 ADDRESS PUSH2 0xEB5 JUMP JUMPDEST SWAP1 POP PUSH2 0x86F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP4 PUSH2 0xED5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH2 0x88A DUP2 PUSH2 0xF55 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x897 PUSH2 0xD36 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x86F PUSH2 0x3E7 PUSH2 0x109A JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7C0 SWAP2 DUP6 SWAP1 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x10C4 JUMP JUMPDEST PUSH2 0x86F DUP3 DUP3 PUSH2 0x10D6 JUMP JUMPDEST PUSH2 0x88A CALLER DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH2 0xEB5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53686F756C64206E6F742063616C6C2074686973000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA15 DUP3 PUSH2 0x1A1 PUSH2 0xA0E DUP7 CALLER PUSH2 0xD0B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xE8A JUMP JUMPDEST SWAP1 POP PUSH2 0xA22 DUP4 CALLER DUP4 PUSH2 0xD40 JUMP JUMPDEST PUSH2 0xA2C DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x86F DUP3 DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA46 DUP3 PUSH2 0xAED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A9 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7C0 SWAP2 DUP6 SWAP1 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xE8A JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C0 CALLER DUP5 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xC26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP5 PUSH2 0x10E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC32 DUP3 ADDRESS PUSH2 0x116E JUMP JUMPDEST SWAP1 POP PUSH2 0x86F CALLER DUP3 PUSH2 0x10D6 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH2 0x116E JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC7F DUP13 PUSH2 0xAED JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xCF6 DUP9 DUP3 PUSH2 0xCED DUP8 DUP8 DUP8 PUSH2 0x1186 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11C5 JUMP JUMPDEST PUSH2 0xD01 DUP9 DUP9 DUP9 PUSH2 0xD40 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x897 PUSH2 0x121C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xDB9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xDD0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xDDB DUP4 DUP4 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE01 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE30 SWAP1 DUP3 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE99 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x12DA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xEAA DUP3 DUP3 PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x86F PUSH1 0x8 SLOAD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEC1 DUP4 PUSH2 0x13A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xECD DUP5 DUP3 PUSH2 0x14DA JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xA2C SWAP1 DUP5 SWAP1 PUSH2 0x1512 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x3 PUSH1 0x0 PUSH32 0x0 PUSH1 0xA EXP DUP5 DUP5 MUL DUP2 PUSH2 0xFF0 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP2 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0xFFF JUMPI INVALID JUMPDEST DIV PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0xC4EE6DB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP4 SUB PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0xC4EE6DB9 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1086 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x88A DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x161B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x8FD DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xEAA DUP3 DUP3 PUSH2 0x1696 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1168 SWAP1 DUP6 SWAP1 PUSH2 0x1512 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x117A DUP4 PUSH2 0x13A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xECD DUP5 DUP3 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D0 DUP6 PUSH2 0x177A JUMP JUMPDEST SWAP1 POP PUSH2 0x11E6 PUSH2 0x11E0 DUP8 DUP4 DUP8 PUSH2 0x17E1 JUMP JUMPDEST DUP4 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0x11F5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x12DA JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1289 PUSH2 0x18CC JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x86F JUMPI PUSH2 0x86F DUP2 PUSH2 0x109A JUMP JUMPDEST PUSH2 0x12FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x12DA JUMP JUMPDEST PUSH2 0x130B DUP3 PUSH1 0x0 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1331 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1364 PUSH2 0x135F DUP3 PUSH2 0x1359 PUSH2 0x7C9 JUMP JUMPDEST SWAP1 PUSH2 0x18D0 JUMP JUMPDEST PUSH2 0x18DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1441 JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2BAF356 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1490 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x14B5 DUP6 PUSH2 0x18E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14C3 DUP4 DUP4 PUSH2 0x10C4 JUMP JUMPDEST SWAP1 POP PUSH2 0x14CF DUP2 DUP6 PUSH2 0x1730 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x14FE DUP5 ISZERO DUP1 PUSH2 0x14F7 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x14F4 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x12DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x156E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1531 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15D0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1168 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1613 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12DA JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x16A2 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x16B7 PUSH2 0x135F DUP3 PUSH2 0x16B1 PUSH2 0x7C9 JUMP JUMPDEST SWAP1 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16DA SWAP1 DUP3 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173F DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x12DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1771 DUP5 ISZERO DUP1 PUSH2 0x176A JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x1767 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x12DA JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x1509 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1784 PUSH2 0x121C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F3 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x12DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x18C0 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH1 0x1 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA8C62E76 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x191F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1933 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1984 JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x969 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x45D01E4A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x969 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD BALANCE CODECOPY CREATE2 0xBB MSTORE8 0xB7 CALLER DIV SWAP7 0x48 PUSH20 0x70E704C0016DC1EAF4B0F86AE664A7F5DC320DFD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1109:3541:128:-:0;;;988:4:66;1293:55:127;;1406:1:128;1362:45;;1502:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1502:344:128;;;;;;;;;;-1:-1:-1;1502:344:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1502:344:128;;;;;;;;;;-1:-1:-1;1502:344:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1502:344:128;;;;;;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1502:344:128;;-1:-1:-1;1502:344:128;;-1:-1:-1;1502:344:128;;1685:4;;1691:6;;1502:344;;1685:4;;;;1502:344;;1685:4;;1691:6;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;;;;;;;;1719:42:128::1;::::0;;;;;::::1;::::0;1771:30:::1;::::0;;::::1;;::::0;1811:28;;;::::1;::::0;-1:-1:-1;1109:3541:128;;-1:-1:-1;1109:3541:128;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;1109:3541:128:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1109:3541:128;;;-1:-1:-1;1109:3541:128;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":4673}],"7648":[{"length":32,"start":4706}],"7650":[{"length":32,"start":4640}],"20295":[{"length":32,"start":5146},{"length":32,"start":6493}],"20467":[{"length":32,"start":2120},{"length":32,"start":2349},{"length":32,"start":2416},{"length":32,"start":2640},{"length":32,"start":3070}],"20469":[{"length":32,"start":2310},{"length":32,"start":4036}],"20474":[{"length":32,"start":3010},{"length":32,"start":4159}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106102265760003560e01c806377c7b8fc1161012a578063a457c2d7116100bd578063c2baf3561161008c578063d505accf11610071578063d505accf14610678578063dd62ed3e146106c9578063ed24911d146106f757610226565b8063c2baf35614610644578063c8f93a9d1461064c57610226565b8063a457c2d7146105c7578063a8c62e76146105f3578063a9059cbb146105fb578063b6b55f251461062757610226565b80638bbd3768116100f95780638bbd3768146105475780638cb1d67f1461057357806390193b7c1461059957806395d89b41146105bf57610226565b806377c7b8fc146104c157806379cc6790146104c95780637c602bc2146104f55780637ecebe001461052157610226565b806336efd16f116101bd5780634d9ab5cb1161018c5780636f307dc3116101715780636f307dc31461046f57806370a08231146104935780637158da7c146104b957610226565b80634d9ab5cb1461043b57806353ceb01c1461046757610226565b806336efd16f1461039a57806339509351146103c657806340c10f19146103f257806342966c681461041e57610226565b80632e1a7d4d116101f95780632e1a7d4d14610338578063313ce5671461035757806334fcf437146103755780633644e5151461039257610226565b806306fdde031461022b578063095ea7b3146102a857806318160ddd146102e857806323b872dd14610302575b600080fd5b6102336106ff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026d578181015183820152602001610255565b50505050905090810190601f16801561029a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d4600480360360408110156102be57600080fd5b506001600160a01b0381351690602001356107b3565b604080519115158252519081900360200190f35b6102f06107c9565b60408051918252519081900360200190f35b6102d46004803603606081101561031857600080fd5b506001600160a01b038135811691602081013590911690604001356107cf565b6103556004803603602081101561034e57600080fd5b5035610823565b005b61035f610873565b6040805160ff9092168252519081900360200190f35b6103556004803603602081101561038b57600080fd5b503561087c565b6102f061088d565b610355600480360360408110156103b057600080fd5b50803590602001356001600160a01b031661089c565b6102d4600480360360408110156103dc57600080fd5b506001600160a01b0381351690602001356108a7565b6103556004803603604081101561040857600080fd5b506001600160a01b0381351690602001356108dd565b6103556004803603602081101561043457600080fd5b50356108e7565b6102f06004803603604081101561045157600080fd5b50803590602001356001600160a01b03166108f1565b6102f0610904565b61047761092b565b604080516001600160a01b039092168252519081900360200190f35b6102f0600480360360208110156104a957600080fd5b50356001600160a01b031661094f565b61047761096e565b6102f0610992565b610355600480360360408110156104df57600080fd5b506001600160a01b0381351690602001356109fb565b6103556004803603604081101561050b57600080fd5b506001600160a01b038135169060200135610a31565b6102f06004803603602081101561053757600080fd5b50356001600160a01b0316610a3b565b6103556004803603604081101561055d57600080fd5b50803590602001356001600160a01b031661086f565b6102f06004803603602081101561058957600080fd5b50356001600160a01b0316610a4c565b6102f0600480360360208110156105af57600080fd5b50356001600160a01b0316610aed565b610233610b08565b6102d4600480360360408110156105dd57600080fd5b506001600160a01b038135169060200135610b87565b610477610bc0565b6102d46004803603604081101561061157600080fd5b506001600160a01b038135169060200135610be4565b6103556004803603602081101561063d57600080fd5b5035610bf1565b6102f0610c3e565b6102f06004803603604081101561066257600080fd5b50803590602001356001600160a01b0316610c44565b610355600480360360e081101561068e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610c50565b6102f0600480360360408110156106df57600080fd5b506001600160a01b0381358116916020013516610d0b565b6102f0610d36565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107c0338484610d40565b50600192915050565b60025490565b60006107dc848484610da2565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610819918691610814908661019e610e8a565b610d40565b5060019392505050565b61082d3382610ea0565b60006108398230610eb5565b905061086f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610ed5565b5050565b60055460ff1690565b600881905561088a81610f55565b50565b6000610897610d36565b905090565b61086f6103e761109a565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107c091859061081490866110c4565b61086f82826110d6565b61088a3382610ea0565b60006108fd8383610eb5565b9392505050565b7f0000000000000000000000000000000000000000000000000000000000000000600a0a90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0381166000908152602081905260409020545b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f53686f756c64206e6f742063616c6c20746869730000000000000000000000006044820152905160009181900360640190fd5b6000610a15826101a1610a0e8633610d0b565b9190610e8a565b9050610a22833383610d40565b610a2c8383610ea0565b505050565b61086f8282610ea0565b6000610a4682610aed565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610abb57600080fd5b505afa158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b505192915050565b6001600160a01b031660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107a95780601f1061077e576101008083540402835291602001916107a9565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107c0918590610814908661019f610e8a565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006107c0338484610da2565b610c266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846110e0565b6000610c32823061116e565b905061086f33826110d6565b60075490565b60006108fd838361116e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c7f8c610aed565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610cf68882610ced878787611186565b886101f86111c5565b610d01888888610d40565b5050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061089761121c565b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610db96001600160a01b03841615156101986112da565b610dd06001600160a01b03831615156101996112da565b610ddb838383610a2c565b6001600160a01b038316600090815260208190526040902054610e0190826101a0610e8a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e3090826110c4565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610e9984841115836112da565b5050900390565b610eaa82826112e8565b61086f600854610f55565b600080610ec1836113a9565b9050610ecd84826114da565b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610a2c908490611512565b6000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9057600080fd5b505afa158015610fa4573d6000803e3d6000fd5b505050506040513d6020811015610fba57600080fd5b50519050600360007f0000000000000000000000000000000000000000000000000000000000000000600a0a84840281610ff057fe5b0490508160ff168181610fff57fe5b046007819055604080517fc4ee6db90000000000000000000000000000000000000000000000000000000081529183036004830152516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163c4ee6db991602480830192600092919082900301818387803b15801561108657600080fd5b505af1158015610d01573d6000803e3d6000fd5b61088a817f42414c000000000000000000000000000000000000000000000000000000000061161b565b60008282016108fd84821015836112da565b610eaa8282611696565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611168908590611512565b50505050565b60008061117a836113a9565b9050610ecd8482611730565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006111d08561177a565b90506111e66111e08783876117e1565b836112da565b6111f5428410156101b86112da565b5050506001600160a01b039092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006112896118cc565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161086f5761086f8161109a565b6112ff6001600160a01b038316151561019b6112da565b61130b82600083610a2c565b6001600160a01b03821660009081526020819052604090205461133190826101b2610e8a565b6001600160a01b03831660009081526020819052604090205561136461135f826113596107c9565b906118d0565b6118de565b6040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600080826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d602081101561140f57600080fd5b5051905080611441577f0000000000000000000000000000000000000000000000000000000000000000915050610969565b6000836001600160a01b031663c2baf3566040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b5051905060006114b5856118e3565b905060006114c383836110c4565b90506114cf8185611730565b945050505050610969565b60008282026114fe8415806114f75750838583816114f457fe5b04145b60036112da565b670de0b6b3a7640000815b04949350505050565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061156e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611531565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115d0576040519150601f19603f3d011682016040523d82523d6000602084013e6115d5565b606091505b509150915060008214156115ed573d6000803e3d6000fd5b611168815160001480611613575081806020019051602081101561161057600080fd5b50515b6101a26112da565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6116a260008383610a2c565b6116b761135f826116b16107c9565b906110c4565b6001600160a01b0382166000908152602081905260409020546116da90826110c4565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061173f82151560046112da565b670de0b6b3a7640000830261177184158061176a5750670de0b6b3a764000085838161176757fe5b04145b60056112da565b82818161150957fe5b600061178461121c565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60006117f382516041146101b96112da565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561186c573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906118c05750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b60006108fd83836001610e8a565b600255565b600080826001600160a01b031663a8c62e766040518163ffffffff1660e01b815260040160206040518083038186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b505190506001600160a01b038116611984577f0000000000000000000000000000000000000000000000000000000000000000915050610969565b806001600160a01b03166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119bd57600080fd5b505afa1580156119d1573d6000803e3d6000fd5b505050506040513d60208110156119e757600080fd5b50519150610969905056fea2646970667358221220083139f5bb53b7330496487370e704c0016dc1eaf4b0f86ae664a7f5dc320dfd64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x226 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77C7B8FC GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC2BAF356 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x678 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x6F7 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0xC2BAF356 EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0xC8F93A9D EQ PUSH2 0x64C JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x627 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x8BBD3768 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x8BBD3768 EQ PUSH2 0x547 JUMPI DUP1 PUSH4 0x8CB1D67F EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x599 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5BF JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x77C7B8FC EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4F5 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x521 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x36EFD16F GT PUSH2 0x1BD JUMPI DUP1 PUSH4 0x4D9AB5CB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0x7158DA7C EQ PUSH2 0x4B9 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x4D9AB5CB EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x53CEB01C EQ PUSH2 0x467 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x36EFD16F EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3F2 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x41E JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x392 JUMPI PUSH2 0x226 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x302 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x233 PUSH2 0x6FF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x255 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x29A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F0 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x823 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x35F PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x87C JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x88D JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x89C JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A7 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x904 JUMP JUMPDEST PUSH2 0x477 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94F JUMP JUMPDEST PUSH2 0x477 PUSH2 0x96E JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0x992 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9FB JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA3B JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x86F JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA4C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAED JUMP JUMPDEST PUSH2 0x233 PUSH2 0xB08 JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x477 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x2D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xC3E JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC44 JUMP JUMPDEST PUSH2 0x355 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xC50 JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xD0B JUMP JUMPDEST PUSH2 0x2F0 PUSH2 0xD36 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x78C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C0 CALLER DUP5 DUP5 PUSH2 0xD40 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DC DUP5 DUP5 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x819 SWAP2 DUP7 SWAP2 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xE8A JUMP JUMPDEST PUSH2 0xD40 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x82D CALLER DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x839 DUP3 ADDRESS PUSH2 0xEB5 JUMP JUMPDEST SWAP1 POP PUSH2 0x86F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP4 PUSH2 0xED5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH2 0x88A DUP2 PUSH2 0xF55 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x897 PUSH2 0xD36 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x86F PUSH2 0x3E7 PUSH2 0x109A JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7C0 SWAP2 DUP6 SWAP1 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x10C4 JUMP JUMPDEST PUSH2 0x86F DUP3 DUP3 PUSH2 0x10D6 JUMP JUMPDEST PUSH2 0x88A CALLER DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH2 0xEB5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0xA EXP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53686F756C64206E6F742063616C6C2074686973000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA15 DUP3 PUSH2 0x1A1 PUSH2 0xA0E DUP7 CALLER PUSH2 0xD0B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xE8A JUMP JUMPDEST SWAP1 POP PUSH2 0xA22 DUP4 CALLER DUP4 PUSH2 0xD40 JUMP JUMPDEST PUSH2 0xA2C DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x86F DUP3 DUP3 PUSH2 0xEA0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA46 DUP3 PUSH2 0xAED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A9 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7C0 SWAP2 DUP6 SWAP1 PUSH2 0x814 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xE8A JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C0 CALLER DUP5 DUP5 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xC26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP5 PUSH2 0x10E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC32 DUP3 ADDRESS PUSH2 0x116E JUMP JUMPDEST SWAP1 POP PUSH2 0x86F CALLER DUP3 PUSH2 0x10D6 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH2 0x116E JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xC7F DUP13 PUSH2 0xAED JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xCF6 DUP9 DUP3 PUSH2 0xCED DUP8 DUP8 DUP8 PUSH2 0x1186 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x11C5 JUMP JUMPDEST PUSH2 0xD01 DUP9 DUP9 DUP9 PUSH2 0xD40 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x897 PUSH2 0x121C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xDB9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xDD0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xDDB DUP4 DUP4 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE01 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE30 SWAP1 DUP3 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE99 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x12DA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0xEAA DUP3 DUP3 PUSH2 0x12E8 JUMP JUMPDEST PUSH2 0x86F PUSH1 0x8 SLOAD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEC1 DUP4 PUSH2 0x13A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xECD DUP5 DUP3 PUSH2 0x14DA JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xA2C SWAP1 DUP5 SWAP1 PUSH2 0x1512 JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x3 PUSH1 0x0 PUSH32 0x0 PUSH1 0xA EXP DUP5 DUP5 MUL DUP2 PUSH2 0xFF0 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP2 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0xFFF JUMPI INVALID JUMPDEST DIV PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0xC4EE6DB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP4 SUB PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0xC4EE6DB9 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1086 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x88A DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x161B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x8FD DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0xEAA DUP3 DUP3 PUSH2 0x1696 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1168 SWAP1 DUP6 SWAP1 PUSH2 0x1512 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x117A DUP4 PUSH2 0x13A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xECD DUP5 DUP3 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D0 DUP6 PUSH2 0x177A JUMP JUMPDEST SWAP1 POP PUSH2 0x11E6 PUSH2 0x11E0 DUP8 DUP4 DUP8 PUSH2 0x17E1 JUMP JUMPDEST DUP4 PUSH2 0x12DA JUMP JUMPDEST PUSH2 0x11F5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x12DA JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x1289 PUSH2 0x18CC JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x86F JUMPI PUSH2 0x86F DUP2 PUSH2 0x109A JUMP JUMPDEST PUSH2 0x12FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x12DA JUMP JUMPDEST PUSH2 0x130B DUP3 PUSH1 0x0 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1331 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1364 PUSH2 0x135F DUP3 PUSH2 0x1359 PUSH2 0x7C9 JUMP JUMPDEST SWAP1 PUSH2 0x18D0 JUMP JUMPDEST PUSH2 0x18DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x140F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x1441 JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC2BAF356 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1490 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x14B5 DUP6 PUSH2 0x18E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14C3 DUP4 DUP4 PUSH2 0x10C4 JUMP JUMPDEST SWAP1 POP PUSH2 0x14CF DUP2 DUP6 PUSH2 0x1730 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x14FE DUP5 ISZERO DUP1 PUSH2 0x14F7 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x14F4 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x12DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x156E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1531 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x15D0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x15D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x15ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1168 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1613 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x12DA JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x16A2 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA2C JUMP JUMPDEST PUSH2 0x16B7 PUSH2 0x135F DUP3 PUSH2 0x16B1 PUSH2 0x7C9 JUMP JUMPDEST SWAP1 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x16DA SWAP1 DUP3 PUSH2 0x10C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x173F DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x12DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1771 DUP5 ISZERO DUP1 PUSH2 0x176A JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x1767 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x12DA JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x1509 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH2 0x1784 PUSH2 0x121C JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17F3 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x12DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x18C0 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FD DUP4 DUP4 PUSH1 0x1 PUSH2 0xE8A JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA8C62E76 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x191F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1933 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1949 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1984 JUMPI PUSH32 0x0 SWAP2 POP POP PUSH2 0x969 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x45D01E4A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x969 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD BALANCE CODECOPY CREATE2 0xBB MSTORE8 0xB7 CALLER DIV SWAP7 0x48 PUSH20 0x70E704C0016DC1EAF4B0F86AE664A7F5DC320DFD PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1109:3541:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4857:164:71;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5488:386:71;;;;;;;;;;;;;;;;;:::i;2905:240:128:-;;;;;;;;;;;;;;;;-1:-1:-1;2905:240:128;;:::i;:::-;;3156:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2037:198:128;;;;;;;;;;;;;;;;-1:-1:-1;2037:198:128;;:::i;2243:113:73:-;;;:::i;2787:112:128:-;;;;;;;;;;;;;;;;-1:-1:-1;2787:112:128;;;;;;-1:-1:-1;;;;;2787:112:128;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6269:211:71;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1083:99:80;;;;;;;;:::i;473:87:72:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;1502:177:127:-;;;;;;;;;;;;;;;;-1:-1:-1;1502:177:127;;;;;;-1:-1:-1;;;;;1502:177:127;;:::i;3339:114:128:-;;;:::i;3222:111::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3222:111:128;;;;;;;;;;;;;;4022:117:71;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;-1:-1:-1;;;;;4022:117:71;;:::i;1266:39:128:-;;;:::i;1852:120::-;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;866:283:72;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1497:109:80;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;-1:-1:-1;;;;;2006:113:73;;:::i;3151:65:128:-;;;;;;;;;;;;;;;;-1:-1:-1;3151:65:128;;;;;;-1:-1:-1;;;;;3151:65:128;;:::i;2373:164::-;;;;;;;;;;;;;;;;-1:-1:-1;2373:164:128;-1:-1:-1;;;;;2373:164:128;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;-1:-1:-1;;;;;1303:121:59;;:::i;2448:85:71:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6967:312:71;;;;;;;;:::i;3459:107:128:-;;;:::i;4342:170:71:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4342:170:71;;;;;;;;:::i;2543:238:128:-;;;;;;;;;;;;;;;;-1:-1:-1;2543:238:128;;:::i;2241:126::-;;;:::i;1832:167:127:-;;;;;;;;;;;;;;;;-1:-1:-1;1832:167:127;;;;;;-1:-1:-1;;;;;1832:167:127;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4570:149:71;;;;;;;;;;:::i;1184:113:59:-;;;:::i;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;-1:-1:-1;;;;;5752:19:71;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;2905:240:128:-;2975:33;2981:10;2993:14;2975:5;:33::i;:::-;3018:18;3039:37;3055:14;3071:4;3039:15;:37::i;:::-;3018:58;-1:-1:-1;3086:52:128;-1:-1:-1;;;;;3086:15:128;:28;3115:10;3018:58;3086:28;:52::i;:::-;2905:240;;:::o;3156:81:71:-;3221:9;;;;3156:81;:::o;2037:198:128:-;2179:12;:22;;;2211:17;2194:7;2211:8;:17::i;:::-;2037:198;:::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;2787:112:128:-;2859:33;15089:3:12;2859:7:128;:33::i;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6403:32:71;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;1502:177:127:-;1602:7;1628:44;1644:13;1659:12;1628:15;:44::i;:::-;1621:51;1502:177;-1:-1:-1;;;1502:177:127:o;3339:114:128:-;3427:19;3423:2;:23;3339:114;:::o;3222:111::-;3310:15;3222:111;:::o;4022:117:71:-;-1:-1:-1;;;;;4114:18:71;;4088:7;4114:18;;;;;;;;;;;4022:117;;;;:::o;1266:39:128:-;;;:::o;1852:120::-;1935:30;;;;;;;;;;;;;;;;;;;;;;;1916:7;;1935:30;;;;;;;866:283:72;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:73:o;2373:164:128:-;2464:7;2490:15;-1:-1:-1;;;;;2490:25:128;;2524:4;2490:40;;;;;;;;;;;;;-1:-1:-1;;;;;2490:40:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2490:40:128;;2373:164;-1:-1:-1;;2373:164:128:o;1303:121:59:-;-1:-1:-1;;;;;1398:19:59;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7143:32:71;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;3459:107:128:-;3545:13;3459:107;:::o;4342:170:71:-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;2543:238:128:-;2604:67;-1:-1:-1;;;;;2604:15:128;:32;2637:10;2657:4;2664:6;2604:32;:67::i;:::-;2681:21;2705:27;2719:6;2727:4;2705:13;:27::i;:::-;2681:51;;2742:32;2748:10;2760:13;2742:5;:32::i;2241:126::-;2335:25;;2241:126;:::o;1832:167:127:-;1927:7;1953:39;1967:10;1979:12;1953:13;:39::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;-1:-1:-1;;;;;1689:82:73;;;;;;-1:-1:-1;;;;;1689:82:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;-1:-1:-1;;;;;4685:18:71;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;10034:213:71:-;-1:-1:-1;;;;;10157:18:71;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;-1:-1:-1;;;;;7889:20:71;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;-1:-1:-1;;;;;7970:23:71;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;-1:-1:-1;;;;;8122:17:71;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;-1:-1:-1;;;;;8102:17:71;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;-1:-1:-1;;;;;8200:20:71;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;3572:289:128:-;3656:28;3668:7;3677:6;3656:11;:28::i;:::-;3832:22;3841:12;;3832:8;:22::i;2821:213:127:-;2922:7;2941:12;2956:27;2970:12;2956:13;:27::i;:::-;2941:42;-1:-1:-1;3000:27:127;:13;2941:42;3000:21;:27::i;:::-;2993:34;2821:213;-1:-1:-1;;;;2821:213:127:o;1514:214:77:-;1662:58;;;-1:-1:-1;;;;;1662:58:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;4162:486:128:-;4215:19;4237:4;-1:-1:-1;;;;;4237:16:128;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4237:18:128;;-1:-1:-1;4393:1:128;4366:24;4457:19;4453:2;:23;4428:21;;;4453:23;4427:49;;;;;4404:72;;4529:18;4514:33;;:12;:33;;;;;;4486:25;:61;;;4557:84;;;;;;4600:40;;;4557:84;;;;;-1:-1:-1;;;;;4557:13:128;:42;;;;:84;;;;;-1:-1:-1;;4557:84:128;;;;;;;-1:-1:-1;4557:42:128;:84;;;;;;;;;;;;;;;;;;;;;;;;;;1459:126:12;1506:28;1514:9;1506:28;:7;:28::i;966:167:78:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;3867:289:128:-;3951:28;3963:7;3972:6;3951:11;:28::i;1734:250:77:-;1908:68;;;-1:-1:-1;;;;;1908:68:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;3040:205:127:-;3136:7;3155:12;3170:27;3184:12;3170:13;:27::i;:::-;3155:42;-1:-1:-1;3214:24:127;:10;3155:42;3214:18;:24::i;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;;;;;;2884:19:59;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:83:70;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;9200:411:71:-;9275:68;-1:-1:-1;;;;;9284:21:71;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;-1:-1:-1;;;;;9435:18:71;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;-1:-1:-1;;;;;9414:18:71;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;:::-;9510:15;:42::i;:::-;9567:37;;;;;;;;9593:1;;-1:-1:-1;;;;;9567:37:71;;;;;;;;;;;;9200:411;;:::o;2005:810:127:-;2081:7;2100:31;2134:12;-1:-1:-1;;;;;2134:24:127;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2134:26:127;;-1:-1:-1;2174:28:127;2170:639;;2225:12;2218:19;;;;;2170:639;2268:32;2303:12;-1:-1:-1;;;;;2303:37:127;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2303:39:127;;-1:-1:-1;2356:41:127;2400:51;2438:12;2400:37;:51::i;:::-;2356:95;-1:-1:-1;2465:15:127;2483:63;:24;2356:95;2483:28;:63::i;:::-;2465:81;-1:-1:-1;2758:40:127;2465:81;2774:23;2758:15;:40::i;:::-;2751:47;;;;;;;;1833:209:66;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;;1833:209;-1:-1:-1;;;;1833:209:66:o;2324:914:77:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:77;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;1692:3378:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;8583:297:71;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;8718:42::-;-1:-1:-1;;;;;8791:18:71;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;-1:-1:-1;;;;;8770:18:71;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;3199:183:70;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;;;;;;3728:30:59;;;;;;:61;;;3782:7;-1:-1:-1;;;;;3762:27:59;:16;-1:-1:-1;;;;;3762:27:59;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3870:94:71:-;3937:12;:20;3870:94::o;3251:428:127:-;3350:7;3369:20;3392:12;-1:-1:-1;;;;;3392:21:127;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3392:23:127;;-1:-1:-1;;;;;;3429:26:127;;3425:248;;3557:12;3550:19;;;;;3425:248;3621:12;-1:-1:-1;;;;;3607:53:127;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3607:55:127;;-1:-1:-1;3600:62:127;;-1:-1:-1;3600:62:127"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256)":"b6b55f25","depositFor(uint256,address)":"36efd16f","fromTetuAmount(uint256,address)":"4d9ab5cb","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","getPricePerFullShare()":"77c7b8fc","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setRate(uint256)":"34fcf437","strategy()":"a8c62e76","symbol()":"95d89b41","toTetuAmount(uint256,address)":"c8f93a9d","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferUnderlying(uint256,address)":"8bbd3768","underlying()":"6f307dc3","underlyingAsset()":"7158da7c","underlyingBalanceInVault()":"c2baf356","underlyingBalanceWithInvestmentForHolder(address)":"8cb1d67f","underlyingUnit()":"53ceb01c","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"contract MockTetuStrategy\",\"name\":\"tetuStrategy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"fromTetuAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"},{\"internalType\":\"contract ITetuSmartVault\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"toTetuAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferUnderlying\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingAsset\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingBalanceInVault\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"underlyingBalanceWithInvestmentForHolder\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingUnit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockTetuSmartVault.sol\":\"MockTetuSmartVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuSmartVault.sol\":{\"keccak256\":\"0xb664723a923f5520065873b5b103a177d4adf1b3013a29fbf0bf69c999acc481\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dfa46b8c9b5cfb46532972bbb5626b4adda57c44099a2b05fe8e129a4c68e485\",\"dweb:/ipfs/QmZrSBKLnECdm9G15KXPRGceTCeRKPzymXpZfp7d3f3CJi\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\":{\"keccak256\":\"0x99484dcb080b9d5d57fe39c9e9d2d349a4975fe7ca53a4d66f9672a56c6434b1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://effa8083764cdb7850f6e2294ff9f3724d6567319746d20a2002cdb7c621b97e\",\"dweb:/ipfs/QmPzmEbCTZ1R8QpqE98aqmcjZtRCfY1qrRmzrfQ1KLTZ5R\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockTetuShareValueHelper.sol\":{\"keccak256\":\"0x3f835957411f526808d80f764fe2beb57fa564f00fef28f4abf0a0f3509d9e91\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d93c37b6aa4fbca46df0602e3f44051c0296a47dab6ba7fbe37e661230cca0c3\",\"dweb:/ipfs/QmZPffePUKyN9eFfQFWeFPCGX5Q7pfXipCDQDz2wwrj8Po\"]},\"contracts/test/MockTetuSmartVault.sol\":{\"keccak256\":\"0x592ab906114fb08e95ae564c1e32c1830a1020e1c8e2d34830f992a979638973\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2e90f7e2e8f0bb0d3da58f2fbb97b0fa9a47f89cd5006ef4bbe0c26a38fd19ec\",\"dweb:/ipfs/QmYghKE6cavdKXrCAbmLh673JfRGvpJBWkqrVofD3PmRrD\"]},\"contracts/test/MockTetuStrategy.sol\":{\"keccak256\":\"0x94b0332c9a9305a1aafc57b08d3522f97cd5f6852ef683d9ec62a82ad910ebd2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e6bc1456d4d937bfbc2f0a9bdfd63575cc8fe11d35673de6a0512812bc47fb37\",\"dweb:/ipfs/QmenUH1c27D34ftdHmYnXcgQ5b1bMTnX3Wg1UG4paNVAfC\"]}},\"version\":1}"}},"contracts/test/MockTetuStrategy.sol":{"MockTetuStrategy":{"abi":[{"inputs":[],"name":"investedUnderlyingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"investedUnderlyingBalance","type":"uint256"}],"name":"setInvestedUnderlyingBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526000805534801561001457600080fd5b5060ac806100236000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806345d01e4a146037578063c4ee6db914604f575b600080fd5b603d606b565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356071565b005b60005490565b60005556fea264697066735822122045bb7513bb8ec24bcd645729f760a557d46ac27d10f6d54f4d45aed1f917844e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xAC DUP1 PUSH2 0x23 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x45D01E4A EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC4EE6DB9 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x71 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xBB PUSH22 0x13BB8EC24BCD645729F760A557D46AC27D10F6D54F4D GASLIMIT 0xAE 0xD1 0xF9 OR DUP5 0x4E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"806:389:129:-:0;;;900:1;855:46;;806:389;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806345d01e4a146037578063c4ee6db914604f575b600080fd5b603d606b565b60408051918252519081900360200190f35b606960048036036020811015606357600080fd5b50356071565b005b60005490565b60005556fea264697066735822122045bb7513bb8ec24bcd645729f760a557d46ac27d10f6d54f4d45aed1f917844e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x45D01E4A EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xC4EE6DB9 EQ PUSH1 0x4F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x69 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH1 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x71 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0xBB PUSH22 0x13BB8EC24BCD645729F760A557D46AC27D10F6D54F4D GASLIMIT 0xAE 0xD1 0xF9 OR DUP5 0x4E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"806:389:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:128;;;:::i;:::-;;;;;;;;;;;;;;;;908:151;;;;;;;;;;;;;;;;-1:-1:-1;908:151:129;;:::i;:::-;;1065:128;1134:7;1160:26;1065:128;:::o;908:151::-;998:26;:54;908:151::o"},"methodIdentifiers":{"investedUnderlyingBalance()":"45d01e4a","setInvestedUnderlyingBalance(uint256)":"c4ee6db9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"investedUnderlyingBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"investedUnderlyingBalance\",\"type\":\"uint256\"}],\"name\":\"setInvestedUnderlyingBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockTetuStrategy.sol\":\"MockTetuStrategy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/ITetuStrategy.sol\":{\"keccak256\":\"0x99484dcb080b9d5d57fe39c9e9d2d349a4975fe7ca53a4d66f9672a56c6434b1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://effa8083764cdb7850f6e2294ff9f3724d6567319746d20a2002cdb7c621b97e\",\"dweb:/ipfs/QmPzmEbCTZ1R8QpqE98aqmcjZtRCfY1qrRmzrfQ1KLTZ5R\"]},\"contracts/test/MockTetuStrategy.sol\":{\"keccak256\":\"0x94b0332c9a9305a1aafc57b08d3522f97cd5f6852ef683d9ec62a82ad910ebd2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e6bc1456d4d937bfbc2f0a9bdfd63575cc8fe11d35673de6a0512812bc47fb37\",\"dweb:/ipfs/QmenUH1c27D34ftdHmYnXcgQ5b1bMTnX3Wg1UG4paNVAfC\"]}},\"version\":1}"}},"contracts/test/MockUnbuttonERC20.sol":{"MockUnbuttonERC20":{"abi":[{"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"INITIAL_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialRate","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017ab380380620017ab833981810160405260608110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011157600080fd5b9083019060208201858111156200012757600080fd5b82516401000000008111828201881017156200014257600080fd5b82525081516020918201929091019080838360005b838110156200017157818101518382015260200162000157565b50505050905090810190601f1680156200019f5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001bf90600390602085019062000212565b508051620001d590600490602084019062000212565b5050600580546001600160a01b0390951661010002610100600160a81b031960ff19909616601217959095169490941790935550620002ae915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025557805160ff191683800117855562000285565b8280016001018555821562000285579182015b828111156200028557825182559160200191906001019062000268565b506200029392915062000297565b5090565b5b8082111562000293576000815560010162000298565b6114ed80620002be6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806395d89b4111610104578063b6b55f25116100a2578063dd62ed3e11610071578063dd62ed3e14610630578063ea785a5e1461066b578063ed0287c0146106a4578063fe4b84df146106c1576101da565b8063b6b55f251461059f578063c70920bc146105bc578063ca9add8f146105c4578063da1919b3146105f7576101da565b8063a457c2d7116100de578063a457c2d7146104dd578063a4fa956814610516578063a9059cbb14610549578063aab3b7db14610582576101da565b806395d89b41146104b05780639975038c146104b8578063a0712d68146104c0576101da565b8063313ce5671161017c5780636f307dc31161014b5780636f307dc31461043c57806370a082311461046d578063853828b6146104a05780638eb4f434146104a8576101da565b8063313ce5671461039557806339509351146103b35780633af9e669146103ec57806342966c681461041f576101da565b8063205c2878116101b8578063205c2878146102c357806323b872dd146102fc5780632e1a7d4d1461033f5780632f4f21e21461035c576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd146102a9575b600080fd5b6101e76106e0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102956004803603604081101561027257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610794565b604080519115158252519081900360200190f35b6102b16107aa565b60408051918252519081900360200190f35b6102b1600480360360408110156102d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b0565b6102956004803603606081101561031257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e1565b6102b16004803603602081101561035557600080fd5b5035610842565b6102b16004803603604081101561037257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610865565b61039d610882565b6040805160ff9092168252519081900360200190f35b610295600480360360408110156103c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561088b565b6102b16004803603602081101561040257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108ce565b6102b16004803603602081101561043557600080fd5b50356108f1565b61044461090e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102b16004803603602081101561048357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661092f565b6102b1610957565b6102b1610987565b6101e761098d565b6102b1610a0c565b6102b1600480360360208110156104d657600080fd5b5035610a3c565b610295600480360360408110156104f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a59565b6102b16004803603602081101561052c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a9f565b6102956004803603604081101561055f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ac9565b6102b16004803603602081101561059857600080fd5b5035610ad6565b6102b1600480360360208110156105b557600080fd5b5035610ae4565b6102b1610b01565b6102b1600480360360208110156105da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b10565b6102b16004803603604081101561060d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b41565b6102b16004803603604081101561064657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b5e565b6102b16004803603604081101561068157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b96565b6102b1600480360360208110156106ba57600080fd5b5035610bb3565b6106de600480360360208110156106d757600080fd5b5035610bc1565b005b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561078a5780601f1061075f5761010080835404028352916020019161078a565b820191906000526020600020905b81548152906001019060200180831161076d57829003601f168201915b5050505050905090565b60006107a1338484610c03565b50600192915050565b60025490565b6000806107cc836107bf610c72565b6107c76107aa565b610d19565b90506107da33858584610d2f565b9392505050565b60006107ee848484610dc1565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610838918691610833908661019e610eea565b610c03565b5060019392505050565b600080610851836107bf610c72565b905061085f33338584610d2f565b92915050565b600080610874836107bf610c72565b90506107da33858584610f00565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107a19185906108339086610f8d565b600061085f6108dc8361092f565b6108e4610c72565b6108ec6107aa565b610f9f565b600080610900836108e4610c72565b905061085f33338386610d2f565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000806109633361092f565b90506000610973826108e4610c72565b905061098133338385610d2f565b50905090565b6103e881565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561078a5780601f1061075f5761010080835404028352916020019161078a565b600080610a183361092f565b90506000610a28826108e4610c72565b9050610a3633338385610d2f565b91505090565b600080610a4b836108e4610c72565b905061085f33338386610f00565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107a1918590610833908661019f610eea565b600080610aab3361092f565b90506000610abb826108e4610c72565b90506107da33858385610d2f565b60006107a1338484610dc1565b600061085f826108e4610c72565b600080610af3836107bf610c72565b905061085f33338584610f00565b6000610b0b610c72565b905090565b600080610b1c3361092f565b90506000610b2c826108e4610c72565b9050610b3a33858385610d2f565b5092915050565b600080610b50836108e4610c72565b90506107da33858386610f00565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600080610ba5836108e4610c72565b90506107da33858386610d2f565b600061085f826107bf610c72565b6005546103e882810291610bf59161010090910473ffffffffffffffffffffffffffffffffffffffff169033903090610fac565b610bff3082611041565b5050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d6020811015610d1257600080fd5b5051905090565b60008282850281610d2657fe5b04949350505050565b60008111610d88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061145c602e913960400191505060405180910390fd5b610d9284826110fa565b600554610dbb90610100900473ffffffffffffffffffffffffffffffffffffffff1684846111ea565b50505050565b610de573ffffffffffffffffffffffffffffffffffffffff8416151561019861127c565b610e0973ffffffffffffffffffffffffffffffffffffffff8316151561019961127c565b610e14838383611277565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e4790826101a0610eea565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e839082610f8d565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610ef9848411158361127c565b5050900390565b60008111610f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061148a602e913960400191505060405180910390fd5b600554610f8390610100900473ffffffffffffffffffffffffffffffffffffffff16853085610fac565b610dbb8382611041565b60008282016107da848210158361127c565b60008183850281610d2657fe5b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610dbb90859061128a565b61104d60008383611277565b6110676110628261105c6107aa565b90610f8d565b6113a0565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110979082610f8d565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61111e73ffffffffffffffffffffffffffffffffffffffff8316151561019b61127c565b61112a82600083611277565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461115d90826101b2610eea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055611198611062826111926107aa565b906113a5565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261127790849061128a565b505050565b81610bff57610bff816113b3565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112b6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611355576040519150601f19603f3d011682016040523d82523d6000602084013e61135a565b606091505b50915091506000821415611372573d6000803e3d6000fd5b610dbb815160001480611398575081806020019051602081101561139557600080fd5b50515b6101a261127c565b600255565b60006107da83836001610eea565b6113dd817f42414c00000000000000000000000000000000000000000000000000000000006113e0565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206275726e556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206d696e74a2646970667358221220d55f94180ecd818aa36d7c58037ee7cf55d2ebe70dd4ba49226501443fa5448964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17AB CODESIZE SUB DUP1 PUSH3 0x17AB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x171 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD DUP4 SWAP2 POP DUP3 SWAP1 PUSH3 0x1BF SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x212 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D5 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x212 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP7 AND PUSH1 0x12 OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE POP PUSH3 0x2AE SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x255 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x285 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x285 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x285 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x268 JUMP JUMPDEST POP PUSH3 0x293 SWAP3 SWAP2 POP PUSH3 0x297 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x293 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x298 JUMP JUMPDEST PUSH2 0x14ED DUP1 PUSH3 0x2BE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0xEA785A5E EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0xED0287C0 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xFE4B84DF EQ PUSH2 0x6C1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC70920BC EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0xCA9ADD8F EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xDA1919B3 EQ PUSH2 0x5F7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0xA4FA9568 EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x549 JUMPI DUP1 PUSH4 0xAAB3B7DB EQ PUSH2 0x582 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x4C0 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0x853828B6 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x8EB4F434 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3B3 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x41F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x205C2878 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x205C2878 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x35C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x794 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B0 JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E1 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x842 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x865 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x882 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88B JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x444 PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x92F JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x957 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x98D JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xA0C JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA3C JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA59 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xB01 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB10 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBB3 JUMP JUMPDEST PUSH2 0x6DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBC1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x78A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x75F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x78A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x76D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A1 CALLER DUP5 DUP5 PUSH2 0xC03 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7CC DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0xD19 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP6 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE DUP5 DUP5 DUP5 PUSH2 0xDC1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x838 SWAP2 DUP7 SWAP2 PUSH2 0x833 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xEEA JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x851 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP6 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x874 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP6 DUP5 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7A1 SWAP2 DUP6 SWAP1 PUSH2 0x833 SWAP1 DUP7 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F PUSH2 0x8DC DUP4 PUSH2 0x92F JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST PUSH2 0x8EC PUSH2 0x7AA JUMP JUMPDEST PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x900 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP4 DUP7 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x963 CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x973 DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x981 CALLER CALLER DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x78A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x75F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA18 CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA28 DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0xA36 CALLER CALLER DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP4 DUP7 PUSH2 0xF00 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7A1 SWAP2 DUP6 SWAP1 PUSH2 0x833 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAAB CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABB DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A1 CALLER DUP5 DUP5 PUSH2 0xDC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAF3 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP6 DUP5 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0B PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1C CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB2C DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A CALLER DUP6 DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB50 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP7 PUSH2 0xF00 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBA5 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP7 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F DUP3 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x3E8 DUP3 DUP2 MUL SWAP2 PUSH2 0xBF5 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xBFF ADDRESS DUP3 PUSH2 0x1041 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP6 MUL DUP2 PUSH2 0xD26 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x145C PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD92 DUP5 DUP3 PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xDBB SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP5 PUSH2 0x11EA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xDE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x127C JUMP JUMPDEST PUSH2 0xE09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x127C JUMP JUMPDEST PUSH2 0xE14 DUP4 DUP4 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE47 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xEEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE83 SWAP1 DUP3 PUSH2 0xF8D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x127C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x148A PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xF83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 ADDRESS DUP6 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xDBB DUP4 DUP3 PUSH2 0x1041 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7DA DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 DUP6 MUL DUP2 PUSH2 0xD26 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xDBB SWAP1 DUP6 SWAP1 PUSH2 0x128A JUMP JUMPDEST PUSH2 0x104D PUSH1 0x0 DUP4 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH2 0x1067 PUSH2 0x1062 DUP3 PUSH2 0x105C PUSH2 0x7AA JUMP JUMPDEST SWAP1 PUSH2 0xF8D JUMP JUMPDEST PUSH2 0x13A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1097 SWAP1 DUP3 PUSH2 0xF8D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x111E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x127C JUMP JUMPDEST PUSH2 0x112A DUP3 PUSH1 0x0 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x115D SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xEEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1198 PUSH2 0x1062 DUP3 PUSH2 0x1192 PUSH2 0x7AA JUMP JUMPDEST SWAP1 PUSH2 0x13A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1277 SWAP1 DUP5 SWAP1 PUSH2 0x128A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xBFF JUMPI PUSH2 0xBFF DUP2 PUSH2 0x13B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12F3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12B6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1355 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x135A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1372 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xDBB DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1398 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DA DUP4 DUP4 PUSH1 0x1 PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x13DD DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x13E0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID SSTORE PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206275726E55 PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206D696E74A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0x5F SWAP5 XOR 0xE 0xCD DUP2 DUP11 LOG3 PUSH14 0x7C58037EE7CF55D2EBE70DD4BA49 0x22 PUSH6 0x1443FA54489 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1053:5985:130:-:0;;;1231:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:171:130;;;;;;;;;;-1:-1:-1;1231:171:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:171:130;;;;;;;;;;-1:-1:-1;1231:171:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1231:171:130;;-1:-1:-1;;2118:13:71;;1344:5:130;;-1:-1:-1;1351:7:130;;2118:13:71;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;;;;1370:25:130;;::::1;2168:14:71::0;1370:25:130::1;-1:-1:-1::0;;;;;;;;2168:14:71;;;2180:2;2168:14;1370:25:130;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1053:5985:130;;-1:-1:-1;;1053:5985:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1053:5985:130;;;-1:-1:-1;1053:5985:130;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101da5760003560e01c806395d89b4111610104578063b6b55f25116100a2578063dd62ed3e11610071578063dd62ed3e14610630578063ea785a5e1461066b578063ed0287c0146106a4578063fe4b84df146106c1576101da565b8063b6b55f251461059f578063c70920bc146105bc578063ca9add8f146105c4578063da1919b3146105f7576101da565b8063a457c2d7116100de578063a457c2d7146104dd578063a4fa956814610516578063a9059cbb14610549578063aab3b7db14610582576101da565b806395d89b41146104b05780639975038c146104b8578063a0712d68146104c0576101da565b8063313ce5671161017c5780636f307dc31161014b5780636f307dc31461043c57806370a082311461046d578063853828b6146104a05780638eb4f434146104a8576101da565b8063313ce5671461039557806339509351146103b35780633af9e669146103ec57806342966c681461041f576101da565b8063205c2878116101b8578063205c2878146102c357806323b872dd146102fc5780632e1a7d4d1461033f5780632f4f21e21461035c576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd146102a9575b600080fd5b6101e76106e0565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102956004803603604081101561027257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610794565b604080519115158252519081900360200190f35b6102b16107aa565b60408051918252519081900360200190f35b6102b1600480360360408110156102d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107b0565b6102956004803603606081101561031257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e1565b6102b16004803603602081101561035557600080fd5b5035610842565b6102b16004803603604081101561037257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610865565b61039d610882565b6040805160ff9092168252519081900360200190f35b610295600480360360408110156103c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561088b565b6102b16004803603602081101561040257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108ce565b6102b16004803603602081101561043557600080fd5b50356108f1565b61044461090e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102b16004803603602081101561048357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661092f565b6102b1610957565b6102b1610987565b6101e761098d565b6102b1610a0c565b6102b1600480360360208110156104d657600080fd5b5035610a3c565b610295600480360360408110156104f357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a59565b6102b16004803603602081101561052c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a9f565b6102956004803603604081101561055f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610ac9565b6102b16004803603602081101561059857600080fd5b5035610ad6565b6102b1600480360360208110156105b557600080fd5b5035610ae4565b6102b1610b01565b6102b1600480360360208110156105da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b10565b6102b16004803603604081101561060d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b41565b6102b16004803603604081101561064657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b5e565b6102b16004803603604081101561068157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b96565b6102b1600480360360208110156106ba57600080fd5b5035610bb3565b6106de600480360360208110156106d757600080fd5b5035610bc1565b005b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561078a5780601f1061075f5761010080835404028352916020019161078a565b820191906000526020600020905b81548152906001019060200180831161076d57829003601f168201915b5050505050905090565b60006107a1338484610c03565b50600192915050565b60025490565b6000806107cc836107bf610c72565b6107c76107aa565b610d19565b90506107da33858584610d2f565b9392505050565b60006107ee848484610dc1565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610838918691610833908661019e610eea565b610c03565b5060019392505050565b600080610851836107bf610c72565b905061085f33338584610d2f565b92915050565b600080610874836107bf610c72565b90506107da33858584610f00565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107a19185906108339086610f8d565b600061085f6108dc8361092f565b6108e4610c72565b6108ec6107aa565b610f9f565b600080610900836108e4610c72565b905061085f33338386610d2f565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000806109633361092f565b90506000610973826108e4610c72565b905061098133338385610d2f565b50905090565b6103e881565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561078a5780601f1061075f5761010080835404028352916020019161078a565b600080610a183361092f565b90506000610a28826108e4610c72565b9050610a3633338385610d2f565b91505090565b600080610a4b836108e4610c72565b905061085f33338386610f00565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107a1918590610833908661019f610eea565b600080610aab3361092f565b90506000610abb826108e4610c72565b90506107da33858385610d2f565b60006107a1338484610dc1565b600061085f826108e4610c72565b600080610af3836107bf610c72565b905061085f33338584610f00565b6000610b0b610c72565b905090565b600080610b1c3361092f565b90506000610b2c826108e4610c72565b9050610b3a33858385610d2f565b5092915050565b600080610b50836108e4610c72565b90506107da33858386610f00565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600080610ba5836108e4610c72565b90506107da33858386610d2f565b600061085f826107bf610c72565b6005546103e882810291610bf59161010090910473ffffffffffffffffffffffffffffffffffffffff169033903090610fac565b610bff3082611041565b5050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600554604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d6020811015610d1257600080fd5b5051905090565b60008282850281610d2657fe5b04949350505050565b60008111610d88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061145c602e913960400191505060405180910390fd5b610d9284826110fa565b600554610dbb90610100900473ffffffffffffffffffffffffffffffffffffffff1684846111ea565b50505050565b610de573ffffffffffffffffffffffffffffffffffffffff8416151561019861127c565b610e0973ffffffffffffffffffffffffffffffffffffffff8316151561019961127c565b610e14838383611277565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e4790826101a0610eea565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e839082610f8d565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610ef9848411158361127c565b5050900390565b60008111610f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061148a602e913960400191505060405180910390fd5b600554610f8390610100900473ffffffffffffffffffffffffffffffffffffffff16853085610fac565b610dbb8382611041565b60008282016107da848210158361127c565b60008183850281610d2657fe5b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610dbb90859061128a565b61104d60008383611277565b6110676110628261105c6107aa565b90610f8d565b6113a0565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110979082610f8d565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61111e73ffffffffffffffffffffffffffffffffffffffff8316151561019b61127c565b61112a82600083611277565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461115d90826101b2610eea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055611198611062826111926107aa565b906113a5565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261127790849061128a565b505050565b81610bff57610bff816113b3565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112b6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611355576040519150601f19603f3d011682016040523d82523d6000602084013e61135a565b606091505b50915091506000821415611372573d6000803e3d6000fd5b610dbb815160001480611398575081806020019051602081101561139557600080fd5b50515b6101a261127c565b600255565b60006107da83836001610eea565b6113dd817f42414c00000000000000000000000000000000000000000000000000000000006113e0565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfe556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206275726e556e627574746f6e546f6b656e3a20746f6f2066657720756e627574746f6e20746f6b656e7320746f206d696e74a2646970667358221220d55f94180ecd818aa36d7c58037ee7cf55d2ebe70dd4ba49226501443fa5448964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x630 JUMPI DUP1 PUSH4 0xEA785A5E EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0xED0287C0 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xFE4B84DF EQ PUSH2 0x6C1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x59F JUMPI DUP1 PUSH4 0xC70920BC EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0xCA9ADD8F EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xDA1919B3 EQ PUSH2 0x5F7 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0xA4FA9568 EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x549 JUMPI DUP1 PUSH4 0xAAB3B7DB EQ PUSH2 0x582 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x4C0 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x6F307DC3 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x6F307DC3 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0x853828B6 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0x8EB4F434 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3B3 JUMPI DUP1 PUSH4 0x3AF9E669 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x41F JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x205C2878 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x205C2878 EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x33F JUMPI DUP1 PUSH4 0x2F4F21E2 EQ PUSH2 0x35C JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2A9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x221 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x209 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x794 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH2 0x7AA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7B0 JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E1 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x842 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x865 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x882 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88B JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8F1 JUMP JUMPDEST PUSH2 0x444 PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x92F JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x957 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x98D JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xA0C JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA3C JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA59 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x295 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0x2B1 PUSH2 0xB01 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB10 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB96 JUMP JUMPDEST PUSH2 0x2B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBB3 JUMP JUMPDEST PUSH2 0x6DE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xBC1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x78A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x75F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x78A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x76D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A1 CALLER DUP5 DUP5 PUSH2 0xC03 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7CC DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST PUSH2 0x7C7 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0xD19 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP6 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE DUP5 DUP5 DUP5 PUSH2 0xDC1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x838 SWAP2 DUP7 SWAP2 PUSH2 0x833 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xEEA JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x851 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP6 DUP5 PUSH2 0xD2F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x874 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP6 DUP5 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7A1 SWAP2 DUP6 SWAP1 PUSH2 0x833 SWAP1 DUP7 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F PUSH2 0x8DC DUP4 PUSH2 0x92F JUMP JUMPDEST PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST PUSH2 0x8EC PUSH2 0x7AA JUMP JUMPDEST PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x900 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP4 DUP7 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x963 CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x973 DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x981 CALLER CALLER DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x78A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x75F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA18 CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA28 DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0xA36 CALLER CALLER DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP4 DUP7 PUSH2 0xF00 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7A1 SWAP2 DUP6 SWAP1 PUSH2 0x833 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAAB CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABB DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A1 CALLER DUP5 DUP5 PUSH2 0xDC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAF3 DUP4 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x85F CALLER CALLER DUP6 DUP5 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0B PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1C CALLER PUSH2 0x92F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB2C DUP3 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A CALLER DUP6 DUP4 DUP6 PUSH2 0xD2F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB50 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP7 PUSH2 0xF00 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBA5 DUP4 PUSH2 0x8E4 PUSH2 0xC72 JUMP JUMPDEST SWAP1 POP PUSH2 0x7DA CALLER DUP6 DUP4 DUP7 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85F DUP3 PUSH2 0x7BF PUSH2 0xC72 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x3E8 DUP3 DUP2 MUL SWAP2 PUSH2 0xBF5 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xBFF ADDRESS DUP3 PUSH2 0x1041 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP6 MUL DUP2 PUSH2 0xD26 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x145C PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD92 DUP5 DUP3 PUSH2 0x10FA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xDBB SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 DUP5 PUSH2 0x11EA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xDE5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x127C JUMP JUMPDEST PUSH2 0xE09 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x127C JUMP JUMPDEST PUSH2 0xE14 DUP4 DUP4 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE47 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xEEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE83 SWAP1 DUP3 PUSH2 0xF8D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x127C JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xF59 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x148A PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH2 0xF83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 ADDRESS DUP6 PUSH2 0xFAC JUMP JUMPDEST PUSH2 0xDBB DUP4 DUP3 PUSH2 0x1041 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7DA DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 DUP6 MUL DUP2 PUSH2 0xD26 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xDBB SWAP1 DUP6 SWAP1 PUSH2 0x128A JUMP JUMPDEST PUSH2 0x104D PUSH1 0x0 DUP4 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH2 0x1067 PUSH2 0x1062 DUP3 PUSH2 0x105C PUSH2 0x7AA JUMP JUMPDEST SWAP1 PUSH2 0xF8D JUMP JUMPDEST PUSH2 0x13A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1097 SWAP1 DUP3 PUSH2 0xF8D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x111E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x127C JUMP JUMPDEST PUSH2 0x112A DUP3 PUSH1 0x0 DUP4 PUSH2 0x1277 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x115D SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xEEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1198 PUSH2 0x1062 DUP3 PUSH2 0x1192 PUSH2 0x7AA JUMP JUMPDEST SWAP1 PUSH2 0x13A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1277 SWAP1 DUP5 SWAP1 PUSH2 0x128A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xBFF JUMPI PUSH2 0xBFF DUP2 PUSH2 0x13B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12F3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12B6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1355 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x135A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1372 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xDBB DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1398 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7DA DUP4 DUP4 PUSH1 0x1 PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x13DD DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x13E0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID SSTORE PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206275726E55 PUSH15 0x627574746F6E546F6B656E3A20746F PUSH16 0x2066657720756E627574746F6E20746F PUSH12 0x656E7320746F206D696E74A2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 0x5F SWAP5 XOR 0xE 0xCD DUP2 DUP11 LOG3 PUSH14 0x7C58037EE7CF55D2EBE70DD4BA49 0x22 PUSH6 0x1443FA54489 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1053:5985:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;4157:266:130;;;;;;;;;;;;;;;;-1:-1:-1;4157:266:130;;;;;;;;;:::i;5488:386:71:-;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3891:260:130:-;;;;;;;;;;;;;;;;-1:-1:-1;3891:260:130;;:::i;3620:265::-;;;;;;;;;;;;;;;;-1:-1:-1;3620:265:130;;;;;;;;;:::i;3156:81:71:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;5260:188:130:-;;;;;;;;;;;;;;;;-1:-1:-1;5260:188:130;;;;:::i;2232:254::-;;;;;;;;;;;;;;;;-1:-1:-1;2232:254:130;;:::i;5033:98::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4022:117:71;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;4429:294:130:-;;;:::i;1143:47::-;;;:::i;2448:85:71:-;;;:::i;2758:291:130:-;;;:::i;1707:253::-;;;;;;;;;;;;;;;;-1:-1:-1;1707:253:130;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;3055:295:130:-;;;;;;;;;;;;;;;;-1:-1:-1;3055:295:130;;;;:::i;4342:170:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;5643:179:130:-;;;;;;;;;;;;;;;;-1:-1:-1;5643:179:130;;:::i;3356:258::-;;;;;;;;;;;;;;;;-1:-1:-1;3356:258:130;;:::i;5137:117::-;;;:::i;4729:298::-;;;;;;;;;;;;;;;;-1:-1:-1;4729:298:130;;;;:::i;1966:260::-;;;;;;;;;;;;;;;;-1:-1:-1;1966:260:130;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;2492:260:130:-;;;;;;;;;;;;;;;;-1:-1:-1;2492:260:130;;;;;;;;;:::i;5454:183::-;;;;;;;;;;;;;;;;-1:-1:-1;5454:183:130;;:::i;1408:293::-;;;;;;;;;;;;;;;;-1:-1:-1;1408:293:130;;:::i;:::-;;2254:81:71;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;4157:266:130:-;4233:7;4252:14;4269:72;4291:7;4300:25;:23;:25::i;:::-;4327:13;:11;:13::i;:::-;4269:21;:72::i;:::-;4252:89;;4351:42;4361:10;4373:2;4377:7;4386:6;4351:9;:42::i;:::-;4410:6;4157:266;-1:-1:-1;;;4157:266:130:o;5488:386:71:-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3891:260:130:-;3953:7;3972:14;3989:72;4011:7;4020:25;:23;:25::i;3989:72::-;3972:89;;4071:50;4081:10;4093;4105:7;4114:6;4071:9;:50::i;:::-;4138:6;3891:260;-1:-1:-1;;3891:260:130:o;3620:265::-;3696:7;3715:14;3732:72;3754:7;3763:25;:23;:25::i;3732:72::-;3715:89;;3814:41;3823:10;3835:2;3839:7;3848:6;3814:8;:41::i;3156:81:71:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;5260:188:130:-;5336:7;5362:79;5382:16;5392:5;5382:9;:16::i;:::-;5400:25;:23;:25::i;:::-;5427:13;:11;:13::i;:::-;5362:19;:79::i;2232:254::-;2289:7;2308:15;2326:69;2346:6;2354:25;:23;:25::i;2326:69::-;2308:87;;2405:50;2415:10;2427;2439:7;2448:6;2405:9;:50::i;5033:98::-;5113:11;;;;;;;;5033:98::o;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;4429:294:130:-;4479:7;4498:14;4515:21;4525:10;4515:9;:21::i;:::-;4498:38;;4546:15;4564:69;4584:6;4592:25;:23;:25::i;4564:69::-;4546:87;;4643:50;4653:10;4665;4677:7;4686:6;4643:9;:50::i;:::-;-1:-1:-1;4710:6:130;-1:-1:-1;4429:294:130;:::o;1143:47::-;1185:5;1143:47;:::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;2758:291:130;2804:7;2823:14;2840:21;2850:10;2840:9;:21::i;:::-;2823:38;;2871:15;2889:69;2909:6;2917:25;:23;:25::i;2889:69::-;2871:87;;2968:50;2978:10;2990;3002:7;3011:6;2968:9;:50::i;:::-;3035:7;-1:-1:-1;;2758:291:130;:::o;1707:253::-;1764:7;1783:15;1801:69;1821:6;1829:25;:23;:25::i;1801:69::-;1783:87;;1880:49;1889:10;1901;1913:7;1922:6;1880:8;:49::i;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;3055:295:130:-;3113:7;3132:14;3149:21;3159:10;3149:9;:21::i;:::-;3132:38;;3180:15;3198:69;3218:6;3226:25;:23;:25::i;3198:69::-;3180:87;;3277:42;3287:10;3299:2;3303:7;3312:6;3277:9;:42::i;4342:170:71:-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;5643:179:130:-;5720:7;5746:69;5766:6;5774:25;:23;:25::i;3356:258::-;3417:7;3436:14;3453:72;3475:7;3484:25;:23;:25::i;3453:72::-;3436:89;;3535:49;3544:10;3556;3568:7;3577:6;3535:8;:49::i;5137:117::-;5196:7;5222:25;:23;:25::i;:::-;5215:32;;5137:117;:::o;4729:298::-;4791:7;4810:14;4827:21;4837:10;4827:9;:21::i;:::-;4810:38;;4858:15;4876:69;4896:6;4904:25;:23;:25::i;4876:69::-;4858:87;;4955:42;4965:10;4977:2;4981:7;4990:6;4955:9;:42::i;:::-;-1:-1:-1;5014:6:130;4729:298;-1:-1:-1;;4729:298:130:o;1966:260::-;2038:7;2057:15;2075:69;2095:6;2103:25;:23;:25::i;2075:69::-;2057:87;;2154:41;2163:10;2175:2;2179:7;2188:6;2154:8;:41::i;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2492:260:130:-;2563:7;2582:15;2600:69;2620:6;2628:25;:23;:25::i;2600:69::-;2582:87;;2679:42;2689:10;2701:2;2705:7;2714:6;2679:9;:42::i;5454:183::-;5532:7;5558:72;5580:7;5589:25;:23;:25::i;1408:293::-;1533:11;;1185:5;1487:29;;;;1526:126;;1533:11;;;;;;;1576:10;;1608:4;;1526:36;:126::i;:::-;1662:32;1676:4;1683:10;1662:5;:32::i;:::-;1408:293;;:::o;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;6450:134:130:-;6540:11;;6533:44;;;;;;6571:4;6533:44;;;;;;-1:-1:-1;;6540:11:130;;;;;;6533:29;;:44;;;;;;;;;;;;;;6540:11;6533:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6533:44:130;;-1:-1:-1;6450:134:130;:::o;6590:222::-;6737:7;6789:16;6774:11;6764:7;:21;6763:42;;;;;;;6590:222;-1:-1:-1;;;;6590:222:130:o;6148:296::-;6299:1;6290:6;:10;6282:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:19;6368:4;6374:6;6362:5;:19::i;:::-;6399:11;;6392:45;;6399:11;;;;;6425:2;6429:7;6392:32;:45::i;:::-;6148:296;;;;:::o;7753:559:71:-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;5828:314:130:-;5978:1;5969:6;:10;5961:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6048:11;;6041:66;;6048:11;;;;;6078:4;6092;6099:7;6041:36;:66::i;:::-;6118:17;6124:2;6128:6;6118:5;:17::i;966:167:78:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;6818:218:130:-;6962:7;7018:11;6998:16;6989:6;:25;6988:41;;;;1734:250:77;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;:::-;1514:214;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;3870:94:71:-;3937:12;:20;3870:94::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"INITIAL_DEPOSIT()":"8eb4f434","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","increaseAllowance(address,uint256)":"39509351","initialize(uint256)":"fe4b84df","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","totalUnderlying()":"c70920bc","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INITIAL_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialRate\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockUnbuttonERC20.sol\":\"MockUnbuttonERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockUnbuttonERC20.sol\":{\"keccak256\":\"0x29425623db437987782c91421fe7b4f19875b4c5a220f70723f63ff2104dffb1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a304bd9775269a943bcd2e072ece864e6350213df1702c87d4596e4a49b3962b\",\"dweb:/ipfs/QmWj9nAAWxaEv1sp4KPjb8ugkdyYz5pvWxmMBvic1ePgRt\"]}},\"version\":1}"}},"contracts/test/MockWstETH.sol":{"MockWstETH":{"abi":[{"inputs":[{"internalType":"contract IstETH","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526714d1120d7b1600006006553480156200001d57600080fd5b50604051620012c1380380620012c1833981810160405260208110156200004357600080fd5b5051604080518082018252601481527f57726170706564205374616b65642045746865720000000000000000000000006020828101918252835180850190945260068452650eee6e88aa8960d31b908401528151919291620000a891600391620000f8565b508051620000be906004906020840190620000f8565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff1990941660121793909316929092179091555062000194565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b61111d80620001a46000396000f3fe6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610a56565b600061063c60065483610a9a90919063ffffffff16565b92915050565b61064e60008383610aed565b6106686106638261065d6107dd565b90610af2565b610b0b565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610af2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610b10565b50600192915050565b60025490565b60006107f0848484610b7f565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610ca8565b610b10565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610af2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610ca8565b60006107d4338484610b7f565b600061063c60065483610cbe90919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610cf1565b6000610a2a836109a3565b60055490915061063c90610100900473ffffffffffffffffffffffffffffffffffffffff163383610de1565b600554600090610a8390610100900473ffffffffffffffffffffffffffffffffffffffff16333085610e6e565b6000610a8e83610625565b905061063c3382610642565b6000610aa98215156004610f09565b670de0b6b3a76400008302610adb841580610ad45750670de0b6b3a7640000858381610ad157fe5b04145b6005610f09565b828181610ae457fe5b04949350505050565b505050565b6000828201610b048482101583610f09565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ba373ffffffffffffffffffffffffffffffffffffffff84161515610198610f09565b610bc773ffffffffffffffffffffffffffffffffffffffff83161515610199610f09565b610bd2838383610aed565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c0590826101a0610ca8565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c419082610af2565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cb78484111583610f09565b5050900390565b6000828202610ce2841580610cdb575083858381610cd857fe5b04145b6003610f09565b670de0b6b3a764000081610ae4565b610d1573ffffffffffffffffffffffffffffffffffffffff8316151561019b610f09565b610d2182600083610aed565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d5490826101b2610ca8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d8f61066382610d896107dd565b90610f1b565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610aed908490610f29565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610f03908590610f29565b50505050565b81610f1757610f178161103f565b5050565b6000610b0483836001610ca8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610f9257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ff4576040519150601f19603f3d011682016040523d82523d6000602084013e610ff9565b606091505b50915091506000821415611011573d6000803e3d6000fd5b610f03815160001480611037575081806020019051602081101561103457600080fd5b50515b6101a2610f09565b611069817f42414c000000000000000000000000000000000000000000000000000000000061106c565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220b3ebb228d21ae27dc8f2039b8488f8afc0cac6ac6477951595c95cc4376a888b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0x14D1120D7B160000 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x12C1 CODESIZE SUB DUP1 PUSH3 0x12C1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x57726170706564205374616B6564204574686572000000000000000000000000 PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0xEEE6E88AA89 PUSH1 0xD3 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0xA8 SWAP2 PUSH1 0x3 SWAP2 PUSH3 0xF8 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xBE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xF8 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP5 AND PUSH1 0x12 OR SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH3 0x194 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x13B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14E JUMP JUMPDEST POP PUSH3 0x179 SWAP3 SWAP2 POP PUSH3 0x17D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x179 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17E JUMP JUMPDEST PUSH2 0x111D DUP1 PUSH3 0x1A4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xA9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xAF2 JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xCBE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH2 0x63C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xA83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0xE6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8E DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xADB DUP5 ISZERO DUP1 PUSH2 0xAD4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xAD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0xF09 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xAE4 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB04 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBA3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBC7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBD2 DUP4 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC05 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC41 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xCE2 DUP5 ISZERO DUP1 PUSH2 0xCDB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xCD8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xD15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xD21 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD54 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD8F PUSH2 0x663 DUP3 PUSH2 0xD89 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xAED SWAP1 DUP5 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF03 SWAP1 DUP6 SWAP1 PUSH2 0xF29 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xF17 JUMPI PUSH2 0xF17 DUP2 PUSH2 0x103F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB04 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF92 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1011 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xF03 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1037 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x1069 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x106C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 0xEB 0xB2 0x28 0xD2 BYTE 0xE2 PUSH30 0xC8F2039B8488F8AFC0CAC6AC6477951595C95CC4376A888B64736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1142:1543:131:-:0;;;1309:6;1287:28;;1322:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1322:96:131;2052:137:71;;;;;;;;;;;;1322:96:131;2052:137:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;2052:137:71;;;;2118:13;;2052:137;;;2118:13;;:5;;:13;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;;;;1398:13:131;;::::1;2168:14:71::0;1398:13:131::1;-1:-1:-1::0;;;;;;;;2168:14:71;;;2180:2;2168:14;1398:13:131;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1142:1543:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1142:1543:131;;;-1:-1:-1;1142:1543:131;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610a56565b600061063c60065483610a9a90919063ffffffff16565b92915050565b61064e60008383610aed565b6106686106638261065d6107dd565b90610af2565b610b0b565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610af2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610b10565b50600192915050565b60025490565b60006107f0848484610b7f565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610ca8565b610b10565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610af2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610ca8565b60006107d4338484610b7f565b600061063c60065483610cbe90919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610cf1565b6000610a2a836109a3565b60055490915061063c90610100900473ffffffffffffffffffffffffffffffffffffffff163383610de1565b600554600090610a8390610100900473ffffffffffffffffffffffffffffffffffffffff16333085610e6e565b6000610a8e83610625565b905061063c3382610642565b6000610aa98215156004610f09565b670de0b6b3a76400008302610adb841580610ad45750670de0b6b3a7640000858381610ad157fe5b04145b6005610f09565b828181610ae457fe5b04949350505050565b505050565b6000828201610b048482101583610f09565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ba373ffffffffffffffffffffffffffffffffffffffff84161515610198610f09565b610bc773ffffffffffffffffffffffffffffffffffffffff83161515610199610f09565b610bd2838383610aed565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c0590826101a0610ca8565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c419082610af2565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cb78484111583610f09565b5050900390565b6000828202610ce2841580610cdb575083858381610cd857fe5b04145b6003610f09565b670de0b6b3a764000081610ae4565b610d1573ffffffffffffffffffffffffffffffffffffffff8316151561019b610f09565b610d2182600083610aed565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d5490826101b2610ca8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d8f61066382610d896107dd565b90610f1b565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610aed908490610f29565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610f03908590610f29565b50505050565b81610f1757610f178161103f565b5050565b6000610b0483836001610ca8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610f9257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ff4576040519150601f19603f3d011682016040523d82523d6000602084013e610ff9565b606091505b50915091506000821415611011573d6000803e3d6000fd5b610f03815160001480611037575081806020019051602081101561103457600080fd5b50515b6101a2610f09565b611069817f42414c000000000000000000000000000000000000000000000000000000000061106c565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220b3ebb228d21ae27dc8f2039b8488f8afc0cac6ac6477951595c95cc4376a888b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xA9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xAF2 JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xCBE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH2 0x63C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xA83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0xE6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8E DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xADB DUP5 ISZERO DUP1 PUSH2 0xAD4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xAD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0xF09 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xAE4 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB04 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBA3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBC7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBD2 DUP4 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC05 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC41 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xCE2 DUP5 ISZERO DUP1 PUSH2 0xCDB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xCD8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xD15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xD21 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD54 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD8F PUSH2 0x663 DUP3 PUSH2 0xD89 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xAED SWAP1 DUP5 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF03 SWAP1 DUP6 SWAP1 PUSH2 0xF29 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xF17 JUMPI PUSH2 0xF17 DUP2 PUSH2 0x103F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB04 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF92 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1011 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xF03 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1037 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x1069 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x106C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 0xEB 0xB2 0x28 0xD2 BYTE 0xE2 PUSH30 0xC8F2039B8488F8AFC0CAC6AC6477951595C95CC4376A888B64736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1142:1543:131:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:5;;:47;;;;;;2083:4;2042:47;;;;;;:5;;;;;;;:12;;2063:9;;2042:47;;;;;;;;;;;;;;2063:9;2042:5;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2099:46:131;;-1:-1:-1;2105:10:131;2117:27;2134:9;2117:16;:27::i;:::-;2099:5;:46::i;:::-;1142:1543;;;;;2446:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2254:81:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;5488:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;1287:28:131:-;;;;;;;;;;;;;:::i;3156:81:71:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;2567:116:131:-;;;;;;;;;;;;;:::i;2448:85:71:-;;;;;;;;;;;;;:::i;6967:312::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;2158:137:131:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2158:137:131;;:::i;2301:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2301:139:131;;:::i;1253:28::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4570:149:71;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1723:276:131:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1723:276:131;;:::i;1424:293::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1424:293:131;;:::i;2158:137::-;2236:7;2262:26;2283:4;;2262:12;:20;;:26;;;;:::i;:::-;2255:33;2158:137;-1:-1:-1;;2158:137:131:o;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;2446:115:131:-;2503:7;2529:25;2546:7;2529:16;:25::i;:::-;2522:32;;2446:115;:::o;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;1287:28:131:-;;;;:::o;3156:81:71:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2567:116:131:-;2625:7;2651:25;2668:7;2651:16;:25::i;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;2301:139:131:-;2380:7;2406:27;2428:4;;2406:13;:21;;:27;;;;:::i;1253:28::-;;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1723:276:131:-;1789:7;1808:32;1814:10;1826:13;1808:5;:32::i;:::-;1850:19;1872:31;1889:13;1872:16;:31::i;:::-;1920:5;;1850:53;;-1:-1:-1;1913:51:131;;1920:5;;;;;1940:10;1850:53;1913:26;:51::i;1424:293::-;1513:5;;1487:7;;1506:71;;1513:5;;;;;1537:10;1557:4;1564:12;1506:30;:71::i;:::-;1587:20;1610:30;1627:12;1610:16;:30::i;:::-;1587:53;;1650:31;1656:10;1668:12;1650:5;:31::i;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:66:o;11245:183:71:-;;;;:::o;966:167:78:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:78:o;3870:94:71:-;3937:12;:20;3870:94::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;1833:209:66:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;9200:411:71;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1734:250::-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;1459:126:12:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","rate()":"2c4e722e","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","symbol()":"95d89b41","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockWstETH.sol\":\"MockWstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockWstETH.sol\":{\"keccak256\":\"0x5a4bbfe0710bd5c8fc05add15ef148efab460d3ccd32315978542e57d54b1d2c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://18cddf6d434c5926c13f2e8a259b23d8c721d340499b72a6dffc500d788ac8f5\",\"dweb:/ipfs/QmSjUEUZVaT2XEGhcbFjZYLS14ByqkCK7RGjz7Xi3LfL6d\"]}},\"version\":1}"}},"contracts/test/MockYearnTokenVault.sol":{"MockYearnTokenVault":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"contract IERC20","name":"underlyingAsset","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnWithoutAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"fromYearn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pricePerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"mainAmount","type":"uint256"}],"name":"toYearn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wrappedAmount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"610100604052670de0b6b3a76400006007553480156200001e57600080fd5b506040516200198c3803806200198c833981810160405260808110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060408181526020838101519382015183830190925260018352603160f81b818401528751939550909350869286928692859283929183918791620001f0916003918501906200028c565b508051620002069060049060208401906200028c565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c052620002598162000276565b50505060601b6001600160601b03191660e0525062000328915050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002cf57805160ff1916838001178555620002ff565b82800160010185558215620002ff579182015b82811115620002ff578251825591602001919060010190620002e2565b506200030d92915062000311565b5090565b5b808211156200030d576000815560010162000312565b60805160a05160c05160e05160601c6116216200036b600039806106f652806108fd5280610bd352508061115b52508061119d52508061117c52506116216000f3fe608060405234801561001057600080fd5b50600436106101b85760003560e01c806370a08231116100f957806399530b0611610097578063d505accf11610071578063d505accf146105f1578063dd62ed3e1461064f578063ed24911d1461068a578063fc0c546a14610692576101b8565b806399530b0614610577578063a457c2d71461057f578063a9059cbb146105b8576101b8565b80637ecebe00116100d35780637ecebe00146104ec5780638a3e645a1461051f57806390193b7c1461053c57806395d89b411461056f576101b8565b806370a082311461044757806379cc67901461047a5780637c602bc2146104b3576101b8565b8063313ce567116101665780633950935111610140578063395093511461037f57806340c10f19146103b857806342966c68146103f15780636e553f651461040e576101b8565b8063313ce5671461033a57806334fcf437146103585780633644e51514610377576101b8565b806309c23bf31161019757806309c23bf3146102d257806318160ddd146102ef57806323b872dd146102f7576101b8565b8062f714ce146101bd57806306fdde0314610208578063095ea7b314610285575b600080fd5b6101f6600480360360408110156101d357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166106c3565b60408051918252519081900360200190f35b610210610724565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024a578181015183820152602001610232565b50505050905090810190601f1680156102775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102be6004803603604081101561029b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107d8565b604080519115158252519081900360200190f35b6101f6600480360360208110156102e857600080fd5b50356107ee565b6101f66107ff565b6102be6004803603606081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610805565b610342610866565b6040805160ff9092168252519081900360200190f35b6103756004803603602081101561036e57600080fd5b503561086f565b005b6101f6610874565b6102be6004803603604081101561039557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610883565b610375600480360360408110156103ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108c6565b6103756004803603602081101561040757600080fd5b50356108d4565b6101f66004803603604081101561042457600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166108e1565b6101f66004803603602081101561045d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661093c565b6103756004803603604081101561049057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610964565b610375600480360360408110156104c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561099a565b6101f66004803603602081101561050257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109a4565b6101f66004803603602081101561053557600080fd5b50356109af565b6101f66004803603602081101561055257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109ba565b6102106109e2565b6101f6610a61565b6102be6004803603604081101561059557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a67565b6102be600480360360408110156105ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aad565b610375600480360360e081101561060757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610aba565b6101f66004803603604081101561066557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b8f565b6101f6610bc7565b61069a610bd1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60006106cf3384610bf5565b60006106da84610cea565b905061071d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168483610d01565b9392505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e5338484610d8e565b50600192915050565b60006107f982610cea565b92915050565b60025490565b6000610812848484610dfd565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461085c918691610857908661019e610f26565b610d8e565b5060019392505050565b60055460ff1690565b600755565b600061087e610bc7565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107e59185906108579086610f3c565b6108d08282610f4e565b5050565b6108de3382610bf5565b50565b600061092573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086611002565b60006109308461109d565b905061071d8382610f4e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061097e826101a16109778633610b8f565b9190610f26565b905061098b833383610d8e565b6109958383610bf5565b505050565b6108d08282610bf5565b60006107f9826109ba565b60006107f98261109d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107ce5780601f106107a3576101008083540402835291602001916107ce565b60075490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107e5918590610857908661019f610f26565b60006107e5338484610dfd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610ae98c6109ba565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610b7a8882610b718787876110b4565b886101f86110f3565b610b85888888610d8e565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061087e611157565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c1973ffffffffffffffffffffffffffffffffffffffff8316151561019b611222565b610c2582600083610995565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c5890826101b2610f26565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c98610c9382610c8d6107ff565b90611230565b61123e565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006107f96007548361124390919063ffffffff16565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610995908490611296565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e2173ffffffffffffffffffffffffffffffffffffffff84161515610198611222565b610e4573ffffffffffffffffffffffffffffffffffffffff83161515610199611222565b610e50838383610995565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e8390826101a0610f26565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ebf9082610f3c565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f358484111583611222565b5050900390565b600082820161071d8482101583611222565b610f5a60008383610995565b610f6f610c9382610f696107ff565b90610f3c565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f9f9082610f3c565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611097908590611296565b50505050565b60006107f9600754836113ac90919063ffffffff16565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006110fe856113df565b905061111461110e878387611446565b83611222565b611123428410156101b8611222565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111c4611558565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816108d0576108d08161155c565b600061071d83836001610f26565b600255565b60006112528215156004611222565b670de0b6b3a7640000830261128484158061127d5750670de0b6b3a764000085838161127a57fe5b04145b6005611222565b82818161128d57fe5b04949350505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ff57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611361576040519150601f19603f3d011682016040523d82523d6000602084013e611366565b606091505b5091509150600082141561137e573d6000803e3d6000fd5b6110978151600014806113a457508180602001905160208110156113a157600080fd5b50515b6101a2611222565b60008282026113d08415806113c95750838583816113c657fe5b04145b6003611222565b670de0b6b3a76400008161128d565b60006113e9611157565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061145882516041146101b9611222565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114d1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061154c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526108de917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220ba9805f224b99c059e9b87622d2526291af4a7e4efe575e33d0f6b5138826b5564736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x7 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x198C CODESIZE SUB DUP1 PUSH3 0x198C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xAB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xF3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x177 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x15D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x1A5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD SWAP4 DUP3 ADD MLOAD DUP4 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 DUP4 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP2 DUP5 ADD MSTORE DUP8 MLOAD SWAP4 SWAP6 POP SWAP1 SWAP4 POP DUP7 SWAP3 DUP7 SWAP3 DUP7 SWAP3 DUP6 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1F0 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x28C JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x206 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x28C JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x259 DUP2 PUSH3 0x276 JUMP JUMPDEST POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE POP PUSH3 0x328 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2CF JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2FF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2FF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2FF JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2E2 JUMP JUMPDEST POP PUSH3 0x30D SWAP3 SWAP2 POP PUSH3 0x311 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x30D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x312 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x1621 PUSH3 0x36B PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6F6 MSTORE DUP1 PUSH2 0x8FD MSTORE DUP1 PUSH2 0xBD3 MSTORE POP DUP1 PUSH2 0x115B MSTORE POP DUP1 PUSH2 0x119D MSTORE POP DUP1 PUSH2 0x117C MSTORE POP PUSH2 0x1621 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x99530B06 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5F1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x68A JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x692 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x99530B06 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5B8 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x8A3E645A EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x56F JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4B3 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x40E JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x377 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x9C23BF3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x9C23BF3 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2F7 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x285 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH2 0x724 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x232 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x277 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x805 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x866 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F6 PUSH2 0x874 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x883 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C6 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x93C JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x964 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x99A JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x210 PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAAD JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xABA JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB8F JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x69A PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x6CF CALLER DUP5 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DA DUP5 PUSH2 0xCEA JUMP JUMPDEST SWAP1 POP PUSH2 0x71D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP5 DUP4 PUSH2 0xD01 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 CALLER DUP5 DUP5 PUSH2 0xD8E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0xCEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP5 DUP5 DUP5 PUSH2 0xDFD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x85C SWAP2 DUP7 SWAP2 PUSH2 0x857 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF26 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87E PUSH2 0xBC7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7E5 SWAP2 DUP6 SWAP1 PUSH2 0x857 SWAP1 DUP7 PUSH2 0xF3C JUMP JUMPDEST PUSH2 0x8D0 DUP3 DUP3 PUSH2 0xF4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8DE CALLER DUP3 PUSH2 0xBF5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x925 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x1002 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x930 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP1 POP PUSH2 0x71D DUP4 DUP3 PUSH2 0xF4E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E DUP3 PUSH2 0x1A1 PUSH2 0x977 DUP7 CALLER PUSH2 0xB8F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST SWAP1 POP PUSH2 0x98B DUP4 CALLER DUP4 PUSH2 0xD8E JUMP JUMPDEST PUSH2 0x995 DUP4 DUP4 PUSH2 0xBF5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8D0 DUP3 DUP3 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0x109D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7CE JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7E5 SWAP2 DUP6 SWAP1 PUSH2 0x857 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 CALLER DUP5 DUP5 PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xAE9 DUP13 PUSH2 0x9BA JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xB7A DUP9 DUP3 PUSH2 0xB71 DUP8 DUP8 DUP8 PUSH2 0x10B4 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x10F3 JUMP JUMPDEST PUSH2 0xB85 DUP9 DUP9 DUP9 PUSH2 0xD8E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87E PUSH2 0x1157 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC19 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xC25 DUP3 PUSH1 0x0 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC58 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF26 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC98 PUSH2 0xC93 DUP3 PUSH2 0xC8D PUSH2 0x7FF JUMP JUMPDEST SWAP1 PUSH2 0x1230 JUMP JUMPDEST PUSH2 0x123E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 PUSH1 0x7 SLOAD DUP4 PUSH2 0x1243 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x995 SWAP1 DUP5 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE21 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xE45 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xE50 DUP4 DUP4 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE83 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF26 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEBF SWAP1 DUP3 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF35 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1222 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x71D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xF5A PUSH1 0x0 DUP4 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH2 0xF6F PUSH2 0xC93 DUP3 PUSH2 0xF69 PUSH2 0x7FF JUMP JUMPDEST SWAP1 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF9F SWAP1 DUP3 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1097 SWAP1 DUP6 SWAP1 PUSH2 0x1296 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 PUSH1 0x7 SLOAD DUP4 PUSH2 0x13AC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10FE DUP6 PUSH2 0x13DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1114 PUSH2 0x110E DUP8 DUP4 DUP8 PUSH2 0x1446 JUMP JUMPDEST DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1123 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1222 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x11C4 PUSH2 0x1558 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP2 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1252 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1222 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1284 DUP5 ISZERO DUP1 PUSH2 0x127D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x127A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x1222 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x128D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12FF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1366 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1097 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13A4 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x13D0 DUP5 ISZERO DUP1 PUSH2 0x13C9 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x13C6 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1222 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 PUSH2 0x1157 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1458 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x154C JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x8DE SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA SWAP9 SDIV CALLCODE 0x24 0xB9 SWAP13 SDIV SWAP15 SWAP12 DUP8 PUSH3 0x2D2526 0x29 BYTE DELEGATECALL 0xA7 0xE4 0xEF 0xE5 PUSH22 0xE33D0F6B5138826B5564736F6C634300070100330000 ","sourceMap":"1070:1852:132:-:0;;;1227:4;1203:28;;1285:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1285:218:132;;;;;;;;;;-1:-1:-1;1285:218:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1285:218:132;;;;;;;;;;-1:-1:-1;1285:218:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1285:218:132;;;;;;;;;;;;;2020:280:70;;;;;;;;;-1:-1:-1;;;2020:280:70;;;;2118:13:71;;1285:218:132;;-1:-1:-1;1285:218:132;;-1:-1:-1;1428:4:132;;1434:6;;1285:218;;1428:4;;;;1285:218;1428:4;;1434:6;;2118:13:71;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:71;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:71;:14;;-1:-1:-1;;2168:14:71;2180:2;2168:14;;;-1:-1:-1;2100:22:70;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:70;2185:108;;1046:24:80::2;1061:8:::0;1046:14:::2;:24::i;:::-;-1:-1:-1::0;;;1462:34:132::1;::::0;-1:-1:-1;;;;;;1462:34:132;::::1;::::0;-1:-1:-1;1070:1852:132;;-1:-1:-1;;1070:1852:132;10570:88:71;10630:9;:21;;-1:-1:-1;;10630:21:71;;;;;;;;;;;;10570:88::o;1070:1852:132:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:1852:132;;;-1:-1:-1;1070:1852:132;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7646":[{"length":32,"start":4476}],"7648":[{"length":32,"start":4509}],"7650":[{"length":32,"start":4443}],"21638":[{"length":32,"start":1782},{"length":32,"start":2301},{"length":32,"start":3027}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101b85760003560e01c806370a08231116100f957806399530b0611610097578063d505accf11610071578063d505accf146105f1578063dd62ed3e1461064f578063ed24911d1461068a578063fc0c546a14610692576101b8565b806399530b0614610577578063a457c2d71461057f578063a9059cbb146105b8576101b8565b80637ecebe00116100d35780637ecebe00146104ec5780638a3e645a1461051f57806390193b7c1461053c57806395d89b411461056f576101b8565b806370a082311461044757806379cc67901461047a5780637c602bc2146104b3576101b8565b8063313ce567116101665780633950935111610140578063395093511461037f57806340c10f19146103b857806342966c68146103f15780636e553f651461040e576101b8565b8063313ce5671461033a57806334fcf437146103585780633644e51514610377576101b8565b806309c23bf31161019757806309c23bf3146102d257806318160ddd146102ef57806323b872dd146102f7576101b8565b8062f714ce146101bd57806306fdde0314610208578063095ea7b314610285575b600080fd5b6101f6600480360360408110156101d357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166106c3565b60408051918252519081900360200190f35b610210610724565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024a578181015183820152602001610232565b50505050905090810190601f1680156102775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102be6004803603604081101561029b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107d8565b604080519115158252519081900360200190f35b6101f6600480360360208110156102e857600080fd5b50356107ee565b6101f66107ff565b6102be6004803603606081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610805565b610342610866565b6040805160ff9092168252519081900360200190f35b6103756004803603602081101561036e57600080fd5b503561086f565b005b6101f6610874565b6102be6004803603604081101561039557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610883565b610375600480360360408110156103ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108c6565b6103756004803603602081101561040757600080fd5b50356108d4565b6101f66004803603604081101561042457600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166108e1565b6101f66004803603602081101561045d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661093c565b6103756004803603604081101561049057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610964565b610375600480360360408110156104c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561099a565b6101f66004803603602081101561050257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109a4565b6101f66004803603602081101561053557600080fd5b50356109af565b6101f66004803603602081101561055257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109ba565b6102106109e2565b6101f6610a61565b6102be6004803603604081101561059557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a67565b6102be600480360360408110156105ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aad565b610375600480360360e081101561060757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610aba565b6101f66004803603604081101561066557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b8f565b6101f6610bc7565b61069a610bd1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60006106cf3384610bf5565b60006106da84610cea565b905061071d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168483610d01565b9392505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107ce5780601f106107a3576101008083540402835291602001916107ce565b820191906000526020600020905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b60006107e5338484610d8e565b50600192915050565b60006107f982610cea565b92915050565b60025490565b6000610812848484610dfd565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461085c918691610857908661019e610f26565b610d8e565b5060019392505050565b60055460ff1690565b600755565b600061087e610bc7565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107e59185906108579086610f3c565b6108d08282610f4e565b5050565b6108de3382610bf5565b50565b600061092573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086611002565b60006109308461109d565b905061071d8382610f4e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061097e826101a16109778633610b8f565b9190610f26565b905061098b833383610d8e565b6109958383610bf5565b505050565b6108d08282610bf5565b60006107f9826109ba565b60006107f98261109d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107ce5780601f106107a3576101008083540402835291602001916107ce565b60075490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107e5918590610857908661019f610f26565b60006107e5338484610dfd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610ae98c6109ba565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610b7a8882610b718787876110b4565b886101f86110f3565b610b85888888610d8e565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061087e611157565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c1973ffffffffffffffffffffffffffffffffffffffff8316151561019b611222565b610c2582600083610995565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c5890826101b2610f26565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c98610c9382610c8d6107ff565b90611230565b61123e565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006107f96007548361124390919063ffffffff16565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610995908490611296565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610e2173ffffffffffffffffffffffffffffffffffffffff84161515610198611222565b610e4573ffffffffffffffffffffffffffffffffffffffff83161515610199611222565b610e50838383610995565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610e8390826101a0610f26565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ebf9082610f3c565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610f358484111583611222565b5050900390565b600082820161071d8482101583611222565b610f5a60008383610995565b610f6f610c9382610f696107ff565b90610f3c565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610f9f9082610f3c565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611097908590611296565b50505050565b60006107f9600754836113ac90919063ffffffff16565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b60006110fe856113df565b905061111461110e878387611446565b83611222565b611123428410156101b8611222565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111c4611558565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816108d0576108d08161155c565b600061071d83836001610f26565b600255565b60006112528215156004611222565b670de0b6b3a7640000830261128484158061127d5750670de0b6b3a764000085838161127a57fe5b04145b6005611222565b82818161128d57fe5b04949350505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112ff57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611361576040519150601f19603f3d011682016040523d82523d6000602084013e611366565b606091505b5091509150600082141561137e573d6000803e3d6000fd5b6110978151600014806113a457508180602001905160208110156113a157600080fd5b50515b6101a2611222565b60008282026113d08415806113c95750838583816113c657fe5b04145b6003611222565b670de0b6b3a76400008161128d565b60006113e9611157565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061145882516041146101b9611222565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114d1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061154c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526108de917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220ba9805f224b99c059e9b87622d2526291af4a7e4efe575e33d0f6b5138826b5564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x99530B06 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x5F1 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x64F JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x68A JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x692 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x99530B06 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5B8 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x8A3E645A EQ PUSH2 0x51F JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x56F JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x7C602BC2 EQ PUSH2 0x4B3 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x40E JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x34FCF437 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x377 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH4 0x9C23BF3 GT PUSH2 0x197 JUMPI DUP1 PUSH4 0x9C23BF3 EQ PUSH2 0x2D2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2F7 JUMPI PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH3 0xF714CE EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x285 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH2 0x724 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x232 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x277 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0x7FF JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x805 JUMP JUMPDEST PUSH2 0x342 PUSH2 0x866 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x86F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F6 PUSH2 0x874 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x883 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8C6 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x93C JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x964 JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x99A JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x9BA JUMP JUMPDEST PUSH2 0x210 PUSH2 0x9E2 JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0xA61 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAAD JUMP JUMPDEST PUSH2 0x375 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0xABA JUMP JUMPDEST PUSH2 0x1F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB8F JUMP JUMPDEST PUSH2 0x1F6 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x69A PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x6CF CALLER DUP5 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DA DUP5 PUSH2 0xCEA JUMP JUMPDEST SWAP1 POP PUSH2 0x71D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP5 DUP4 PUSH2 0xD01 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 CALLER DUP5 DUP5 PUSH2 0xD8E JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0xCEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP5 DUP5 DUP5 PUSH2 0xDFD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x85C SWAP2 DUP7 SWAP2 PUSH2 0x857 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xF26 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87E PUSH2 0xBC7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7E5 SWAP2 DUP6 SWAP1 PUSH2 0x857 SWAP1 DUP7 PUSH2 0xF3C JUMP JUMPDEST PUSH2 0x8D0 DUP3 DUP3 PUSH2 0xF4E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8DE CALLER DUP3 PUSH2 0xBF5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x925 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER ADDRESS DUP7 PUSH2 0x1002 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x930 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP1 POP PUSH2 0x71D DUP4 DUP3 PUSH2 0xF4E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E DUP3 PUSH2 0x1A1 PUSH2 0x977 DUP7 CALLER PUSH2 0xB8F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST SWAP1 POP PUSH2 0x98B DUP4 CALLER DUP4 PUSH2 0xD8E JUMP JUMPDEST PUSH2 0x995 DUP4 DUP4 PUSH2 0xBF5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8D0 DUP3 DUP3 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 DUP3 PUSH2 0x109D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7CE JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7E5 SWAP2 DUP6 SWAP1 PUSH2 0x857 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E5 CALLER DUP5 DUP5 PUSH2 0xDFD JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0xAE9 DUP13 PUSH2 0x9BA JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xB7A DUP9 DUP3 PUSH2 0xB71 DUP8 DUP8 DUP8 PUSH2 0x10B4 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0x10F3 JUMP JUMPDEST PUSH2 0xB85 DUP9 DUP9 DUP9 PUSH2 0xD8E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87E PUSH2 0x1157 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xC19 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xC25 DUP3 PUSH1 0x0 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC58 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xF26 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC98 PUSH2 0xC93 DUP3 PUSH2 0xC8D PUSH2 0x7FF JUMP JUMPDEST SWAP1 PUSH2 0x1230 JUMP JUMPDEST PUSH2 0x123E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 PUSH1 0x7 SLOAD DUP4 PUSH2 0x1243 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x995 SWAP1 DUP5 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xE21 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xE45 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xE50 DUP4 DUP4 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE83 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xF26 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xEBF SWAP1 DUP3 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF35 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x1222 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x71D DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0xF5A PUSH1 0x0 DUP4 DUP4 PUSH2 0x995 JUMP JUMPDEST PUSH2 0xF6F PUSH2 0xC93 DUP3 PUSH2 0xF69 PUSH2 0x7FF JUMP JUMPDEST SWAP1 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xF9F SWAP1 DUP3 PUSH2 0xF3C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x1097 SWAP1 DUP6 SWAP1 PUSH2 0x1296 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F9 PUSH1 0x7 SLOAD DUP4 PUSH2 0x13AC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10FE DUP6 PUSH2 0x13DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1114 PUSH2 0x110E DUP8 DUP4 DUP8 PUSH2 0x1446 JUMP JUMPDEST DUP4 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1123 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0x1222 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0x11C4 PUSH2 0x1558 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x8D0 JUMPI PUSH2 0x8D0 DUP2 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71D DUP4 DUP4 PUSH1 0x1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1252 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0x1222 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0x1284 DUP5 ISZERO DUP1 PUSH2 0x127D JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0x127A JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0x1222 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0x128D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12FF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1361 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1366 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1097 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x13A4 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0x13D0 DUP5 ISZERO DUP1 PUSH2 0x13C9 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0x13C6 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x1222 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 PUSH2 0x1157 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1458 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0x1222 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x154C JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x8DE SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA SWAP9 SDIV CALLCODE 0x24 0xB9 SWAP13 SDIV SWAP15 SWAP12 DUP8 PUSH3 0x2D2526 0x29 BYTE DELEGATECALL 0xA7 0xE4 0xEF 0xE5 PUSH22 0xE33D0F6B5138826B5564736F6C634300070100330000 ","sourceMap":"1070:1852:132:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1944:290;;;;;;;;;;;;;;;;-1:-1:-1;1944:290:132;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2254:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:71;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2422:123:132;;;;;;;;;;;;;;;;-1:-1:-1;2422:123:132;;:::i;3500:106:71:-;;;:::i;5488:386::-;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:71;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2341:75:132;;;;;;;;;;;;;;;;-1:-1:-1;2341:75:132;;:::i;:::-;;2243:113:73;;;:::i;6269:211:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:71;;;;;;;;;:::i;1083:99:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:80;;;;;;;;;:::i;473:87:72:-;;;;;;;;;;;;;;;;-1:-1:-1;473:87:72;;:::i;1622:316:132:-;;;;;;;;;;;;;;;;-1:-1:-1;1622:316:132;;;;;;;;;:::i;4022:117:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:71;;;;:::i;866:283:72:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:72;;;;;;;;;:::i;1497:109:80:-;;;;;;;;;;;;;;;;-1:-1:-1;1497:109:80;;;;;;;;;:::i;2006:113:73:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:73;;;;:::i;2551::132:-;;;;;;;;;;;;;;;;-1:-1:-1;2551:113:132;;:::i;1303:121:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:59;;;;:::i;2448:85:71:-;;;:::i;2240:95:132:-;;;:::i;6967:312:71:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:71;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:71;;;;;;;;;:::i;1437:508:73:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:71:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:71;;;;;;;;;;;:::i;1184:113:59:-;;;:::i;1509:107:132:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1944:290;2031:7;2050:32;2056:10;2068:13;2050:5;:32::i;:::-;2092:18;2113:25;2124:13;2113:10;:25::i;:::-;2092:46;-1:-1:-1;2148:52:132;:29;:16;:29;2178:9;2092:46;2148:29;:52::i;:::-;2217:10;1944:290;-1:-1:-1;;;1944:290:132:o;2254:81:71:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:71;4857:164;;;;:::o;2422:123:132:-;2487:7;2513:25;2524:13;2513:10;:25::i;:::-;2506:32;2422:123;-1:-1:-1;;2422:123:132:o;3500:106:71:-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11091:3:12;5752:35:71;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:71;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2341:75:132:-;2394:5;:15;2341:75::o;2243:113:73:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:71:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:80:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:72:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;1622:316:132:-;1723:7;1742:68;:33;:16;:33;1776:10;1796:4;1803:6;1742:33;:68::i;:::-;1820:21;1844:16;1853:6;1844:8;:16::i;:::-;1820:40;;1870:31;1876:9;1887:13;1870:5;:31::i;4022:117:71:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:72:-;942:26;971:79;1006:6;11299:3:12;971:30:72;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;1497:109:80:-;1578:21;1584:6;1592;1578:5;:21::i;2006:113:73:-;2067:7;2093:19;2106:5;2093:12;:19::i;2551:113:132:-;2611:7;2637:20;2646:10;2637:8;:20::i;1303:121:59:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:71:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;2240:95:132;2323:5;;2240:95;:::o;6967:312:71:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11165:3:12;7143:36:71;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:73:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13190:3:12;1792:21:73;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:71:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:59:-;1244:7;1270:20;:18;:20::i;1509:107:132:-;1592:16;1509:107;:::o;9200:411:71:-;9275:68;9284:21;;;;;10885:3:12;9275:8:71;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12329:3:12;9435:22:71;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;:::-;9510:15;:42::i;:::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;2670:126:132:-;2735:7;2761:28;2783:5;;2761:13;:21;;:28;;;;:::i;1514:214:77:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;10034:213:71:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10687:3:12;7880:8:71;:71::i;:::-;7961:72;7970:23;;;;;10755:3:12;7961:8:71;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11233:3:12;8122:21:71;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:78:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:78;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;8583:297:71:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;8718:42::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;1734:250:77:-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;2802:118:132:-;2862:7;2888:25;2907:5;;2888:10;:18;;:25;;;;:::i;3803:419:59:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:59;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:59:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12656:3:12;2487:8:59;:63::i;:::-;-1:-1:-1;;;2884:19:59;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:59:o;2386:188:70:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:12:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1404:121:78:-;1462:7;1488:30;1492:1;1495;5194::12;1488:3:78;:30::i;3870:94:71:-;3937:12;:20;3870:94::o;2768:282:66:-;2830:7;2849:38;2858:6;;;5340:1:12;2849:8:66;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:12;2935:8:66;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:66:o;2324:914:77:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:77;3143:56;11359:3:12;3134:8:77;:97::i;1833:209:66:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:12;1947:8:66;:57::i;:::-;988:4;2022:7;:13;;3199:183:70;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:59:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12713:3:12;3082:8:59;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:59;;;;;;-1:-1:-1;;3728:30:59;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:59:o;3433:187:70:-;3595:9;;3570:44::o;1459:126:12:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","burnWithoutAllowance(address,uint256)":"7c602bc2","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(uint256,address)":"6e553f65","fromYearn(uint256)":"09c23bf3","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","pricePerShare()":"99530b06","setRate(uint256)":"34fcf437","symbol()":"95d89b41","toYearn(uint256)":"8a3e645a","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address)":"00f714ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"underlyingAsset\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnWithoutAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"fromYearn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pricePerShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mainAmount\",\"type\":\"uint256\"}],\"name\":\"toYearn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"pricePerShare()\":{\"details\":\"returns the price for a single Vault share (ie yvDAI). The pricePerShare is represented in the same decimals as the underlying asset (ie: 6 decimals for USDC)\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"returns the address of the vault's underlying asset (mainToken)\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockYearnTokenVault.sol\":\"MockYearnTokenVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0xc895b6a37efc3ccf190487b2089bee9c946c46011a3f0b2a650dbf11a9287ad9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://405f7c172f2114d590b28282ca97db114d7d8fda09491512c2ffdcbf3590e135\",\"dweb:/ipfs/QmS9ZoHooQdrAa2JD7iQKUT2u3iLHGEn9VVnTLcVpiaLxB\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IYearnTokenVault.sol\":{\"keccak256\":\"0x8a30751d1411b686dc598147ae15677c935e468b46c10998bc713ab26f4cf433\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49d59beba049d9ec36289d0ff86a1eae34bc11b13052c68bc1604b86ff91d6c3\",\"dweb:/ipfs/QmXjX1eJWQGtpqknMaqJxejy8v8HJv6NrCn7ZhoozvQroD\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x57c5b7287eadaa3e8f0cb99ff1469df80025a7f05fd63caa17cdb46e0ef88a75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f79c4f836042c0d20f357274b6a8731cce0d7182a1591f8b1bbfc15b3c6a352\",\"dweb:/ipfs/QmckCVT16h8MhyAeAqyKfRVSGjC7YydZ28yvBk1xC63SgA\"]},\"contracts/test/MockYearnTokenVault.sol\":{\"keccak256\":\"0x986c0ed0c6968900683b625a7a5ae8199a09dddf95dc6b31f4c5bcd5484c50e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9df0397ab5779984dbb96dec85ef172aae7acba0a2f2430d92d6e816fa7d908e\",\"dweb:/ipfs/QmQkWyEubJ3XdaeHRAXdRjobtav4DZJe4VaHD4AyG2Xw2h\"]}},\"version\":1}"}},"contracts/test/TestWETH.sol":{"TestWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destinatary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109eb8061011c6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220fb9cf9133c644c55785c38f9b32f5d1dd1f97620cf5265707fc7f0665ef3791164736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCD JUMP JUMPDEST POP PUSH2 0xF4 SWAP3 SWAP2 POP PUSH2 0xF8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x9EB DUP1 PUSH2 0x11C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP13 0xF9 SGT EXTCODECOPY PUSH5 0x4C55785C38 0xF9 0xB3 0x2F 0x5D SAR 0xD1 0xF9 PUSH23 0x20CF5265707FC7F0665EF3791164736F6C634300070100 CALLER ","sourceMap":"869:36:133:-:0;836:2078;869:36;;836:2078;869:36;;;-1:-1:-1;;;869:36:133;;;;;;-1:-1:-1;;869:36:133;;:::i;:::-;-1:-1:-1;911:29:133;;;;;;;;;;;;;-1:-1:-1;;;911:29:133;;;;;;;;;;;;:::i;:::-;-1:-1:-1;946:26:133;;;-1:-1:-1;;946:26:133;970:2;946:26;;;836:2078;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:2078:133;;;-1:-1:-1;836:2078:133;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220fb9cf9133c644c55785c38f9b32f5d1dd1f97620cf5265707fc7f0665ef3791164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP13 0xF9 SGT EXTCODECOPY PUSH5 0x4C55785C38 0xF9 0xB3 0x2F 0x5D SAR 0xD1 0xF9 PUSH23 0x20CF5265707FC7F0665EF3791164736F6C634300070100 CALLER ","sourceMap":"836:2078:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:9;:7;:9::i;:::-;836:2078;;;;;869:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2043:189;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2043:189:133;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1930:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2377:535;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2377:535:133;;;;;;;;;;;;;;;;;;:::i;1432:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:239:133;;:::i;946:26::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1772:152;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1772:152:133;;;;;;;;;:::i;1089:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1089:53:133;;;;:::i;911:29::-;;;;;;;;;;;;;:::i;2238:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2238:133:133;;;;;;;;;:::i;1287:139::-;;;:::i;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1148:73:133;;;;;;;;;;;:::i;1287:139::-;1350:10;1340:21;;;;:9;:21;;;;;;;;;:34;;1365:9;1340:34;;;;;;1389:30;;;;;;;;;;;;;;;;;1287:139::o;869:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2043:189::-;2137:10;2111:4;2127:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;2174:30;;;;;;;2111:4;;2127:26;;2137:10;;2174:30;;;;;;;;-1:-1:-1;2221:4:133;2043:189;;;;:::o;1930:107::-;2009:21;1930:107;:::o;2377:535::-;2517:14;;;2493:4;2517:14;;;:9;:14;;;;;;:21;-1:-1:-1;2517:21:133;2509:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2578:17;;;2585:10;2578:17;;;;:62;;-1:-1:-1;2599:14:133;;;;;;;:9;:14;;;;;;;;2614:10;2599:26;;;;;;;;2637:2;2599:41;;2578:62;2574:208;;;2664:14;;;;;;;:9;:14;;;;;;;;2679:10;2664:26;;;;;;;;:33;-1:-1:-1;2664:33:133;2656:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:14;;;;;;;:9;:14;;;;;;;;2753:10;2738:26;;;;;;;:33;;;;;;;2574:208;2792:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;2823:14;;;;;;;;;;:21;;;;;;2860:23;;;;;;;2823:14;;2860:23;;;;;;;;;;;-1:-1:-1;2901:4:133;2377:535;;;;;:::o;1432:239::-;1507:10;1497:21;;;;:9;:21;;;;;;:28;-1:-1:-1;1497:28:133;1489:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:10;1560:21;;;;:9;:21;;;;;;:28;;;;;;;1598:24;;;;;;1585:3;;1598:24;;1560:21;1598:24;1585:3;1570:10;1598:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1637:27:133;;;;;;;;1648:10;;1637:27;;;;;;;;;;1432:239;:::o;946:26::-;;;;;;:::o;1772:152::-;1842:22;;;;;;;:9;:22;;;;;;;;;:32;;;;;;1889:28;;;;;;;;;;;;;;;;;1772:152;;:::o;1089:53::-;;;;;;;;;;;;;:::o;911:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2238:133;2307:4;2330:34;2343:10;2355:3;2360;2330:12;:34::i;:::-;2323:41;2238:133;-1:-1:-1;;;2238:133:133:o;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinatary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"stateVariables\":{\"allowance\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"balanceOf\":{\"details\":\"Returns the amount of tokens owned by `account`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestWETH.sol\":\"TestWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/test/TestWETH.sol\":{\"keccak256\":\"0xd1fb738e861ca79bf0d37db866ca57c20f545ea233f424b38166f922c567a5f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49543f3a71b64d14874a9f591b8fb339eef34134d53baa397032ba8c81d72ef7\",\"dweb:/ipfs/QmRz9G3xF7sp8NyFm4yHcUbrdwUXvoZF8UTdkVy8YEpNsX\"]}},\"version\":1}"}}}}} \ No newline at end of file